From 8049bd80dc2014a932d0f08e34c6c5597755175f Mon Sep 17 00:00:00 2001 From: Mark Eibes Date: Fri, 25 Nov 2022 13:38:19 +0100 Subject: [PATCH] rip (#4) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Port Storybook * Remove extrablatt * Improve cluster * Magic Johnson * Remove mentions of Plumage And delete some unnecessary stuff * Hä * I have changed the code files * Reexports for typeahead * Bring Select back * Fix dark mode of select * Move out react-aria * Export select properly * Make select work I guess --- .storybook/logo.svg | 1 - .storybook/main.js | 7 - .storybook/main.ts | 10 + .storybook/manager.js | 7 - .storybook/preview-head.html | 6 +- .storybook/purescript-indexer-ts.ts | 27 + .storybook/purescript-indexer/.gitignore | 11 + .../output-es/Ansi.Codes/index.js | 1862 + .../output-es/Ansi.Output/index.js | 18 + .../output-es/Control.Alt/index.js | 6 + .../output-es/Control.Alternative/index.js | 14 + .../output-es/Control.Applicative/index.js | 22 + .../output-es/Control.Apply/foreign.js | 15 + .../output-es/Control.Apply/index.js | 36 + .../output-es/Control.Biapplicative/index.js | 6 + .../output-es/Control.Biapply/index.js | 24 + .../output-es/Control.Bind/foreign.js | 9 + .../output-es/Control.Bind/index.js | 22 + .../output-es/Control.Category/index.js | 5 + .../Control.Comonad.Cofree.Class/index.js | 30 + .../output-es/Control.Comonad.Cofree/index.js | 223 + .../Control.Comonad.Env.Class/index.js | 18 + .../Control.Comonad.Env.Trans/index.js | 112 + .../output-es/Control.Comonad.Env/index.js | 9 + .../Control.Comonad.Store.Class/index.js | 56 + .../Control.Comonad.Store.Trans/index.js | 22 + .../output-es/Control.Comonad.Store/index.js | 6 + .../Control.Comonad.Traced.Class/index.js | 20 + .../Control.Comonad.Traced.Trans/index.js | 30 + .../output-es/Control.Comonad.Traced/index.js | 5 + .../Control.Comonad.Trans.Class/index.js | 4 + .../output-es/Control.Comonad/index.js | 3 + .../output-es/Control.Extend/foreign.js | 7 + .../output-es/Control.Extend/index.js | 13 + .../output-es/Control.Lazy/index.js | 11 + .../Control.Monad.Cont.Class/index.js | 4 + .../Control.Monad.Cont.Trans/index.js | 113 + .../output-es/Control.Monad.Cont/index.js | 7 + .../Control.Monad.Error.Class/index.js | 90 + .../Control.Monad.Except.Trans/index.js | 252 + .../output-es/Control.Monad.Except/index.js | 7 + .../Control.Monad.Free.Class/index.js | 46 + .../output-es/Control.Monad.Free/index.js | 319 + .../Control.Monad.Gen.Class/index.js | 7 + .../Control.Monad.Gen.Common/index.js | 50 + .../output-es/Control.Monad.Gen/index.js | 130 + .../Control.Monad.Identity.Trans/index.js | 78 + .../Control.Monad.List.Trans/index.js | 509 + .../Control.Monad.Maybe.Trans/index.js | 214 + .../Control.Monad.RWS.Trans/index.js | 240 + .../output-es/Control.Monad.RWS/index.js | 13 + .../Control.Monad.Reader.Class/index.js | 12 + .../Control.Monad.Reader.Trans/index.js | 293 + .../output-es/Control.Monad.Reader/index.js | 7 + .../Control.Monad.Rec.Class/index.js | 270 + .../output-es/Control.Monad.ST.Class/index.js | 8 + .../Control.Monad.ST.Global/index.js | 4 + .../Control.Monad.ST.Internal/foreign.js | 90 + .../Control.Monad.ST.Internal/index.js | 69 + .../output-es/Control.Monad.ST.Ref/index.js | 2 + .../Control.Monad.ST.Uncurried/foreign.js | 229 + .../Control.Monad.ST.Uncurried/index.js | 40 + .../output-es/Control.Monad.ST/index.js | 2 + .../Control.Monad.State.Class/index.js | 14 + .../Control.Monad.State.Trans/index.js | 194 + .../output-es/Control.Monad.State/index.js | 9 + .../Control.Monad.Trampoline/index.js | 11 + .../Control.Monad.Trans.Class/index.js | 4 + .../Control.Monad.Writer.Class/index.js | 19 + .../Control.Monad.Writer.Trans/index.js | 231 + .../output-es/Control.Monad.Writer/index.js | 7 + .../output-es/Control.Monad/index.js | 35 + .../output-es/Control.MonadPlus/index.js | 5 + .../output-es/Control.Parallel.Class/index.js | 168 + .../output-es/Control.Parallel/index.js | 59 + .../output-es/Control.Plus/index.js | 5 + .../output-es/Control.Promise/foreign.js | 24 + .../output-es/Control.Promise/index.js | 46 + .../output-es/Control.Semigroupoid/index.js | 5 + .../Data.Array.NonEmpty.Internal/foreign.js | 85 + .../Data.Array.NonEmpty.Internal/index.js | 87 + .../output-es/Data.Array.NonEmpty/index.js | 303 + .../output-es/Data.Array.Partial/index.js | 8 + .../output-es/Data.Array.ST.Iterator/index.js | 74 + .../Data.Array.ST.Partial/foreign.js | 17 + .../output-es/Data.Array.ST.Partial/index.js | 9 + .../output-es/Data.Array.ST/foreign.js | 160 + .../output-es/Data.Array.ST/index.js | 40 + .../output-es/Data.Array/foreign.js | 386 + .../output-es/Data.Array/index.js | 519 + .../output-es/Data.ArrayBuffer.Types/index.js | 2 + .../output-es/Data.Bifoldable/index.js | 158 + .../output-es/Data.Bifunctor.Join/index.js | 20 + .../output-es/Data.Bifunctor/index.js | 17 + .../output-es/Data.Bitraversable/index.js | 210 + .../output-es/Data.Boolean/index.js | 3 + .../output-es/Data.BooleanAlgebra/index.js | 39 + .../output-es/Data.Bounded.Generic/index.js | 34 + .../output-es/Data.Bounded/foreign.js | 8 + .../output-es/Data.Bounded/index.js | 72 + .../output-es/Data.CatList/index.js | 322 + .../output-es/Data.CatQueue/index.js | 352 + .../output-es/Data.Char.Gen/index.js | 22 + .../output-es/Data.Char/index.js | 6 + .../output-es/Data.CommutativeRing/index.js | 35 + .../output-es/Data.Comparison/index.js | 21 + .../output-es/Data.Const/index.js | 52 + .../output-es/Data.Coyoneda/index.js | 210 + .../Data.Date.Component.Gen/index.js | 11 + .../output-es/Data.Date.Component/index.js | 409 + .../output-es/Data.Date.Gen/index.js | 28 + .../output-es/Data.Date/foreign.js | 22 + .../output-es/Data.Date/index.js | 358 + .../output-es/Data.DateTime.Gen/index.js | 9 + .../Data.DateTime.Instant/foreign.js | 18 + .../output-es/Data.DateTime.Instant/index.js | 76 + .../output-es/Data.DateTime/foreign.js | 33 + .../output-es/Data.DateTime/index.js | 94 + .../output-es/Data.Decidable/index.js | 75 + .../output-es/Data.Decide/index.js | 66 + .../output-es/Data.Distributive/index.js | 60 + .../output-es/Data.Divide/index.js | 47 + .../output-es/Data.Divisible/index.js | 12 + .../output-es/Data.DivisionRing/index.js | 13 + .../output-es/Data.Either.Inject/index.js | 25 + .../output-es/Data.Either.Nested/index.js | 622 + .../output-es/Data.Either/index.js | 259 + .../output-es/Data.Enum.Gen/index.js | 20 + .../output-es/Data.Enum.Generic/index.js | 194 + .../output-es/Data.Enum/foreign.js | 7 + .../output-es/Data.Enum/index.js | 407 + .../output-es/Data.Eq.Generic/index.js | 24 + .../output-es/Data.Eq/foreign.js | 23 + .../output-es/Data.Eq/index.js | 34 + .../output-es/Data.Equivalence/index.js | 9 + .../output-es/Data.EuclideanRing/foreign.js | 26 + .../output-es/Data.EuclideanRing/index.js | 25 + .../output-es/Data.Exists/index.js | 5 + .../output-es/Data.Field/index.js | 3 + .../output-es/Data.Foldable/foreign.js | 25 + .../output-es/Data.Foldable/index.js | 389 + .../output-es/Data.FoldableWithIndex/index.js | 422 + .../Data.Function.Uncurried/foreign.js | 218 + .../Data.Function.Uncurried/index.js | 6 + .../output-es/Data.Function/index.js | 25 + .../output-es/Data.Functor.App/index.js | 78 + .../output-es/Data.Functor.Clown/index.js | 23 + .../output-es/Data.Functor.Compose/index.js | 121 + .../Data.Functor.Contravariant/index.js | 8 + .../Data.Functor.Coproduct.Inject/index.js | 25 + .../Data.Functor.Coproduct.Nested/index.js | 605 + .../output-es/Data.Functor.Coproduct/index.js | 181 + .../output-es/Data.Functor.Costar/index.js | 83 + .../output-es/Data.Functor.Flip/index.js | 30 + .../output-es/Data.Functor.Invariant/index.js | 15 + .../output-es/Data.Functor.Joker/index.js | 79 + .../Data.Functor.Product.Nested/index.js | 51 + .../output-es/Data.Functor.Product/index.js | 116 + .../output-es/Data.Functor.Product2/index.js | 40 + .../output-es/Data.Functor.Variant/index.js | 218 + .../output-es/Data.Functor/foreign.js | 10 + .../output-es/Data.Functor/index.js | 16 + .../Data.FunctorWithIndex/foreign.js | 10 + .../output-es/Data.FunctorWithIndex/index.js | 92 + .../output-es/Data.Generic.Rep/index.js | 31 + .../Data.HeytingAlgebra.Generic/index.js | 70 + .../output-es/Data.HeytingAlgebra/foreign.js | 15 + .../output-es/Data.HeytingAlgebra/index.js | 109 + .../output-es/Data.Identity/index.js | 55 + .../output-es/Data.Int.Bits/foreign.js | 48 + .../output-es/Data.Int.Bits/index.js | 5 + .../output-es/Data.Int/foreign.js | 65 + .../output-es/Data.Int/index.js | 137 + .../Data.Interval.Duration.Iso/index.js | 203 + .../output-es/Data.Interval.Duration/index.js | 130 + .../output-es/Data.Interval/index.js | 313 + .../output-es/Data.JSDate/foreign.js | 83 + .../output-es/Data.JSDate/index.js | 123 + .../output-es/Data.Lazy/foreign.js | 14 + .../output-es/Data.Lazy/index.js | 153 + .../output-es/Data.List.Internal/index.js | 162 + .../Data.List.Lazy.NonEmpty/index.js | 69 + .../output-es/Data.List.Lazy.Types/index.js | 510 + .../output-es/Data.List.Lazy/index.js | 641 + .../output-es/Data.List.NonEmpty/index.js | 268 + .../output-es/Data.List.Partial/index.js | 37 + .../output-es/Data.List.Types/index.js | 947 + .../output-es/Data.List.ZipList/index.js | 47 + .../output-es/Data.List/index.js | 1042 + .../output-es/Data.Map.Gen/index.js | 16 + .../output-es/Data.Map.Internal/index.js | 1729 + .../output-es/Data.Map/index.js | 48 + .../output-es/Data.Maybe.First/index.js | 68 + .../output-es/Data.Maybe.Last/index.js | 69 + .../output-es/Data.Maybe/index.js | 232 + .../output-es/Data.Monoid.Additive/index.js | 34 + .../output-es/Data.Monoid.Alternate/index.js | 47 + .../output-es/Data.Monoid.Conj/index.js | 22 + .../output-es/Data.Monoid.Disj/index.js | 22 + .../output-es/Data.Monoid.Dual/index.js | 20 + .../output-es/Data.Monoid.Endo/index.js | 13 + .../output-es/Data.Monoid.Generic/index.js | 11 + .../Data.Monoid.Multiplicative/index.js | 34 + .../output-es/Data.Monoid/index.js | 61 + .../Data.NaturalTransformation/index.js | 2 + .../output-es/Data.Newtype/index.js | 52 + .../output-es/Data.NonEmpty/index.js | 213 + .../output-es/Data.Nullable/foreign.js | 12 + .../output-es/Data.Nullable/index.js | 49 + .../Data.Number.Approximate/index.js | 14 + .../output-es/Data.Number.Format/foreign.js | 12 + .../output-es/Data.Number.Format/index.js | 53 + .../output-es/Data.Number/foreign.js | 80 + .../output-es/Data.Number/index.js | 16 + .../output-es/Data.Op/index.js | 13 + .../output-es/Data.Ord.Down/index.js | 24 + .../output-es/Data.Ord.Generic/index.js | 35 + .../output-es/Data.Ord.Max/index.js | 34 + .../output-es/Data.Ord.Min/index.js | 34 + .../output-es/Data.Ord/foreign.js | 43 + .../output-es/Data.Ord/index.js | 159 + .../output-es/Data.Ordering/index.js | 36 + .../output-es/Data.Posix.Signal/index.js | 409 + .../output-es/Data.Posix/index.js | 20 + .../output-es/Data.Predicate/index.js | 15 + .../output-es/Data.Profunctor.Choice/index.js | 34 + .../output-es/Data.Profunctor.Closed/index.js | 6 + .../Data.Profunctor.Cochoice/index.js | 4 + .../Data.Profunctor.Costrong/index.js | 4 + .../output-es/Data.Profunctor.Join/index.js | 14 + .../output-es/Data.Profunctor.Split/index.js | 12 + .../output-es/Data.Profunctor.Star/index.js | 232 + .../output-es/Data.Profunctor.Strong/index.js | 22 + .../output-es/Data.Profunctor/index.js | 11 + .../output-es/Data.Reflectable/foreign.js | 5 + .../output-es/Data.Reflectable/index.js | 11 + .../output-es/Data.Ring.Generic/index.js | 11 + .../output-es/Data.Ring/foreign.js | 12 + .../output-es/Data.Ring/index.js | 42 + .../output-es/Data.Semigroup.First/index.js | 15 + .../Data.Semigroup.Foldable/index.js | 131 + .../output-es/Data.Semigroup.Generic/index.js | 12 + .../output-es/Data.Semigroup.Last/index.js | 15 + .../Data.Semigroup.Traversable/index.js | 61 + .../output-es/Data.Semigroup/foreign.js | 13 + .../output-es/Data.Semigroup/index.js | 27 + .../output-es/Data.Semiring.Generic/index.js | 49 + .../output-es/Data.Semiring/foreign.js | 25 + .../output-es/Data.Semiring/index.js | 64 + .../output-es/Data.Set.NonEmpty/index.js | 142 + .../output-es/Data.Set/index.js | 228 + .../output-es/Data.Show.Generic/foreign.js | 5 + .../output-es/Data.Show.Generic/index.js | 44 + .../output-es/Data.Show/foreign.js | 59 + .../output-es/Data.Show/index.js | 57 + .../Data.String.CaseInsensitive/index.js | 13 + .../Data.String.CodePoints/foreign.js | 107 + .../output-es/Data.String.CodePoints/index.js | 209 + .../Data.String.CodeUnits/foreign.js | 116 + .../output-es/Data.String.CodeUnits/index.js | 55 + .../output-es/Data.String.Common/foreign.js | 52 + .../output-es/Data.String.Common/index.js | 7 + .../output-es/Data.String.Gen/index.js | 27 + .../index.js | 13 + .../Data.String.NonEmpty.CodePoints/index.js | 98 + .../Data.String.NonEmpty.CodeUnits/index.js | 107 + .../Data.String.NonEmpty.Internal/index.js | 119 + .../output-es/Data.String.NonEmpty/index.js | 2 + .../output-es/Data.String.Pattern/index.js | 14 + .../Data.String.Regex.Flags/index.js | 59 + .../Data.String.Regex.Unsafe/index.js | 10 + .../output-es/Data.String.Regex/foreign.js | 103 + .../output-es/Data.String.Regex/index.js | 79 + .../output-es/Data.String.Unsafe/foreign.js | 11 + .../output-es/Data.String.Unsafe/index.js | 5 + .../output-es/Data.String/index.js | 2 + .../output-es/Data.Symbol/foreign.js | 6 + .../output-es/Data.Symbol/index.js | 7 + .../Data.Time.Component.Gen/index.js | 8 + .../output-es/Data.Time.Component/index.js | 139 + .../output-es/Data.Time.Duration.Gen/index.js | 8 + .../output-es/Data.Time.Duration/index.js | 96 + .../output-es/Data.Time.Gen/index.js | 9 + .../output-es/Data.Time/index.js | 101 + .../Data.Traversable.Accum.Internal/index.js | 36 + .../output-es/Data.Traversable.Accum/index.js | 2 + .../output-es/Data.Traversable/foreign.js | 52 + .../output-es/Data.Traversable/index.js | 372 + .../Data.TraversableWithIndex/index.js | 305 + .../output-es/Data.Tuple.Nested/index.js | 295 + .../output-es/Data.Tuple/index.js | 151 + .../output-es/Data.Unfoldable/foreign.js | 21 + .../output-es/Data.Unfoldable/index.js | 43 + .../output-es/Data.Unfoldable1/foreign.js | 21 + .../output-es/Data.Unfoldable1/index.js | 45 + .../output-es/Data.Unit/foreign.js | 1 + .../output-es/Data.Unit/index.js | 4 + .../output-es/Data.Variant.Internal/index.js | 401 + .../output-es/Data.Variant/index.js | 219 + .../output-es/Data.Void/index.js | 14 + .../output-es/Data.Yoneda/index.js | 86 + .../output-es/Debug/foreign.js | 57 + .../output-es/Debug/index.js | 16 + .../output-es/Dodo.Ansi/index.js | 120 + .../output-es/Dodo.Box/index.js | 692 + .../output-es/Dodo.Common/index.js | 87 + .../output-es/Dodo.Internal.Buffer/index.js | 18 + .../output-es/Dodo.Internal/index.js | 69 + .../output-es/Dodo/index.js | 634 + .../output-es/Effect.AVar/foreign.js | 307 + .../output-es/Effect.AVar/index.js | 23 + .../output-es/Effect.Aff.AVar/index.js | 35 + .../output-es/Effect.Aff.Class/index.js | 106 + .../output-es/Effect.Aff.Compat/index.js | 15 + .../output-es/Effect.Aff/foreign.js | 1154 + .../output-es/Effect.Aff/index.js | 264 + .../output-es/Effect.Class.Console/index.js | 17 + .../output-es/Effect.Class/index.js | 5 + .../output-es/Effect.Console/foreign.js | 51 + .../output-es/Effect.Console/index.js | 9 + .../Effect.Exception.Unsafe/index.js | 6 + .../output-es/Effect.Exception/foreign.js | 45 + .../output-es/Effect.Exception/index.js | 15 + .../output-es/Effect.Now/foreign.js | 8 + .../output-es/Effect.Now/index.js | 17 + .../output-es/Effect.Ref/foreign.js | 37 + .../output-es/Effect.Ref/index.js | 37 + .../output-es/Effect.Uncurried/foreign.js | 229 + .../output-es/Effect.Uncurried/index.js | 377 + .../output-es/Effect.Unsafe/foreign.js | 3 + .../output-es/Effect.Unsafe/index.js | 4 + .../output-es/Effect/foreign.js | 51 + .../output-es/Effect/index.js | 44 + .../output-es/Foreign.Index/foreign.js | 11 + .../output-es/Foreign.Index/index.js | 81 + .../output-es/Foreign.Keys/foreign.js | 9 + .../output-es/Foreign.Keys/index.js | 20 + .../output-es/Foreign.Object.Gen/index.js | 14 + .../Foreign.Object.ST.Unsafe/foreign.js | 5 + .../Foreign.Object.ST.Unsafe/index.js | 4 + .../output-es/Foreign.Object.ST/foreign.js | 37 + .../output-es/Foreign.Object.ST/index.js | 10 + .../Foreign.Object.Unsafe/foreign.js | 5 + .../output-es/Foreign.Object.Unsafe/index.js | 4 + .../output-es/Foreign.Object/foreign.js | 116 + .../output-es/Foreign.Object/index.js | 233 + .../output-es/Foreign/foreign.js | 19 + .../output-es/Foreign/index.js | 208 + .../output-es/Js.BigInt.BigInt/foreign.js | 59 + .../output-es/Js.BigInt.BigInt/index.js | 47 + .../output-es/Main/index.js | 5 + .../output-es/Node.Buffer.Class/index.js | 49 + .../Node.Buffer.Immutable/foreign.js | 99 + .../output-es/Node.Buffer.Immutable/index.js | 91 + .../output-es/Node.Buffer.Internal/foreign.js | 68 + .../output-es/Node.Buffer.Internal/index.js | 135 + .../output-es/Node.Buffer.ST/index.js | 32 + .../output-es/Node.Buffer.Types/index.js | 36 + .../output-es/Node.Buffer/index.js | 32 + .../output-es/Node.ChildProcess/foreign.js | 96 + .../output-es/Node.ChildProcess/index.js | 318 + .../output-es/Node.Encoding/foreign.js | 6 + .../output-es/Node.Encoding/index.js | 48 + .../output-es/Node.FS.Aff/index.js | 111 + .../output-es/Node.FS.Async/foreign.js | 25 + .../output-es/Node.FS.Async/index.js | 235 + .../output-es/Node.FS.Perms/index.js | 147 + .../output-es/Node.FS.Stats/foreign.js | 5 + .../output-es/Node.FS.Stats/index.js | 31 + .../output-es/Node.FS.Stream/foreign.js | 4 + .../output-es/Node.FS.Stream/index.js | 119 + .../output-es/Node.FS.Sync/foreign.js | 27 + .../output-es/Node.FS.Sync/index.js | 231 + .../output-es/Node.FS/index.js | 128 + .../output-es/Node.Path/foreign.js | 30 + .../output-es/Node.Path/index.js | 4 + .../output-es/Node.Platform/index.js | 108 + .../output-es/Node.Process/foreign.js | 70 + .../output-es/Node.Process/index.js | 46 + .../output-es/Node.Stream/foreign.js | 143 + .../output-es/Node.Stream/index.js | 116 + .../output-es/Partial.Unsafe/foreign.js | 5 + .../output-es/Partial.Unsafe/index.js | 9 + .../output-es/Partial/foreign.js | 5 + .../output-es/Partial/index.js | 7 + .../Performance.Minibench/foreign.js | 14 + .../output-es/Performance.Minibench/index.js | 57 + .../output-es/Prelude/index.js | 14 + .../output-es/PureScript.CST.Errors/index.js | 121 + .../output-es/PureScript.CST.Layout/index.js | 971 + .../output-es/PureScript.CST.Lexer/index.js | 523 + .../PureScript.CST.ModuleGraph/index.js | 174 + .../PureScript.CST.Parser.Monad/index.js | 179 + .../output-es/PureScript.CST.Parser/index.js | 3863 ++ .../output-es/PureScript.CST.Print/index.js | 133 + .../PureScript.CST.Range.TokenList/index.js | 234 + .../output-es/PureScript.CST.Range/index.js | 2178 + .../PureScript.CST.TokenStream/index.js | 48 + .../PureScript.CST.Traversal/index.js | 889 + .../output-es/PureScript.CST.Types/index.js | 681 + .../output-es/PureScript.CST/index.js | 87 + .../output-es/PureScriptCSFIndexer/index.js | 140 + .../output-es/Record.Builder/foreign.js | 44 + .../output-es/Record.Builder/index.js | 21 + .../output-es/Record.Unsafe.Union/foreign.js | 14 + .../output-es/Record.Unsafe.Union/index.js | 5 + .../output-es/Record.Unsafe/foreign.js | 38 + .../output-es/Record.Unsafe/index.js | 10 + .../output-es/Record/index.js | 24 + .../output-es/Safe.Coerce/index.js | 4 + .../output-es/SourceMap.Types/index.js | 2 + .../output-es/SourceMap/foreign.js | 4 + .../output-es/SourceMap/index.js | 27 + .../Storybook.CSFTools.Types/index.js | 2 + .../output-es/Storybook.CSFTools/foreign.js | 22 + .../output-es/Storybook.CSFTools/index.js | 4 + .../output-es/Test.Main/index.js | 10 + .../output-es/Tidy.Doc/index.js | 578 + .../output-es/Tidy.Hang/index.js | 844 + .../Tidy.Operators.Defaults/index.js | 357 + .../output-es/Tidy.Operators/index.js | 147 + .../output-es/Tidy.Precedence/index.js | 358 + .../output-es/Tidy.Token/index.js | 121 + .../output-es/Tidy.Util/index.js | 9 + .../output-es/Tidy/index.js | 2659 ++ .../output-es/Type.Data.Boolean/index.js | 22 + .../output-es/Type.Data.Ordering/index.js | 56 + .../output-es/Type.Data.Symbol/index.js | 8 + .../output-es/Type.Equality/index.js | 6 + .../output-es/Type.Function/index.js | 2 + .../output-es/Type.Prelude/index.js | 2 + .../output-es/Type.Proxy/index.js | 52 + .../output-es/Type.Row.Homogeneous/index.js | 5 + .../output-es/Type.Row/index.js | 2 + .../output-es/Type.RowList/index.js | 11 + .../output-es/Unsafe.Coerce/foreign.js | 5 + .../output-es/Unsafe.Coerce/index.js | 4 + .../output-es/Yoga.JSON.Error/index.js | 63 + .../Yoga.JSON.Generics.EnumSumRep/index.js | 72 + .../Yoga.JSON.Generics.TaggedSumRep/index.js | 150 + .../index.js | 73 + .../index.js | 75 + .../output-es/Yoga.JSON.Generics/index.js | 2 + .../output-es/Yoga.JSON.Variant/index.js | 127 + .../output-es/Yoga.JSON/foreign.js | 18 + .../output-es/Yoga.JSON/index.js | 595 + .../purescript-indexer/output-es/package.json | 1 + .../purescript-indexer/output-es/runtime.js | 21 + .../purescript-indexer/package-lock.json | 623 + .storybook/purescript-indexer/package.json | 26 + .storybook/purescript-indexer/packages.dhall | 124 + .../purescript-indexer/production.dhall | 1 + .storybook/purescript-indexer/spago.dhall | 46 + .storybook/purescript-indexer/src/Main.purs | 11 + .../src/PureScriptCSFIndexer.purs | 124 + .../purescript-indexer/src/SourceMap.js | 4 + .../purescript-indexer/src/SourceMap.purs | 29 + .../src/SourceMap/Types.purs | 14 + .../src/Storybook/CSFTools.js | 16 + .../src/Storybook/CSFTools.purs | 12 + .../src/Storybook/CSFTools/Types.purs | 8 + .storybook/purescript-indexer/test/Main.purs | 11 + .storybook/purescript-loader.ts | 51 + .storybook/rowtype-yoga-theme.js | 28 - .tidyrc.json | 11 + .vscode/settings.json | 2 +- assets/mat.webm | Bin 0 -> 396543 bytes assets/unsplash-mat-2400.jpg | Bin 0 -> 1038846 bytes assets/unsplash-mat-320.jpg | Bin 0 -> 132409 bytes assets/unsplash-mat-4160.jpg | Bin 0 -> 3257020 bytes assets/unsplash-mat-640.jpg | Bin 0 -> 119514 bytes package-lock.json | 38502 ---------------- package.json | 25 +- packages.dhall | 434 +- spago.dhall | 8 +- src/MediaQuery.purs | 2 +- src/Plumage/Atom/Button.purs | 148 - src/Plumage/Atom/InfiniteLoadingBar.purs | 93 - src/Plumage/Atom/Input/Input/Style.purs | 125 - src/Plumage/Atom/Input/Select.purs | 43 - src/Plumage/Atom/Input/Select/Style.purs | 31 - src/Plumage/Atom/Input/View.purs | 39 - src/Plumage/Atom/Modal/View.purs | 91 - src/Plumage/Hooks/UseRenderInPortal.purs | 28 - src/Plumage/Molecule/Typeahead/Style.purs | 31 - src/Plumage/Prelude/Style.purs | 12 - src/React/Aria/Button.js | 50 - src/React/Aria/Button.purs | 98 - src/React/Aria/Combobox.js | 3 - src/React/Aria/Combobox.purs | 127 - src/React/Aria/Focus.js | 5 - src/React/Aria/Focus.purs | 27 - src/React/Aria/Interactions.js | 4 - src/React/Aria/Interactions.purs | 56 - src/React/Aria/JSSet.js | 4 - src/React/Aria/JSSet.purs | 17 - src/React/Aria/Listbox.js | 6 - src/React/Aria/Listbox.purs | 112 - src/React/Aria/Overlays.js | 37 - src/React/Aria/Overlays.purs | 159 - src/React/Aria/Types.purs | 81 - src/React/Aria/Utils.js | 7 - src/React/Aria/Utils.purs | 19 - src/Web/DOM/ResizeObserver.js | 41 +- src/Web/DOM/ResizeObserver.purs | 19 +- src/Yoga.purs | 76 +- src/Yoga/Block.purs | 115 +- src/Yoga/Block/Atom/Button.purs | 2 + src/Yoga/Block/Atom/Button/Style.purs | 83 +- src/Yoga/Block/Atom/Button/Types.purs | 39 +- src/Yoga/Block/Atom/Button/View.purs | 14 +- src/Yoga/Block/Atom/Checkbox.purs | 5 + src/Yoga/Block/Atom/Checkbox/Story.purs | 31 - src/Yoga/Block/Atom/Checkbox/Style.purs | 102 +- src/Yoga/Block/Atom/Checkbox/View.purs | 76 +- src/Yoga/Block/Atom/Icon/Story.purs | 50 - src/Yoga/Block/Atom/Icon/View.purs | 5 +- src/Yoga/Block/Atom/Image/View.purs | 38 +- src/Yoga/Block/Atom/Input/Style.purs | 80 +- src/Yoga/Block/Atom/Input/View.purs | 17 +- src/Yoga/Block/Atom/Input/View/HTMLInput.purs | 4 +- src/Yoga/Block/Atom/Input/View/Label.purs | 6 +- src/Yoga/Block/Atom/Range/View.purs | 6 +- src/Yoga/Block/Atom/Segmented/View.purs | 4 +- src/Yoga/Block/Atom/Select.purs | 6 + src/Yoga/Block/Atom/Select/Style.purs | 53 + src/Yoga/Block/Atom/Select/View.purs | 40 + src/Yoga/Block/Atom/Toggle/View.purs | 26 +- src/Yoga/Block/Container/Style.purs | 164 +- src/Yoga/Block/Hook/Key.purs | 3 + src/Yoga/Block/Hook/UseElementResize.purs | 24 +- .../Hooks => Yoga/Block/Hook}/UsePopOver.purs | 10 +- .../Hooks => Yoga/Block/Hook}/UseResize2.purs | 26 +- .../Block/Hook}/UseTypeAhead.purs | 2 +- src/Yoga/Block/Internal.purs | 72 +- src/Yoga/Block/Layout/Centre/Style.purs | 17 +- src/Yoga/Block/Layout/Centre/View.purs | 12 +- src/Yoga/Block/Layout/Cluster/Style.purs | 24 +- src/Yoga/Block/Layout/Cluster/View.purs | 6 +- src/Yoga/Block/Layout/Cover/Style.purs | 29 +- src/Yoga/Block/Layout/Sidebar/Style.purs | 54 +- src/Yoga/Block/Layout/Sidebar/View.purs | 32 +- src/Yoga/Block/Layout/Stack/Style.purs | 9 +- src/Yoga/Block/Layout/Stack/View.purs | 3 +- src/Yoga/Block/Layout/Story.purs | 13 +- src/Yoga/Block/Layout/Switcher.purs | 2 +- src/Yoga/Block/Layout/Switcher/Style.purs | 45 +- src/Yoga/Block/Layout/Switcher/View.purs | 18 +- src/Yoga/Block/Layout/Types.purs | 22 + .../Block/Molecule}/DatePicker.purs | 8 +- src/Yoga/Block/Molecule/DatePicker/Style.purs | 131 + .../Block/Molecule}/DatePicker/View.purs | 211 +- src/Yoga/Block/Molecule/Modal/Story.purs | 79 - src/Yoga/Block/Molecule/Modal/Style.purs | 31 +- src/Yoga/Block/Molecule/Modal/View.purs | 156 +- .../Block/Molecule}/Tooltip/View.purs | 19 +- src/Yoga/Block/Molecule/Typeahead.purs | 5 + src/Yoga/Block/Molecule/Typeahead/Style.purs | 48 + .../Block/Molecule/Typeahead/View.purs} | 195 +- src/Yoga/Block/Quark/ClickAway/Style.purs | 12 + src/Yoga/Block/Quark/ClickAway/View.purs | 34 + src/Yoga/Block/Quark/Drip.purs | 1 - src/Yoga/Block/Quark/Layer.purs | 5 + src/Yoga/Block/Quark/Layer/Style.purs | 12 + src/Yoga/Block/Quark/Layer/View.purs | 24 + .../Block/Quark}/PopOver/Types.purs | 4 +- .../Block/Quark}/PopOver/View.purs | 151 +- src/Yoga/Prelude/Style.purs | 9 +- src/Yoga/Prelude/View.purs | 5 +- .../Util => Yoga/Prelude/View}/HTML.purs | 2 +- stories.dhall | 16 + stories/Story/Yoga/Block/Atom/Button.purs | 64 + stories/Story/Yoga/Block/Atom/Checkbox.purs | 83 + stories/Story/Yoga/Block/Atom/Icon.purs | 53 + stories/Story/Yoga/Block/Atom/Image.purs | 56 + stories/Story/Yoga/Block/Atom/Input.purs | 89 + stories/Story/Yoga/Block/Atom/Range.purs | 53 + stories/Story/Yoga/Block/Atom/Segmented.purs | 51 + stories/Story/Yoga/Block/Atom/Select.purs | 44 + stories/Story/Yoga/Block/Atom/Toggle.purs | 69 + stories/Story/Yoga/Block/Layout.purs | 126 + stories/Story/Yoga/Block/Molecule/Modal.purs | 71 + .../Story/Yoga/Block/Molecule/Typeahead.purs | 90 + yarn-error.log | 91 + yarn.lock | 8850 ++-- 585 files changed, 62811 insertions(+), 46098 deletions(-) delete mode 100644 .storybook/logo.svg delete mode 100644 .storybook/main.js create mode 100644 .storybook/main.ts delete mode 100644 .storybook/manager.js create mode 100644 .storybook/purescript-indexer-ts.ts create mode 100644 .storybook/purescript-indexer/.gitignore create mode 100644 .storybook/purescript-indexer/output-es/Ansi.Codes/index.js create mode 100644 .storybook/purescript-indexer/output-es/Ansi.Output/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Alt/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Alternative/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Applicative/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Apply/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Apply/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Biapplicative/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Biapply/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Bind/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Bind/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Category/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Comonad.Cofree.Class/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Comonad.Cofree/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Comonad.Env.Class/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Comonad.Env.Trans/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Comonad.Env/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Comonad.Store.Class/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Comonad.Store.Trans/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Comonad.Store/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Comonad.Traced.Class/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Comonad.Traced.Trans/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Comonad.Traced/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Comonad.Trans.Class/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Comonad/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Extend/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Extend/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Lazy/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Monad.Cont.Class/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Monad.Cont.Trans/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Monad.Cont/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Monad.Error.Class/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Monad.Except.Trans/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Monad.Except/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Monad.Free.Class/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Monad.Free/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Monad.Gen.Class/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Monad.Gen.Common/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Monad.Gen/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Monad.Identity.Trans/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Monad.List.Trans/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Monad.Maybe.Trans/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Monad.RWS.Trans/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Monad.RWS/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Monad.Reader.Class/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Monad.Reader.Trans/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Monad.Reader/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Monad.Rec.Class/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Monad.ST.Class/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Monad.ST.Global/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Monad.ST.Internal/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Monad.ST.Internal/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Monad.ST.Ref/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Monad.ST.Uncurried/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Monad.ST.Uncurried/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Monad.ST/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Monad.State.Class/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Monad.State.Trans/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Monad.State/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Monad.Trampoline/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Monad.Trans.Class/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Monad.Writer.Class/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Monad.Writer.Trans/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Monad.Writer/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Monad/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.MonadPlus/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Parallel.Class/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Parallel/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Plus/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Promise/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Promise/index.js create mode 100644 .storybook/purescript-indexer/output-es/Control.Semigroupoid/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Array.NonEmpty.Internal/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Array.NonEmpty.Internal/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Array.NonEmpty/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Array.Partial/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Array.ST.Iterator/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Array.ST.Partial/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Array.ST.Partial/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Array.ST/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Array.ST/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Array/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Array/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.ArrayBuffer.Types/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Bifoldable/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Bifunctor.Join/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Bifunctor/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Bitraversable/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Boolean/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.BooleanAlgebra/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Bounded.Generic/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Bounded/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Bounded/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.CatList/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.CatQueue/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Char.Gen/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Char/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.CommutativeRing/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Comparison/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Const/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Coyoneda/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Date.Component.Gen/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Date.Component/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Date.Gen/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Date/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Date/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.DateTime.Gen/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.DateTime.Instant/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Data.DateTime.Instant/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.DateTime/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Data.DateTime/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Decidable/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Decide/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Distributive/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Divide/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Divisible/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.DivisionRing/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Either.Inject/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Either.Nested/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Either/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Enum.Gen/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Enum.Generic/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Enum/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Enum/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Eq.Generic/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Eq/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Eq/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Equivalence/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.EuclideanRing/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Data.EuclideanRing/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Exists/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Field/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Foldable/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Foldable/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.FoldableWithIndex/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Function.Uncurried/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Function.Uncurried/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Function/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Functor.App/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Functor.Clown/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Functor.Compose/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Functor.Contravariant/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Functor.Coproduct.Inject/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Functor.Coproduct.Nested/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Functor.Coproduct/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Functor.Costar/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Functor.Flip/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Functor.Invariant/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Functor.Joker/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Functor.Product.Nested/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Functor.Product/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Functor.Product2/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Functor.Variant/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Functor/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Functor/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.FunctorWithIndex/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Data.FunctorWithIndex/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Generic.Rep/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.HeytingAlgebra.Generic/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.HeytingAlgebra/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Data.HeytingAlgebra/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Identity/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Int.Bits/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Int.Bits/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Int/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Int/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Interval.Duration.Iso/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Interval.Duration/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Interval/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.JSDate/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Data.JSDate/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Lazy/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Lazy/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.List.Internal/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.List.Lazy.NonEmpty/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.List.Lazy.Types/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.List.Lazy/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.List.NonEmpty/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.List.Partial/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.List.Types/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.List.ZipList/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.List/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Map.Gen/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Map.Internal/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Map/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Maybe.First/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Maybe.Last/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Maybe/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Monoid.Additive/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Monoid.Alternate/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Monoid.Conj/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Monoid.Disj/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Monoid.Dual/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Monoid.Endo/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Monoid.Generic/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Monoid.Multiplicative/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Monoid/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.NaturalTransformation/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Newtype/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.NonEmpty/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Nullable/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Nullable/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Number.Approximate/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Number.Format/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Number.Format/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Number/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Number/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Op/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Ord.Down/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Ord.Generic/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Ord.Max/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Ord.Min/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Ord/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Ord/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Ordering/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Posix.Signal/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Posix/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Predicate/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Profunctor.Choice/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Profunctor.Closed/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Profunctor.Cochoice/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Profunctor.Costrong/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Profunctor.Join/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Profunctor.Split/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Profunctor.Star/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Profunctor.Strong/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Profunctor/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Reflectable/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Reflectable/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Ring.Generic/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Ring/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Ring/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Semigroup.First/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Semigroup.Foldable/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Semigroup.Generic/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Semigroup.Last/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Semigroup.Traversable/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Semigroup/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Semigroup/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Semiring.Generic/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Semiring/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Semiring/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Set.NonEmpty/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Set/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Show.Generic/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Show.Generic/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Show/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Show/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.String.CaseInsensitive/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.String.CodePoints/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Data.String.CodePoints/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.String.CodeUnits/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Data.String.CodeUnits/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.String.Common/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Data.String.Common/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.String.Gen/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.String.NonEmpty.CaseInsensitive/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.String.NonEmpty.CodePoints/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.String.NonEmpty.CodeUnits/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.String.NonEmpty.Internal/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.String.NonEmpty/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.String.Pattern/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.String.Regex.Flags/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.String.Regex.Unsafe/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.String.Regex/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Data.String.Regex/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.String.Unsafe/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Data.String.Unsafe/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.String/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Symbol/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Symbol/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Time.Component.Gen/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Time.Component/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Time.Duration.Gen/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Time.Duration/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Time.Gen/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Time/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Traversable.Accum.Internal/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Traversable.Accum/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Traversable/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Traversable/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.TraversableWithIndex/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Tuple.Nested/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Tuple/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Unfoldable/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Unfoldable/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Unfoldable1/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Unfoldable1/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Unit/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Unit/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Variant.Internal/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Variant/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Void/index.js create mode 100644 .storybook/purescript-indexer/output-es/Data.Yoneda/index.js create mode 100644 .storybook/purescript-indexer/output-es/Debug/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Debug/index.js create mode 100644 .storybook/purescript-indexer/output-es/Dodo.Ansi/index.js create mode 100644 .storybook/purescript-indexer/output-es/Dodo.Box/index.js create mode 100644 .storybook/purescript-indexer/output-es/Dodo.Common/index.js create mode 100644 .storybook/purescript-indexer/output-es/Dodo.Internal.Buffer/index.js create mode 100644 .storybook/purescript-indexer/output-es/Dodo.Internal/index.js create mode 100644 .storybook/purescript-indexer/output-es/Dodo/index.js create mode 100644 .storybook/purescript-indexer/output-es/Effect.AVar/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Effect.AVar/index.js create mode 100644 .storybook/purescript-indexer/output-es/Effect.Aff.AVar/index.js create mode 100644 .storybook/purescript-indexer/output-es/Effect.Aff.Class/index.js create mode 100644 .storybook/purescript-indexer/output-es/Effect.Aff.Compat/index.js create mode 100644 .storybook/purescript-indexer/output-es/Effect.Aff/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Effect.Aff/index.js create mode 100644 .storybook/purescript-indexer/output-es/Effect.Class.Console/index.js create mode 100644 .storybook/purescript-indexer/output-es/Effect.Class/index.js create mode 100644 .storybook/purescript-indexer/output-es/Effect.Console/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Effect.Console/index.js create mode 100644 .storybook/purescript-indexer/output-es/Effect.Exception.Unsafe/index.js create mode 100644 .storybook/purescript-indexer/output-es/Effect.Exception/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Effect.Exception/index.js create mode 100644 .storybook/purescript-indexer/output-es/Effect.Now/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Effect.Now/index.js create mode 100644 .storybook/purescript-indexer/output-es/Effect.Ref/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Effect.Ref/index.js create mode 100644 .storybook/purescript-indexer/output-es/Effect.Uncurried/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Effect.Uncurried/index.js create mode 100644 .storybook/purescript-indexer/output-es/Effect.Unsafe/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Effect.Unsafe/index.js create mode 100644 .storybook/purescript-indexer/output-es/Effect/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Effect/index.js create mode 100644 .storybook/purescript-indexer/output-es/Foreign.Index/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Foreign.Index/index.js create mode 100644 .storybook/purescript-indexer/output-es/Foreign.Keys/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Foreign.Keys/index.js create mode 100644 .storybook/purescript-indexer/output-es/Foreign.Object.Gen/index.js create mode 100644 .storybook/purescript-indexer/output-es/Foreign.Object.ST.Unsafe/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Foreign.Object.ST.Unsafe/index.js create mode 100644 .storybook/purescript-indexer/output-es/Foreign.Object.ST/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Foreign.Object.ST/index.js create mode 100644 .storybook/purescript-indexer/output-es/Foreign.Object.Unsafe/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Foreign.Object.Unsafe/index.js create mode 100644 .storybook/purescript-indexer/output-es/Foreign.Object/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Foreign.Object/index.js create mode 100644 .storybook/purescript-indexer/output-es/Foreign/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Foreign/index.js create mode 100644 .storybook/purescript-indexer/output-es/Js.BigInt.BigInt/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Js.BigInt.BigInt/index.js create mode 100644 .storybook/purescript-indexer/output-es/Main/index.js create mode 100644 .storybook/purescript-indexer/output-es/Node.Buffer.Class/index.js create mode 100644 .storybook/purescript-indexer/output-es/Node.Buffer.Immutable/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Node.Buffer.Immutable/index.js create mode 100644 .storybook/purescript-indexer/output-es/Node.Buffer.Internal/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Node.Buffer.Internal/index.js create mode 100644 .storybook/purescript-indexer/output-es/Node.Buffer.ST/index.js create mode 100644 .storybook/purescript-indexer/output-es/Node.Buffer.Types/index.js create mode 100644 .storybook/purescript-indexer/output-es/Node.Buffer/index.js create mode 100644 .storybook/purescript-indexer/output-es/Node.ChildProcess/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Node.ChildProcess/index.js create mode 100644 .storybook/purescript-indexer/output-es/Node.Encoding/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Node.Encoding/index.js create mode 100644 .storybook/purescript-indexer/output-es/Node.FS.Aff/index.js create mode 100644 .storybook/purescript-indexer/output-es/Node.FS.Async/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Node.FS.Async/index.js create mode 100644 .storybook/purescript-indexer/output-es/Node.FS.Perms/index.js create mode 100644 .storybook/purescript-indexer/output-es/Node.FS.Stats/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Node.FS.Stats/index.js create mode 100644 .storybook/purescript-indexer/output-es/Node.FS.Stream/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Node.FS.Stream/index.js create mode 100644 .storybook/purescript-indexer/output-es/Node.FS.Sync/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Node.FS.Sync/index.js create mode 100644 .storybook/purescript-indexer/output-es/Node.FS/index.js create mode 100644 .storybook/purescript-indexer/output-es/Node.Path/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Node.Path/index.js create mode 100644 .storybook/purescript-indexer/output-es/Node.Platform/index.js create mode 100644 .storybook/purescript-indexer/output-es/Node.Process/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Node.Process/index.js create mode 100644 .storybook/purescript-indexer/output-es/Node.Stream/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Node.Stream/index.js create mode 100644 .storybook/purescript-indexer/output-es/Partial.Unsafe/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Partial.Unsafe/index.js create mode 100644 .storybook/purescript-indexer/output-es/Partial/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Partial/index.js create mode 100644 .storybook/purescript-indexer/output-es/Performance.Minibench/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Performance.Minibench/index.js create mode 100644 .storybook/purescript-indexer/output-es/Prelude/index.js create mode 100644 .storybook/purescript-indexer/output-es/PureScript.CST.Errors/index.js create mode 100644 .storybook/purescript-indexer/output-es/PureScript.CST.Layout/index.js create mode 100644 .storybook/purescript-indexer/output-es/PureScript.CST.Lexer/index.js create mode 100644 .storybook/purescript-indexer/output-es/PureScript.CST.ModuleGraph/index.js create mode 100644 .storybook/purescript-indexer/output-es/PureScript.CST.Parser.Monad/index.js create mode 100644 .storybook/purescript-indexer/output-es/PureScript.CST.Parser/index.js create mode 100644 .storybook/purescript-indexer/output-es/PureScript.CST.Print/index.js create mode 100644 .storybook/purescript-indexer/output-es/PureScript.CST.Range.TokenList/index.js create mode 100644 .storybook/purescript-indexer/output-es/PureScript.CST.Range/index.js create mode 100644 .storybook/purescript-indexer/output-es/PureScript.CST.TokenStream/index.js create mode 100644 .storybook/purescript-indexer/output-es/PureScript.CST.Traversal/index.js create mode 100644 .storybook/purescript-indexer/output-es/PureScript.CST.Types/index.js create mode 100644 .storybook/purescript-indexer/output-es/PureScript.CST/index.js create mode 100644 .storybook/purescript-indexer/output-es/PureScriptCSFIndexer/index.js create mode 100644 .storybook/purescript-indexer/output-es/Record.Builder/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Record.Builder/index.js create mode 100644 .storybook/purescript-indexer/output-es/Record.Unsafe.Union/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Record.Unsafe.Union/index.js create mode 100644 .storybook/purescript-indexer/output-es/Record.Unsafe/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Record.Unsafe/index.js create mode 100644 .storybook/purescript-indexer/output-es/Record/index.js create mode 100644 .storybook/purescript-indexer/output-es/Safe.Coerce/index.js create mode 100644 .storybook/purescript-indexer/output-es/SourceMap.Types/index.js create mode 100644 .storybook/purescript-indexer/output-es/SourceMap/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/SourceMap/index.js create mode 100644 .storybook/purescript-indexer/output-es/Storybook.CSFTools.Types/index.js create mode 100644 .storybook/purescript-indexer/output-es/Storybook.CSFTools/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Storybook.CSFTools/index.js create mode 100644 .storybook/purescript-indexer/output-es/Test.Main/index.js create mode 100644 .storybook/purescript-indexer/output-es/Tidy.Doc/index.js create mode 100644 .storybook/purescript-indexer/output-es/Tidy.Hang/index.js create mode 100644 .storybook/purescript-indexer/output-es/Tidy.Operators.Defaults/index.js create mode 100644 .storybook/purescript-indexer/output-es/Tidy.Operators/index.js create mode 100644 .storybook/purescript-indexer/output-es/Tidy.Precedence/index.js create mode 100644 .storybook/purescript-indexer/output-es/Tidy.Token/index.js create mode 100644 .storybook/purescript-indexer/output-es/Tidy.Util/index.js create mode 100644 .storybook/purescript-indexer/output-es/Tidy/index.js create mode 100644 .storybook/purescript-indexer/output-es/Type.Data.Boolean/index.js create mode 100644 .storybook/purescript-indexer/output-es/Type.Data.Ordering/index.js create mode 100644 .storybook/purescript-indexer/output-es/Type.Data.Symbol/index.js create mode 100644 .storybook/purescript-indexer/output-es/Type.Equality/index.js create mode 100644 .storybook/purescript-indexer/output-es/Type.Function/index.js create mode 100644 .storybook/purescript-indexer/output-es/Type.Prelude/index.js create mode 100644 .storybook/purescript-indexer/output-es/Type.Proxy/index.js create mode 100644 .storybook/purescript-indexer/output-es/Type.Row.Homogeneous/index.js create mode 100644 .storybook/purescript-indexer/output-es/Type.Row/index.js create mode 100644 .storybook/purescript-indexer/output-es/Type.RowList/index.js create mode 100644 .storybook/purescript-indexer/output-es/Unsafe.Coerce/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Unsafe.Coerce/index.js create mode 100644 .storybook/purescript-indexer/output-es/Yoga.JSON.Error/index.js create mode 100644 .storybook/purescript-indexer/output-es/Yoga.JSON.Generics.EnumSumRep/index.js create mode 100644 .storybook/purescript-indexer/output-es/Yoga.JSON.Generics.TaggedSumRep/index.js create mode 100644 .storybook/purescript-indexer/output-es/Yoga.JSON.Generics.UntaggedProductRep/index.js create mode 100644 .storybook/purescript-indexer/output-es/Yoga.JSON.Generics.UntaggedSumRep/index.js create mode 100644 .storybook/purescript-indexer/output-es/Yoga.JSON.Generics/index.js create mode 100644 .storybook/purescript-indexer/output-es/Yoga.JSON.Variant/index.js create mode 100644 .storybook/purescript-indexer/output-es/Yoga.JSON/foreign.js create mode 100644 .storybook/purescript-indexer/output-es/Yoga.JSON/index.js create mode 100644 .storybook/purescript-indexer/output-es/package.json create mode 100644 .storybook/purescript-indexer/output-es/runtime.js create mode 100644 .storybook/purescript-indexer/package-lock.json create mode 100644 .storybook/purescript-indexer/package.json create mode 100644 .storybook/purescript-indexer/packages.dhall create mode 100644 .storybook/purescript-indexer/production.dhall create mode 100644 .storybook/purescript-indexer/spago.dhall create mode 100644 .storybook/purescript-indexer/src/Main.purs create mode 100644 .storybook/purescript-indexer/src/PureScriptCSFIndexer.purs create mode 100644 .storybook/purescript-indexer/src/SourceMap.js create mode 100644 .storybook/purescript-indexer/src/SourceMap.purs create mode 100644 .storybook/purescript-indexer/src/SourceMap/Types.purs create mode 100644 .storybook/purescript-indexer/src/Storybook/CSFTools.js create mode 100644 .storybook/purescript-indexer/src/Storybook/CSFTools.purs create mode 100644 .storybook/purescript-indexer/src/Storybook/CSFTools/Types.purs create mode 100644 .storybook/purescript-indexer/test/Main.purs create mode 100644 .storybook/purescript-loader.ts delete mode 100644 .storybook/rowtype-yoga-theme.js create mode 100644 .tidyrc.json create mode 100644 assets/mat.webm create mode 100644 assets/unsplash-mat-2400.jpg create mode 100644 assets/unsplash-mat-320.jpg create mode 100644 assets/unsplash-mat-4160.jpg create mode 100644 assets/unsplash-mat-640.jpg delete mode 100644 package-lock.json delete mode 100644 src/Plumage/Atom/Button.purs delete mode 100644 src/Plumage/Atom/InfiniteLoadingBar.purs delete mode 100644 src/Plumage/Atom/Input/Input/Style.purs delete mode 100644 src/Plumage/Atom/Input/Select.purs delete mode 100644 src/Plumage/Atom/Input/Select/Style.purs delete mode 100644 src/Plumage/Atom/Input/View.purs delete mode 100644 src/Plumage/Atom/Modal/View.purs delete mode 100644 src/Plumage/Hooks/UseRenderInPortal.purs delete mode 100644 src/Plumage/Molecule/Typeahead/Style.purs delete mode 100644 src/Plumage/Prelude/Style.purs delete mode 100644 src/React/Aria/Button.js delete mode 100644 src/React/Aria/Button.purs delete mode 100644 src/React/Aria/Combobox.js delete mode 100644 src/React/Aria/Combobox.purs delete mode 100644 src/React/Aria/Focus.js delete mode 100644 src/React/Aria/Focus.purs delete mode 100644 src/React/Aria/Interactions.js delete mode 100644 src/React/Aria/Interactions.purs delete mode 100644 src/React/Aria/JSSet.js delete mode 100644 src/React/Aria/JSSet.purs delete mode 100644 src/React/Aria/Listbox.js delete mode 100644 src/React/Aria/Listbox.purs delete mode 100644 src/React/Aria/Overlays.js delete mode 100644 src/React/Aria/Overlays.purs delete mode 100644 src/React/Aria/Types.purs delete mode 100644 src/React/Aria/Utils.js delete mode 100644 src/React/Aria/Utils.purs create mode 100644 src/Yoga/Block/Atom/Checkbox.purs delete mode 100644 src/Yoga/Block/Atom/Checkbox/Story.purs delete mode 100644 src/Yoga/Block/Atom/Icon/Story.purs create mode 100644 src/Yoga/Block/Atom/Select.purs create mode 100644 src/Yoga/Block/Atom/Select/Style.purs create mode 100644 src/Yoga/Block/Atom/Select/View.purs rename src/{Plumage/Hooks => Yoga/Block/Hook}/UsePopOver.purs (81%) rename src/{Plumage/Hooks => Yoga/Block/Hook}/UseResize2.purs (93%) rename src/{Plumage/Hooks => Yoga/Block/Hook}/UseTypeAhead.purs (94%) create mode 100644 src/Yoga/Block/Layout/Types.purs rename src/{Plumage/Atom => Yoga/Block/Molecule}/DatePicker.purs (92%) create mode 100644 src/Yoga/Block/Molecule/DatePicker/Style.purs rename src/{Plumage/Atom => Yoga/Block/Molecule}/DatePicker/View.purs (71%) delete mode 100644 src/Yoga/Block/Molecule/Modal/Story.purs rename src/{Plumage/Atom => Yoga/Block/Molecule}/Tooltip/View.purs (62%) create mode 100644 src/Yoga/Block/Molecule/Typeahead.purs create mode 100644 src/Yoga/Block/Molecule/Typeahead/Style.purs rename src/{Plumage/Molecule/Typeahead.purs => Yoga/Block/Molecule/Typeahead/View.purs} (77%) create mode 100644 src/Yoga/Block/Quark/ClickAway/Style.purs create mode 100644 src/Yoga/Block/Quark/ClickAway/View.purs delete mode 100644 src/Yoga/Block/Quark/Drip.purs create mode 100644 src/Yoga/Block/Quark/Layer.purs create mode 100644 src/Yoga/Block/Quark/Layer/Style.purs create mode 100644 src/Yoga/Block/Quark/Layer/View.purs rename src/{Plumage/Atom => Yoga/Block/Quark}/PopOver/Types.purs (96%) rename src/{Plumage/Atom => Yoga/Block/Quark}/PopOver/View.purs (76%) rename src/{Plumage/Util => Yoga/Prelude/View}/HTML.purs (98%) create mode 100644 stories.dhall create mode 100644 stories/Story/Yoga/Block/Atom/Button.purs create mode 100644 stories/Story/Yoga/Block/Atom/Checkbox.purs create mode 100644 stories/Story/Yoga/Block/Atom/Icon.purs create mode 100644 stories/Story/Yoga/Block/Atom/Image.purs create mode 100644 stories/Story/Yoga/Block/Atom/Input.purs create mode 100644 stories/Story/Yoga/Block/Atom/Range.purs create mode 100644 stories/Story/Yoga/Block/Atom/Segmented.purs create mode 100644 stories/Story/Yoga/Block/Atom/Select.purs create mode 100644 stories/Story/Yoga/Block/Atom/Toggle.purs create mode 100644 stories/Story/Yoga/Block/Layout.purs create mode 100644 stories/Story/Yoga/Block/Molecule/Modal.purs create mode 100644 stories/Story/Yoga/Block/Molecule/Typeahead.purs create mode 100644 yarn-error.log diff --git a/.storybook/logo.svg b/.storybook/logo.svg deleted file mode 100644 index a680dcc..0000000 --- a/.storybook/logo.svg +++ /dev/null @@ -1 +0,0 @@ -logo \ No newline at end of file diff --git a/.storybook/main.js b/.storybook/main.js deleted file mode 100644 index d35008c..0000000 --- a/.storybook/main.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - core: { - builder: "webpack5", - }, - stories: ["../output/**/*.Story/index.js"], - addons: [], -} diff --git a/.storybook/main.ts b/.storybook/main.ts new file mode 100644 index 0000000..0d8f43f --- /dev/null +++ b/.storybook/main.ts @@ -0,0 +1,10 @@ +import { indexer } from './purescript-indexer' + +export default { + staticDirs: ['../assets'], + addons: ["@storybook/addon-essentials", "@storybook/addon-interactions"], + stories: ["../output/Story.*/index.js"], + framework: "@storybook/react-webpack5", + storyIndexers: [{ test: /..\/output\/.*/, indexer }], + disableTelemetry: true, +} diff --git a/.storybook/manager.js b/.storybook/manager.js deleted file mode 100644 index 2d345fc..0000000 --- a/.storybook/manager.js +++ /dev/null @@ -1,7 +0,0 @@ -import { addons } from '@storybook/addons'; -import rowtypeYogaTheme from './rowtype-yoga-theme'; - -addons.setConfig({ - theme: rowtypeYogaTheme, - isToolshown: false, -}); diff --git a/.storybook/preview-head.html b/.storybook/preview-head.html index 06f422f..c1922e0 100644 --- a/.storybook/preview-head.html +++ b/.storybook/preview-head.html @@ -1,2 +1,6 @@ - \ No newline at end of file + diff --git a/.storybook/purescript-indexer-ts.ts b/.storybook/purescript-indexer-ts.ts new file mode 100644 index 0000000..6164793 --- /dev/null +++ b/.storybook/purescript-indexer-ts.ts @@ -0,0 +1,27 @@ +import { promises } from "fs" +import { loadCsf, CsfFile, CsfOptions } from '@storybook/csf-tools'; + +export const adjustSourceForStorybook = (source: string): string => { + // regex for var $$default = unsafeCoerce({ ... }) + // we need to remove the unsafeCoerce part so that the parser can read + // the info about the story + const defaultVariableRecordRegex = /^var \$\$default =[^\{]+\{((?:.*\n)+?)(^\}\);)/gm; + // $ has a special meaning so to produce two dollar signs we need $$$$ + const replacement = "var $$$$default = { $1 };"; + return source.replace(defaultVariableRecordRegex, replacement); +} + +export const justLoad = async (fileName: string, opts: CsfOptions): Promise => { + const fileContent: string = await promises.readFile(fileName, 'utf-8'); + const fixedFileContent: string = adjustSourceForStorybook(fileContent); + return fixedFileContent; +} + +export const indexer = async (fileName: string, opts: CsfOptions): Promise => { + console.log("File name: ", fileName); + const fileContent: string = await promises.readFile(fileName, 'utf-8'); + const fixedFileContent: string = adjustSourceForStorybook(fileContent); + const parseResult: CsfFile = loadCsf(fixedFileContent, { ...opts, fileName }).parse(); + parseResult._stories + return parseResult +} diff --git a/.storybook/purescript-indexer/.gitignore b/.storybook/purescript-indexer/.gitignore new file mode 100644 index 0000000..b2dd847 --- /dev/null +++ b/.storybook/purescript-indexer/.gitignore @@ -0,0 +1,11 @@ +/bower_components/ +/node_modules/ +/.pulp-cache/ +/output/ +/generated-docs/ +/.psc-package/ +/.psc* +/.purs* +/.psa* +/.spago +/dist/ diff --git a/.storybook/purescript-indexer/output-es/Ansi.Codes/index.js b/.storybook/purescript-indexer/output-es/Ansi.Codes/index.js new file mode 100644 index 0000000..5e59c18 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Ansi.Codes/index.js @@ -0,0 +1,1862 @@ +// | This module defines a data type representing ANSI escape codes, as well as +// | functions for serialising them as Strings. +import * as $runtime from "../runtime.js"; +import * as Data$dGeneric$dRep from "../Data.Generic.Rep/index.js"; +import * as Data$dList$dTypes from "../Data.List.Types/index.js"; +import * as Data$dOrd from "../Data.Ord/index.js"; +import * as Data$dOrdering from "../Data.Ordering/index.js"; +import * as Data$dShow from "../Data.Show/index.js"; +import * as Data$dShow$dGeneric from "../Data.Show.Generic/index.js"; +const $Color = tag => ({tag}); +const $EraseParam = tag => ({tag}); +const $EscapeCode = (tag, _1, _2) => ({tag, _1, _2}); +const $GraphicsParam = (tag, _1) => ({tag, _1}); +const $RenderingMode = tag => ({tag}); +const genericShowArgsArgument = {genericShowArgs: v => [Data$dShow.showIntImpl(v)]}; +const Bold = /* #__PURE__ */ $RenderingMode("Bold"); +const Dim = /* #__PURE__ */ $RenderingMode("Dim"); +const Italic = /* #__PURE__ */ $RenderingMode("Italic"); +const Underline = /* #__PURE__ */ $RenderingMode("Underline"); +const Inverse = /* #__PURE__ */ $RenderingMode("Inverse"); +const Strikethrough = /* #__PURE__ */ $RenderingMode("Strikethrough"); +const ToEnd = /* #__PURE__ */ $EraseParam("ToEnd"); +const FromBeginning = /* #__PURE__ */ $EraseParam("FromBeginning"); +const Entire = /* #__PURE__ */ $EraseParam("Entire"); +const Black = /* #__PURE__ */ $Color("Black"); +const Red = /* #__PURE__ */ $Color("Red"); +const Green = /* #__PURE__ */ $Color("Green"); +const Yellow = /* #__PURE__ */ $Color("Yellow"); +const Blue = /* #__PURE__ */ $Color("Blue"); +const Magenta = /* #__PURE__ */ $Color("Magenta"); +const Cyan = /* #__PURE__ */ $Color("Cyan"); +const White = /* #__PURE__ */ $Color("White"); +const BrightBlack = /* #__PURE__ */ $Color("BrightBlack"); +const BrightRed = /* #__PURE__ */ $Color("BrightRed"); +const BrightGreen = /* #__PURE__ */ $Color("BrightGreen"); +const BrightYellow = /* #__PURE__ */ $Color("BrightYellow"); +const BrightBlue = /* #__PURE__ */ $Color("BrightBlue"); +const BrightMagenta = /* #__PURE__ */ $Color("BrightMagenta"); +const BrightCyan = /* #__PURE__ */ $Color("BrightCyan"); +const BrightWhite = /* #__PURE__ */ $Color("BrightWhite"); +const Reset = /* #__PURE__ */ $GraphicsParam("Reset"); +const PMode = value0 => $GraphicsParam("PMode", value0); +const PForeground = value0 => $GraphicsParam("PForeground", value0); +const PBackground = value0 => $GraphicsParam("PBackground", value0); +const Up = value0 => $EscapeCode("Up", value0); +const Down = value0 => $EscapeCode("Down", value0); +const Forward = value0 => $EscapeCode("Forward", value0); +const Back = value0 => $EscapeCode("Back", value0); +const NextLine = value0 => $EscapeCode("NextLine", value0); +const PreviousLine = value0 => $EscapeCode("PreviousLine", value0); +const HorizontalAbsolute = value0 => $EscapeCode("HorizontalAbsolute", value0); +const Position = value0 => value1 => $EscapeCode("Position", value0, value1); +const EraseData = value0 => $EscapeCode("EraseData", value0); +const EraseLine = value0 => $EscapeCode("EraseLine", value0); +const ScrollUp = value0 => $EscapeCode("ScrollUp", value0); +const ScrollDown = value0 => $EscapeCode("ScrollDown", value0); +const Graphics = value0 => $EscapeCode("Graphics", value0); +const SavePosition = /* #__PURE__ */ $EscapeCode("SavePosition"); +const RestorePosition = /* #__PURE__ */ $EscapeCode("RestorePosition"); +const QueryPosition = /* #__PURE__ */ $EscapeCode("QueryPosition"); +const HideCursor = /* #__PURE__ */ $EscapeCode("HideCursor"); +const ShowCursor = /* #__PURE__ */ $EscapeCode("ShowCursor"); +const prefix = "\u001b["; +const genericRenderingMode = { + to: x => { + if (x.tag === "Inl") { return Bold; } + if (x.tag === "Inr") { + if (x._1.tag === "Inl") { return Dim; } + if (x._1.tag === "Inr") { + if (x._1._1.tag === "Inl") { return Italic; } + if (x._1._1.tag === "Inr") { + if (x._1._1._1.tag === "Inl") { return Underline; } + if (x._1._1._1.tag === "Inr") { + if (x._1._1._1._1.tag === "Inl") { return Inverse; } + if (x._1._1._1._1.tag === "Inr") { return Strikethrough; } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + }, + from: x => { + if (x.tag === "Bold") { return Data$dGeneric$dRep.$Sum("Inl", Data$dGeneric$dRep.NoArguments); } + if (x.tag === "Dim") { return Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inl", Data$dGeneric$dRep.NoArguments)); } + if (x.tag === "Italic") { return Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inl", Data$dGeneric$dRep.NoArguments))); } + if (x.tag === "Underline") { + return Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inl", Data$dGeneric$dRep.NoArguments)))); + } + if (x.tag === "Inverse") { + return Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inl", Data$dGeneric$dRep.NoArguments)))) + ); + } + if (x.tag === "Strikethrough") { + return Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.NoArguments)))) + ); + } + $runtime.fail(); + } +}; +const showRenderingMode = { + show: /* #__PURE__ */ (() => { + const $0 = Data$dShow$dGeneric.genericShowConstructor(Data$dShow$dGeneric.genericShowArgsNoArguments)({reflectSymbol: () => "Bold"}); + const $1 = Data$dShow$dGeneric.genericShowConstructor(Data$dShow$dGeneric.genericShowArgsNoArguments)({reflectSymbol: () => "Dim"}); + const $2 = Data$dShow$dGeneric.genericShowConstructor(Data$dShow$dGeneric.genericShowArgsNoArguments)({reflectSymbol: () => "Italic"}); + const $3 = Data$dShow$dGeneric.genericShowConstructor(Data$dShow$dGeneric.genericShowArgsNoArguments)({reflectSymbol: () => "Underline"}); + const $4 = Data$dShow$dGeneric.genericShowConstructor(Data$dShow$dGeneric.genericShowArgsNoArguments)({reflectSymbol: () => "Inverse"}); + const $5 = Data$dShow$dGeneric.genericShowConstructor(Data$dShow$dGeneric.genericShowArgsNoArguments)({reflectSymbol: () => "Strikethrough"}); + return x => { + const $7 = genericRenderingMode.from(x); + if ($7.tag === "Inl") { return $0["genericShow'"]($7._1); } + if ($7.tag === "Inr") { + if ($7._1.tag === "Inl") { return $1["genericShow'"]($7._1._1); } + if ($7._1.tag === "Inr") { + if ($7._1._1.tag === "Inl") { return $2["genericShow'"]($7._1._1._1); } + if ($7._1._1.tag === "Inr") { + if ($7._1._1._1.tag === "Inl") { return $3["genericShow'"]($7._1._1._1._1); } + if ($7._1._1._1.tag === "Inr") { + if ($7._1._1._1._1.tag === "Inl") { return $4["genericShow'"]($7._1._1._1._1._1); } + if ($7._1._1._1._1.tag === "Inr") { return $5["genericShow'"]($7._1._1._1._1._1); } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + }; + })() +}; +const genericGraphicsParam = { + to: x => { + if (x.tag === "Inl") { return Reset; } + if (x.tag === "Inr") { + if (x._1.tag === "Inl") { return $GraphicsParam("PMode", x._1._1); } + if (x._1.tag === "Inr") { + if (x._1._1.tag === "Inl") { return $GraphicsParam("PForeground", x._1._1._1); } + if (x._1._1.tag === "Inr") { return $GraphicsParam("PBackground", x._1._1._1); } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + }, + from: x => { + if (x.tag === "Reset") { return Data$dGeneric$dRep.$Sum("Inl", Data$dGeneric$dRep.NoArguments); } + if (x.tag === "PMode") { return Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inl", x._1)); } + if (x.tag === "PForeground") { return Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inl", x._1))); } + if (x.tag === "PBackground") { return Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", x._1))); } + $runtime.fail(); + } +}; +const genericEscapeCode = { + to: x => { + if (x.tag === "Inl") { return $EscapeCode("Up", x._1); } + if (x.tag === "Inr") { + if (x._1.tag === "Inl") { return $EscapeCode("Down", x._1._1); } + if (x._1.tag === "Inr") { + if (x._1._1.tag === "Inl") { return $EscapeCode("Forward", x._1._1._1); } + if (x._1._1.tag === "Inr") { + if (x._1._1._1.tag === "Inl") { return $EscapeCode("Back", x._1._1._1._1); } + if (x._1._1._1.tag === "Inr") { + if (x._1._1._1._1.tag === "Inl") { return $EscapeCode("NextLine", x._1._1._1._1._1); } + if (x._1._1._1._1.tag === "Inr") { + if (x._1._1._1._1._1.tag === "Inl") { return $EscapeCode("PreviousLine", x._1._1._1._1._1._1); } + if (x._1._1._1._1._1.tag === "Inr") { + if (x._1._1._1._1._1._1.tag === "Inl") { return $EscapeCode("HorizontalAbsolute", x._1._1._1._1._1._1._1); } + if (x._1._1._1._1._1._1.tag === "Inr") { + if (x._1._1._1._1._1._1._1.tag === "Inl") { return $EscapeCode("Position", x._1._1._1._1._1._1._1._1._1, x._1._1._1._1._1._1._1._1._2); } + if (x._1._1._1._1._1._1._1.tag === "Inr") { + if (x._1._1._1._1._1._1._1._1.tag === "Inl") { return $EscapeCode("EraseData", x._1._1._1._1._1._1._1._1._1); } + if (x._1._1._1._1._1._1._1._1.tag === "Inr") { + if (x._1._1._1._1._1._1._1._1._1.tag === "Inl") { return $EscapeCode("EraseLine", x._1._1._1._1._1._1._1._1._1._1); } + if (x._1._1._1._1._1._1._1._1._1.tag === "Inr") { + if (x._1._1._1._1._1._1._1._1._1._1.tag === "Inl") { return $EscapeCode("ScrollUp", x._1._1._1._1._1._1._1._1._1._1._1); } + if (x._1._1._1._1._1._1._1._1._1._1.tag === "Inr") { + if (x._1._1._1._1._1._1._1._1._1._1._1.tag === "Inl") { return $EscapeCode("ScrollDown", x._1._1._1._1._1._1._1._1._1._1._1._1); } + if (x._1._1._1._1._1._1._1._1._1._1._1.tag === "Inr") { + if (x._1._1._1._1._1._1._1._1._1._1._1._1.tag === "Inl") { return $EscapeCode("Graphics", x._1._1._1._1._1._1._1._1._1._1._1._1._1); } + if (x._1._1._1._1._1._1._1._1._1._1._1._1.tag === "Inr") { + if (x._1._1._1._1._1._1._1._1._1._1._1._1._1.tag === "Inl") { return SavePosition; } + if (x._1._1._1._1._1._1._1._1._1._1._1._1._1.tag === "Inr") { + if (x._1._1._1._1._1._1._1._1._1._1._1._1._1._1.tag === "Inl") { return RestorePosition; } + if (x._1._1._1._1._1._1._1._1._1._1._1._1._1._1.tag === "Inr") { + if (x._1._1._1._1._1._1._1._1._1._1._1._1._1._1._1.tag === "Inl") { return QueryPosition; } + if (x._1._1._1._1._1._1._1._1._1._1._1._1._1._1._1.tag === "Inr") { + if (x._1._1._1._1._1._1._1._1._1._1._1._1._1._1._1._1.tag === "Inl") { return HideCursor; } + if (x._1._1._1._1._1._1._1._1._1._1._1._1._1._1._1._1.tag === "Inr") { return ShowCursor; } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + }, + from: x => { + if (x.tag === "Up") { return Data$dGeneric$dRep.$Sum("Inl", x._1); } + if (x.tag === "Down") { return Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inl", x._1)); } + if (x.tag === "Forward") { return Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inl", x._1))); } + if (x.tag === "Back") { return Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inl", x._1)))); } + if (x.tag === "NextLine") { + return Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inl", x._1))))); + } + if (x.tag === "PreviousLine") { + return Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inl", x._1))))) + ); + } + if (x.tag === "HorizontalAbsolute") { + return Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inl", x._1))))) + ) + ); + } + if (x.tag === "Position") { + return Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inl", Data$dGeneric$dRep.$Product(x._1, x._2)))) + ) + ) + ) + ) + ); + } + if (x.tag === "EraseData") { + return Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inl", x._1))))) + ) + ) + ) + ); + } + if (x.tag === "EraseLine") { + return Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inl", x._1))))) + ) + ) + ) + ) + ); + } + if (x.tag === "ScrollUp") { + return Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inl", x._1)))) + ) + ) + ) + ) + ) + ) + ); + } + if (x.tag === "ScrollDown") { + return Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inl", x._1)))) + ) + ) + ) + ) + ) + ) + ) + ); + } + if (x.tag === "Graphics") { + return Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inl", x._1)))) + ) + ) + ) + ) + ) + ) + ) + ) + ); + } + if (x.tag === "SavePosition") { + return Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inl", Data$dGeneric$dRep.NoArguments))) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ); + } + if (x.tag === "RestorePosition") { + return Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inl", Data$dGeneric$dRep.NoArguments))) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ); + } + if (x.tag === "QueryPosition") { + return Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inl", Data$dGeneric$dRep.NoArguments))) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ); + } + if (x.tag === "HideCursor") { + return Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inl", Data$dGeneric$dRep.NoArguments))) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ); + } + if (x.tag === "ShowCursor") { + return Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.NoArguments))) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ); + } + $runtime.fail(); + } +}; +const genericEraseParam = { + to: x => { + if (x.tag === "Inl") { return ToEnd; } + if (x.tag === "Inr") { + if (x._1.tag === "Inl") { return FromBeginning; } + if (x._1.tag === "Inr") { return Entire; } + $runtime.fail(); + } + $runtime.fail(); + }, + from: x => { + if (x.tag === "ToEnd") { return Data$dGeneric$dRep.$Sum("Inl", Data$dGeneric$dRep.NoArguments); } + if (x.tag === "FromBeginning") { return Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inl", Data$dGeneric$dRep.NoArguments)); } + if (x.tag === "Entire") { return Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.NoArguments)); } + $runtime.fail(); + } +}; +const showEraseParam = { + show: /* #__PURE__ */ (() => { + const $0 = Data$dShow$dGeneric.genericShowConstructor(Data$dShow$dGeneric.genericShowArgsNoArguments)({reflectSymbol: () => "ToEnd"}); + const $1 = Data$dShow$dGeneric.genericShowConstructor(Data$dShow$dGeneric.genericShowArgsNoArguments)({reflectSymbol: () => "FromBeginning"}); + const $2 = Data$dShow$dGeneric.genericShowConstructor(Data$dShow$dGeneric.genericShowArgsNoArguments)({reflectSymbol: () => "Entire"}); + return x => { + const $4 = genericEraseParam.from(x); + if ($4.tag === "Inl") { return $0["genericShow'"]($4._1); } + if ($4.tag === "Inr") { + if ($4._1.tag === "Inl") { return $1["genericShow'"]($4._1._1); } + if ($4._1.tag === "Inr") { return $2["genericShow'"]($4._1._1); } + $runtime.fail(); + } + $runtime.fail(); + }; + })() +}; +const genericColor = { + to: x => { + if (x.tag === "Inl") { return Black; } + if (x.tag === "Inr") { + if (x._1.tag === "Inl") { return Red; } + if (x._1.tag === "Inr") { + if (x._1._1.tag === "Inl") { return Green; } + if (x._1._1.tag === "Inr") { + if (x._1._1._1.tag === "Inl") { return Yellow; } + if (x._1._1._1.tag === "Inr") { + if (x._1._1._1._1.tag === "Inl") { return Blue; } + if (x._1._1._1._1.tag === "Inr") { + if (x._1._1._1._1._1.tag === "Inl") { return Magenta; } + if (x._1._1._1._1._1.tag === "Inr") { + if (x._1._1._1._1._1._1.tag === "Inl") { return Cyan; } + if (x._1._1._1._1._1._1.tag === "Inr") { + if (x._1._1._1._1._1._1._1.tag === "Inl") { return White; } + if (x._1._1._1._1._1._1._1.tag === "Inr") { + if (x._1._1._1._1._1._1._1._1.tag === "Inl") { return BrightBlack; } + if (x._1._1._1._1._1._1._1._1.tag === "Inr") { + if (x._1._1._1._1._1._1._1._1._1.tag === "Inl") { return BrightRed; } + if (x._1._1._1._1._1._1._1._1._1.tag === "Inr") { + if (x._1._1._1._1._1._1._1._1._1._1.tag === "Inl") { return BrightGreen; } + if (x._1._1._1._1._1._1._1._1._1._1.tag === "Inr") { + if (x._1._1._1._1._1._1._1._1._1._1._1.tag === "Inl") { return BrightYellow; } + if (x._1._1._1._1._1._1._1._1._1._1._1.tag === "Inr") { + if (x._1._1._1._1._1._1._1._1._1._1._1._1.tag === "Inl") { return BrightBlue; } + if (x._1._1._1._1._1._1._1._1._1._1._1._1.tag === "Inr") { + if (x._1._1._1._1._1._1._1._1._1._1._1._1._1.tag === "Inl") { return BrightMagenta; } + if (x._1._1._1._1._1._1._1._1._1._1._1._1._1.tag === "Inr") { + if (x._1._1._1._1._1._1._1._1._1._1._1._1._1._1.tag === "Inl") { return BrightCyan; } + if (x._1._1._1._1._1._1._1._1._1._1._1._1._1._1.tag === "Inr") { return BrightWhite; } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + }, + from: x => { + if (x.tag === "Black") { return Data$dGeneric$dRep.$Sum("Inl", Data$dGeneric$dRep.NoArguments); } + if (x.tag === "Red") { return Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inl", Data$dGeneric$dRep.NoArguments)); } + if (x.tag === "Green") { return Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inl", Data$dGeneric$dRep.NoArguments))); } + if (x.tag === "Yellow") { + return Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inl", Data$dGeneric$dRep.NoArguments)))); + } + if (x.tag === "Blue") { + return Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inl", Data$dGeneric$dRep.NoArguments)))) + ); + } + if (x.tag === "Magenta") { + return Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inl", Data$dGeneric$dRep.NoArguments)))) + ) + ); + } + if (x.tag === "Cyan") { + return Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inl", Data$dGeneric$dRep.NoArguments)))) + ) + ) + ); + } + if (x.tag === "White") { + return Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inl", Data$dGeneric$dRep.NoArguments)))) + ) + ) + ) + ); + } + if (x.tag === "BrightBlack") { + return Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inl", Data$dGeneric$dRep.NoArguments)))) + ) + ) + ) + ) + ); + } + if (x.tag === "BrightRed") { + return Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inl", Data$dGeneric$dRep.NoArguments)))) + ) + ) + ) + ) + ) + ); + } + if (x.tag === "BrightGreen") { + return Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inl", Data$dGeneric$dRep.NoArguments)))) + ) + ) + ) + ) + ) + ) + ); + } + if (x.tag === "BrightYellow") { + return Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inl", Data$dGeneric$dRep.NoArguments)))) + ) + ) + ) + ) + ) + ) + ) + ); + } + if (x.tag === "BrightBlue") { + return Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inl", Data$dGeneric$dRep.NoArguments))) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ); + } + if (x.tag === "BrightMagenta") { + return Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inl", Data$dGeneric$dRep.NoArguments))) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ); + } + if (x.tag === "BrightCyan") { + return Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inl", Data$dGeneric$dRep.NoArguments))) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ); + } + if (x.tag === "BrightWhite") { + return Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum( + "Inr", + Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.$Sum("Inr", Data$dGeneric$dRep.NoArguments))) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ); + } + $runtime.fail(); + } +}; +const showColor = { + show: /* #__PURE__ */ (() => { + const $0 = Data$dShow$dGeneric.genericShowConstructor(Data$dShow$dGeneric.genericShowArgsNoArguments)({reflectSymbol: () => "Black"}); + const $1 = Data$dShow$dGeneric.genericShowConstructor(Data$dShow$dGeneric.genericShowArgsNoArguments)({reflectSymbol: () => "Red"}); + const $2 = Data$dShow$dGeneric.genericShowConstructor(Data$dShow$dGeneric.genericShowArgsNoArguments)({reflectSymbol: () => "Green"}); + const $3 = Data$dShow$dGeneric.genericShowConstructor(Data$dShow$dGeneric.genericShowArgsNoArguments)({reflectSymbol: () => "Yellow"}); + const $4 = Data$dShow$dGeneric.genericShowConstructor(Data$dShow$dGeneric.genericShowArgsNoArguments)({reflectSymbol: () => "Blue"}); + const $5 = Data$dShow$dGeneric.genericShowConstructor(Data$dShow$dGeneric.genericShowArgsNoArguments)({reflectSymbol: () => "Magenta"}); + const $6 = Data$dShow$dGeneric.genericShowConstructor(Data$dShow$dGeneric.genericShowArgsNoArguments)({reflectSymbol: () => "Cyan"}); + const $7 = Data$dShow$dGeneric.genericShowConstructor(Data$dShow$dGeneric.genericShowArgsNoArguments)({reflectSymbol: () => "White"}); + const $8 = Data$dShow$dGeneric.genericShowConstructor(Data$dShow$dGeneric.genericShowArgsNoArguments)({reflectSymbol: () => "BrightBlack"}); + const $9 = Data$dShow$dGeneric.genericShowConstructor(Data$dShow$dGeneric.genericShowArgsNoArguments)({reflectSymbol: () => "BrightRed"}); + const $10 = Data$dShow$dGeneric.genericShowConstructor(Data$dShow$dGeneric.genericShowArgsNoArguments)({reflectSymbol: () => "BrightGreen"}); + const $11 = Data$dShow$dGeneric.genericShowConstructor(Data$dShow$dGeneric.genericShowArgsNoArguments)({reflectSymbol: () => "BrightYellow"}); + const $12 = Data$dShow$dGeneric.genericShowConstructor(Data$dShow$dGeneric.genericShowArgsNoArguments)({reflectSymbol: () => "BrightBlue"}); + const $13 = Data$dShow$dGeneric.genericShowConstructor(Data$dShow$dGeneric.genericShowArgsNoArguments)({reflectSymbol: () => "BrightMagenta"}); + const $14 = Data$dShow$dGeneric.genericShowConstructor(Data$dShow$dGeneric.genericShowArgsNoArguments)({reflectSymbol: () => "BrightCyan"}); + const $15 = Data$dShow$dGeneric.genericShowConstructor(Data$dShow$dGeneric.genericShowArgsNoArguments)({reflectSymbol: () => "BrightWhite"}); + return x => { + const $17 = genericColor.from(x); + if ($17.tag === "Inl") { return $0["genericShow'"]($17._1); } + if ($17.tag === "Inr") { + if ($17._1.tag === "Inl") { return $1["genericShow'"]($17._1._1); } + if ($17._1.tag === "Inr") { + if ($17._1._1.tag === "Inl") { return $2["genericShow'"]($17._1._1._1); } + if ($17._1._1.tag === "Inr") { + if ($17._1._1._1.tag === "Inl") { return $3["genericShow'"]($17._1._1._1._1); } + if ($17._1._1._1.tag === "Inr") { + if ($17._1._1._1._1.tag === "Inl") { return $4["genericShow'"]($17._1._1._1._1._1); } + if ($17._1._1._1._1.tag === "Inr") { + if ($17._1._1._1._1._1.tag === "Inl") { return $5["genericShow'"]($17._1._1._1._1._1._1); } + if ($17._1._1._1._1._1.tag === "Inr") { + if ($17._1._1._1._1._1._1.tag === "Inl") { return $6["genericShow'"]($17._1._1._1._1._1._1._1); } + if ($17._1._1._1._1._1._1.tag === "Inr") { + if ($17._1._1._1._1._1._1._1.tag === "Inl") { return $7["genericShow'"]($17._1._1._1._1._1._1._1._1); } + if ($17._1._1._1._1._1._1._1.tag === "Inr") { + if ($17._1._1._1._1._1._1._1._1.tag === "Inl") { return $8["genericShow'"]($17._1._1._1._1._1._1._1._1._1); } + if ($17._1._1._1._1._1._1._1._1.tag === "Inr") { + if ($17._1._1._1._1._1._1._1._1._1.tag === "Inl") { return $9["genericShow'"]($17._1._1._1._1._1._1._1._1._1._1); } + if ($17._1._1._1._1._1._1._1._1._1.tag === "Inr") { + if ($17._1._1._1._1._1._1._1._1._1._1.tag === "Inl") { return $10["genericShow'"]($17._1._1._1._1._1._1._1._1._1._1._1); } + if ($17._1._1._1._1._1._1._1._1._1._1.tag === "Inr") { + if ($17._1._1._1._1._1._1._1._1._1._1._1.tag === "Inl") { return $11["genericShow'"]($17._1._1._1._1._1._1._1._1._1._1._1._1); } + if ($17._1._1._1._1._1._1._1._1._1._1._1.tag === "Inr") { + if ($17._1._1._1._1._1._1._1._1._1._1._1._1.tag === "Inl") { return $12["genericShow'"]($17._1._1._1._1._1._1._1._1._1._1._1._1._1); } + if ($17._1._1._1._1._1._1._1._1._1._1._1._1.tag === "Inr") { + if ($17._1._1._1._1._1._1._1._1._1._1._1._1._1.tag === "Inl") { return $13["genericShow'"]($17._1._1._1._1._1._1._1._1._1._1._1._1._1._1); } + if ($17._1._1._1._1._1._1._1._1._1._1._1._1._1.tag === "Inr") { + if ($17._1._1._1._1._1._1._1._1._1._1._1._1._1._1.tag === "Inl") { return $14["genericShow'"]($17._1._1._1._1._1._1._1._1._1._1._1._1._1._1._1); } + if ($17._1._1._1._1._1._1._1._1._1._1._1._1._1._1.tag === "Inr") { return $15["genericShow'"]($17._1._1._1._1._1._1._1._1._1._1._1._1._1._1._1); } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + }; + })() +}; +const showGraphicsParam = { + show: /* #__PURE__ */ (() => { + const $0 = Data$dShow$dGeneric.genericShowConstructor(Data$dShow$dGeneric.genericShowArgsNoArguments)({reflectSymbol: () => "Reset"}); + const $1 = Data$dShow$dGeneric.genericShowConstructor({genericShowArgs: v => [showRenderingMode.show(v)]})({reflectSymbol: () => "PMode"}); + const $2 = Data$dShow$dGeneric.genericShowConstructor({genericShowArgs: v => [showColor.show(v)]})({reflectSymbol: () => "PForeground"}); + const $3 = Data$dShow$dGeneric.genericShowConstructor({genericShowArgs: v => [showColor.show(v)]})({reflectSymbol: () => "PBackground"}); + return x => { + const $5 = genericGraphicsParam.from(x); + if ($5.tag === "Inl") { return $0["genericShow'"]($5._1); } + if ($5.tag === "Inr") { + if ($5._1.tag === "Inl") { return $1["genericShow'"]($5._1._1); } + if ($5._1.tag === "Inr") { + if ($5._1._1.tag === "Inl") { return $2["genericShow'"]($5._1._1._1); } + if ($5._1._1.tag === "Inr") { return $3["genericShow'"]($5._1._1._1); } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + }; + })() +}; +const showEscapeCode = { + show: /* #__PURE__ */ (() => { + const $0 = Data$dShow$dGeneric.genericShowConstructor(genericShowArgsArgument)({reflectSymbol: () => "Up"}); + const $1 = Data$dShow$dGeneric.genericShowConstructor(genericShowArgsArgument)({reflectSymbol: () => "Down"}); + const $2 = Data$dShow$dGeneric.genericShowConstructor(genericShowArgsArgument)({reflectSymbol: () => "Forward"}); + const $3 = Data$dShow$dGeneric.genericShowConstructor(genericShowArgsArgument)({reflectSymbol: () => "Back"}); + const $4 = Data$dShow$dGeneric.genericShowConstructor(genericShowArgsArgument)({reflectSymbol: () => "NextLine"}); + const $5 = Data$dShow$dGeneric.genericShowConstructor(genericShowArgsArgument)({reflectSymbol: () => "PreviousLine"}); + const $6 = Data$dShow$dGeneric.genericShowConstructor(genericShowArgsArgument)({reflectSymbol: () => "HorizontalAbsolute"}); + const $7 = Data$dShow$dGeneric.genericShowConstructor(Data$dShow$dGeneric.genericShowArgsProduct(genericShowArgsArgument)(genericShowArgsArgument))({ + reflectSymbol: () => "Position" + }); + const $8 = Data$dShow$dGeneric.genericShowConstructor({genericShowArgs: v => [showEraseParam.show(v)]})({reflectSymbol: () => "EraseData"}); + const $9 = Data$dShow$dGeneric.genericShowConstructor({genericShowArgs: v => [showEraseParam.show(v)]})({reflectSymbol: () => "EraseLine"}); + const $10 = Data$dShow$dGeneric.genericShowConstructor(genericShowArgsArgument)({reflectSymbol: () => "ScrollUp"}); + const $11 = Data$dShow$dGeneric.genericShowConstructor(genericShowArgsArgument)({reflectSymbol: () => "ScrollDown"}); + const $12 = Data$dShow$dGeneric.genericShowConstructor((() => { + const $12 = Data$dList$dTypes.showNonEmptyList(showGraphicsParam); + return {genericShowArgs: v => [$12.show(v)]}; + })())({reflectSymbol: () => "Graphics"}); + const $13 = Data$dShow$dGeneric.genericShowConstructor(Data$dShow$dGeneric.genericShowArgsNoArguments)({reflectSymbol: () => "SavePosition"}); + const $14 = Data$dShow$dGeneric.genericShowConstructor(Data$dShow$dGeneric.genericShowArgsNoArguments)({reflectSymbol: () => "RestorePosition"}); + const $15 = Data$dShow$dGeneric.genericShowConstructor(Data$dShow$dGeneric.genericShowArgsNoArguments)({reflectSymbol: () => "QueryPosition"}); + const $16 = Data$dShow$dGeneric.genericShowConstructor(Data$dShow$dGeneric.genericShowArgsNoArguments)({reflectSymbol: () => "HideCursor"}); + const $17 = Data$dShow$dGeneric.genericShowConstructor(Data$dShow$dGeneric.genericShowArgsNoArguments)({reflectSymbol: () => "ShowCursor"}); + return x => { + const $19 = genericEscapeCode.from(x); + if ($19.tag === "Inl") { return $0["genericShow'"]($19._1); } + if ($19.tag === "Inr") { + if ($19._1.tag === "Inl") { return $1["genericShow'"]($19._1._1); } + if ($19._1.tag === "Inr") { + if ($19._1._1.tag === "Inl") { return $2["genericShow'"]($19._1._1._1); } + if ($19._1._1.tag === "Inr") { + if ($19._1._1._1.tag === "Inl") { return $3["genericShow'"]($19._1._1._1._1); } + if ($19._1._1._1.tag === "Inr") { + if ($19._1._1._1._1.tag === "Inl") { return $4["genericShow'"]($19._1._1._1._1._1); } + if ($19._1._1._1._1.tag === "Inr") { + if ($19._1._1._1._1._1.tag === "Inl") { return $5["genericShow'"]($19._1._1._1._1._1._1); } + if ($19._1._1._1._1._1.tag === "Inr") { + if ($19._1._1._1._1._1._1.tag === "Inl") { return $6["genericShow'"]($19._1._1._1._1._1._1._1); } + if ($19._1._1._1._1._1._1.tag === "Inr") { + if ($19._1._1._1._1._1._1._1.tag === "Inl") { return $7["genericShow'"]($19._1._1._1._1._1._1._1._1); } + if ($19._1._1._1._1._1._1._1.tag === "Inr") { + if ($19._1._1._1._1._1._1._1._1.tag === "Inl") { return $8["genericShow'"]($19._1._1._1._1._1._1._1._1._1); } + if ($19._1._1._1._1._1._1._1._1.tag === "Inr") { + if ($19._1._1._1._1._1._1._1._1._1.tag === "Inl") { return $9["genericShow'"]($19._1._1._1._1._1._1._1._1._1._1); } + if ($19._1._1._1._1._1._1._1._1._1.tag === "Inr") { + if ($19._1._1._1._1._1._1._1._1._1._1.tag === "Inl") { return $10["genericShow'"]($19._1._1._1._1._1._1._1._1._1._1._1); } + if ($19._1._1._1._1._1._1._1._1._1._1.tag === "Inr") { + if ($19._1._1._1._1._1._1._1._1._1._1._1.tag === "Inl") { return $11["genericShow'"]($19._1._1._1._1._1._1._1._1._1._1._1._1); } + if ($19._1._1._1._1._1._1._1._1._1._1._1.tag === "Inr") { + if ($19._1._1._1._1._1._1._1._1._1._1._1._1.tag === "Inl") { return $12["genericShow'"]($19._1._1._1._1._1._1._1._1._1._1._1._1._1); } + if ($19._1._1._1._1._1._1._1._1._1._1._1._1.tag === "Inr") { + if ($19._1._1._1._1._1._1._1._1._1._1._1._1._1.tag === "Inl") { return $13["genericShow'"]($19._1._1._1._1._1._1._1._1._1._1._1._1._1._1); } + if ($19._1._1._1._1._1._1._1._1._1._1._1._1._1.tag === "Inr") { + if ($19._1._1._1._1._1._1._1._1._1._1._1._1._1._1.tag === "Inl") { return $14["genericShow'"]($19._1._1._1._1._1._1._1._1._1._1._1._1._1._1._1); } + if ($19._1._1._1._1._1._1._1._1._1._1._1._1._1._1.tag === "Inr") { + if ($19._1._1._1._1._1._1._1._1._1._1._1._1._1._1._1.tag === "Inl") { + return $15["genericShow'"]($19._1._1._1._1._1._1._1._1._1._1._1._1._1._1._1._1); + } + if ($19._1._1._1._1._1._1._1._1._1._1._1._1._1._1._1.tag === "Inr") { + if ($19._1._1._1._1._1._1._1._1._1._1._1._1._1._1._1._1.tag === "Inl") { + return $16["genericShow'"]($19._1._1._1._1._1._1._1._1._1._1._1._1._1._1._1._1._1); + } + if ($19._1._1._1._1._1._1._1._1._1._1._1._1._1._1._1._1.tag === "Inr") { + return $17["genericShow'"]($19._1._1._1._1._1._1._1._1._1._1._1._1._1._1._1._1._1); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + }; + })() +}; +const eraseParamToString = ep => { + if (ep.tag === "ToEnd") { return "0"; } + if (ep.tag === "FromBeginning") { return "1"; } + if (ep.tag === "Entire") { return "2"; } + $runtime.fail(); +}; +const eqRenderingMode = { + eq: x => y => { + if (x.tag === "Bold") { return y.tag === "Bold"; } + if (x.tag === "Dim") { return y.tag === "Dim"; } + if (x.tag === "Italic") { return y.tag === "Italic"; } + if (x.tag === "Underline") { return y.tag === "Underline"; } + if (x.tag === "Inverse") { return y.tag === "Inverse"; } + if (x.tag === "Strikethrough") { return y.tag === "Strikethrough"; } + return false; + } +}; +const ordRenderingMode = { + compare: x => y => { + if (x.tag === "Bold") { + if (y.tag === "Bold") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "Bold") { return Data$dOrdering.GT; } + if (x.tag === "Dim") { + if (y.tag === "Dim") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "Dim") { return Data$dOrdering.GT; } + if (x.tag === "Italic") { + if (y.tag === "Italic") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "Italic") { return Data$dOrdering.GT; } + if (x.tag === "Underline") { + if (y.tag === "Underline") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "Underline") { return Data$dOrdering.GT; } + if (x.tag === "Inverse") { + if (y.tag === "Inverse") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "Inverse") { return Data$dOrdering.GT; } + if (x.tag === "Strikethrough") { + if (y.tag === "Strikethrough") { return Data$dOrdering.EQ; } + $runtime.fail(); + } + $runtime.fail(); + }, + Eq0: () => eqRenderingMode +}; +const eqEraseParam = { + eq: x => y => { + if (x.tag === "ToEnd") { return y.tag === "ToEnd"; } + if (x.tag === "FromBeginning") { return y.tag === "FromBeginning"; } + if (x.tag === "Entire") { return y.tag === "Entire"; } + return false; + } +}; +const ordEraseParam = { + compare: x => y => { + if (x.tag === "ToEnd") { + if (y.tag === "ToEnd") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "ToEnd") { return Data$dOrdering.GT; } + if (x.tag === "FromBeginning") { + if (y.tag === "FromBeginning") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "FromBeginning") { return Data$dOrdering.GT; } + if (x.tag === "Entire") { + if (y.tag === "Entire") { return Data$dOrdering.EQ; } + $runtime.fail(); + } + $runtime.fail(); + }, + Eq0: () => eqEraseParam +}; +const eqColor = { + eq: x => y => { + if (x.tag === "Black") { return y.tag === "Black"; } + if (x.tag === "Red") { return y.tag === "Red"; } + if (x.tag === "Green") { return y.tag === "Green"; } + if (x.tag === "Yellow") { return y.tag === "Yellow"; } + if (x.tag === "Blue") { return y.tag === "Blue"; } + if (x.tag === "Magenta") { return y.tag === "Magenta"; } + if (x.tag === "Cyan") { return y.tag === "Cyan"; } + if (x.tag === "White") { return y.tag === "White"; } + if (x.tag === "BrightBlack") { return y.tag === "BrightBlack"; } + if (x.tag === "BrightRed") { return y.tag === "BrightRed"; } + if (x.tag === "BrightGreen") { return y.tag === "BrightGreen"; } + if (x.tag === "BrightYellow") { return y.tag === "BrightYellow"; } + if (x.tag === "BrightBlue") { return y.tag === "BrightBlue"; } + if (x.tag === "BrightMagenta") { return y.tag === "BrightMagenta"; } + if (x.tag === "BrightCyan") { return y.tag === "BrightCyan"; } + if (x.tag === "BrightWhite") { return y.tag === "BrightWhite"; } + return false; + } +}; +const eqGraphicsParam = { + eq: x => y => { + if (x.tag === "Reset") { return y.tag === "Reset"; } + if (x.tag === "PMode") { + if (y.tag === "PMode") { + if (x._1.tag === "Bold") { return y._1.tag === "Bold"; } + if (x._1.tag === "Dim") { return y._1.tag === "Dim"; } + if (x._1.tag === "Italic") { return y._1.tag === "Italic"; } + if (x._1.tag === "Underline") { return y._1.tag === "Underline"; } + if (x._1.tag === "Inverse") { return y._1.tag === "Inverse"; } + if (x._1.tag === "Strikethrough") { return y._1.tag === "Strikethrough"; } + return false; + } + return false; + } + if (x.tag === "PForeground") { + if (y.tag === "PForeground") { return eqColor.eq(x._1)(y._1); } + return false; + } + if (x.tag === "PBackground") { + if (y.tag === "PBackground") { return eqColor.eq(x._1)(y._1); } + return false; + } + return false; + } +}; +const eq4 = x => y => eqGraphicsParam.eq(x._1)(y._1) && (() => { + const go = go$a0$copy => go$a1$copy => go$a2$copy => { + let go$a0 = go$a0$copy, go$a1 = go$a1$copy, go$a2 = go$a2$copy, go$c = true, go$r; + while (go$c) { + const v = go$a0, v1 = go$a1, v2 = go$a2; + if (!v2) { + go$c = false; + go$r = false; + continue; + } + if (v.tag === "Nil") { + if (v1.tag === "Nil") { + go$c = false; + go$r = v2; + continue; + } + go$c = false; + go$r = false; + continue; + } + if (v.tag === "Cons") { + if (v1.tag === "Cons") { + go$a0 = v._2; + go$a1 = v1._2; + go$a2 = v2 && eqGraphicsParam.eq(v1._1)(v._1); + continue; + } + go$c = false; + go$r = false; + continue; + } + go$c = false; + go$r = false; + continue; + }; + return go$r; + }; + return go(x._2)(y._2)(true); +})(); +const eqEscapeCode = { + eq: x => y => { + if (x.tag === "Up") { + if (y.tag === "Up") { return x._1 === y._1; } + return false; + } + if (x.tag === "Down") { + if (y.tag === "Down") { return x._1 === y._1; } + return false; + } + if (x.tag === "Forward") { + if (y.tag === "Forward") { return x._1 === y._1; } + return false; + } + if (x.tag === "Back") { + if (y.tag === "Back") { return x._1 === y._1; } + return false; + } + if (x.tag === "NextLine") { + if (y.tag === "NextLine") { return x._1 === y._1; } + return false; + } + if (x.tag === "PreviousLine") { + if (y.tag === "PreviousLine") { return x._1 === y._1; } + return false; + } + if (x.tag === "HorizontalAbsolute") { + if (y.tag === "HorizontalAbsolute") { return x._1 === y._1; } + return false; + } + if (x.tag === "Position") { + if (y.tag === "Position") { return x._1 === y._1 && x._2 === y._2; } + return false; + } + if (x.tag === "EraseData") { + if (y.tag === "EraseData") { + if (x._1.tag === "ToEnd") { return y._1.tag === "ToEnd"; } + if (x._1.tag === "FromBeginning") { return y._1.tag === "FromBeginning"; } + if (x._1.tag === "Entire") { return y._1.tag === "Entire"; } + return false; + } + return false; + } + if (x.tag === "EraseLine") { + if (y.tag === "EraseLine") { + if (x._1.tag === "ToEnd") { return y._1.tag === "ToEnd"; } + if (x._1.tag === "FromBeginning") { return y._1.tag === "FromBeginning"; } + if (x._1.tag === "Entire") { return y._1.tag === "Entire"; } + return false; + } + return false; + } + if (x.tag === "ScrollUp") { + if (y.tag === "ScrollUp") { return x._1 === y._1; } + return false; + } + if (x.tag === "ScrollDown") { + if (y.tag === "ScrollDown") { return x._1 === y._1; } + return false; + } + if (x.tag === "Graphics") { + if (y.tag === "Graphics") { return eq4(x._1)(y._1); } + return false; + } + if (x.tag === "SavePosition") { return y.tag === "SavePosition"; } + if (x.tag === "RestorePosition") { return y.tag === "RestorePosition"; } + if (x.tag === "QueryPosition") { return y.tag === "QueryPosition"; } + if (x.tag === "HideCursor") { return y.tag === "HideCursor"; } + if (x.tag === "ShowCursor") { return y.tag === "ShowCursor"; } + return false; + } +}; +const ordColor = { + compare: x => y => { + if (x.tag === "Black") { + if (y.tag === "Black") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "Black") { return Data$dOrdering.GT; } + if (x.tag === "Red") { + if (y.tag === "Red") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "Red") { return Data$dOrdering.GT; } + if (x.tag === "Green") { + if (y.tag === "Green") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "Green") { return Data$dOrdering.GT; } + if (x.tag === "Yellow") { + if (y.tag === "Yellow") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "Yellow") { return Data$dOrdering.GT; } + if (x.tag === "Blue") { + if (y.tag === "Blue") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "Blue") { return Data$dOrdering.GT; } + if (x.tag === "Magenta") { + if (y.tag === "Magenta") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "Magenta") { return Data$dOrdering.GT; } + if (x.tag === "Cyan") { + if (y.tag === "Cyan") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "Cyan") { return Data$dOrdering.GT; } + if (x.tag === "White") { + if (y.tag === "White") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "White") { return Data$dOrdering.GT; } + if (x.tag === "BrightBlack") { + if (y.tag === "BrightBlack") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "BrightBlack") { return Data$dOrdering.GT; } + if (x.tag === "BrightRed") { + if (y.tag === "BrightRed") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "BrightRed") { return Data$dOrdering.GT; } + if (x.tag === "BrightGreen") { + if (y.tag === "BrightGreen") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "BrightGreen") { return Data$dOrdering.GT; } + if (x.tag === "BrightYellow") { + if (y.tag === "BrightYellow") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "BrightYellow") { return Data$dOrdering.GT; } + if (x.tag === "BrightBlue") { + if (y.tag === "BrightBlue") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "BrightBlue") { return Data$dOrdering.GT; } + if (x.tag === "BrightMagenta") { + if (y.tag === "BrightMagenta") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "BrightMagenta") { return Data$dOrdering.GT; } + if (x.tag === "BrightCyan") { + if (y.tag === "BrightCyan") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "BrightCyan") { return Data$dOrdering.GT; } + if (x.tag === "BrightWhite") { + if (y.tag === "BrightWhite") { return Data$dOrdering.EQ; } + $runtime.fail(); + } + $runtime.fail(); + }, + Eq0: () => eqColor +}; +const ordGraphicsParam = { + compare: x => y => { + if (x.tag === "Reset") { + if (y.tag === "Reset") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "Reset") { return Data$dOrdering.GT; } + if (x.tag === "PMode") { + if (y.tag === "PMode") { return ordRenderingMode.compare(x._1)(y._1); } + return Data$dOrdering.LT; + } + if (y.tag === "PMode") { return Data$dOrdering.GT; } + if (x.tag === "PForeground") { + if (y.tag === "PForeground") { return ordColor.compare(x._1)(y._1); } + return Data$dOrdering.LT; + } + if (y.tag === "PForeground") { return Data$dOrdering.GT; } + if (x.tag === "PBackground") { + if (y.tag === "PBackground") { return ordColor.compare(x._1)(y._1); } + $runtime.fail(); + } + $runtime.fail(); + }, + Eq0: () => eqGraphicsParam +}; +const compare4 = /* #__PURE__ */ (() => Data$dList$dTypes.ordNonEmpty(ordGraphicsParam).compare)(); +const ordEscapeCode = { + compare: x => y => { + if (x.tag === "Up") { + if (y.tag === "Up") { return Data$dOrd.ordInt.compare(x._1)(y._1); } + return Data$dOrdering.LT; + } + if (y.tag === "Up") { return Data$dOrdering.GT; } + if (x.tag === "Down") { + if (y.tag === "Down") { return Data$dOrd.ordInt.compare(x._1)(y._1); } + return Data$dOrdering.LT; + } + if (y.tag === "Down") { return Data$dOrdering.GT; } + if (x.tag === "Forward") { + if (y.tag === "Forward") { return Data$dOrd.ordInt.compare(x._1)(y._1); } + return Data$dOrdering.LT; + } + if (y.tag === "Forward") { return Data$dOrdering.GT; } + if (x.tag === "Back") { + if (y.tag === "Back") { return Data$dOrd.ordInt.compare(x._1)(y._1); } + return Data$dOrdering.LT; + } + if (y.tag === "Back") { return Data$dOrdering.GT; } + if (x.tag === "NextLine") { + if (y.tag === "NextLine") { return Data$dOrd.ordInt.compare(x._1)(y._1); } + return Data$dOrdering.LT; + } + if (y.tag === "NextLine") { return Data$dOrdering.GT; } + if (x.tag === "PreviousLine") { + if (y.tag === "PreviousLine") { return Data$dOrd.ordInt.compare(x._1)(y._1); } + return Data$dOrdering.LT; + } + if (y.tag === "PreviousLine") { return Data$dOrdering.GT; } + if (x.tag === "HorizontalAbsolute") { + if (y.tag === "HorizontalAbsolute") { return Data$dOrd.ordInt.compare(x._1)(y._1); } + return Data$dOrdering.LT; + } + if (y.tag === "HorizontalAbsolute") { return Data$dOrdering.GT; } + if (x.tag === "Position") { + if (y.tag === "Position") { + const v = Data$dOrd.ordInt.compare(x._1)(y._1); + if (v.tag === "LT") { return Data$dOrdering.LT; } + if (v.tag === "GT") { return Data$dOrdering.GT; } + return Data$dOrd.ordInt.compare(x._2)(y._2); + } + return Data$dOrdering.LT; + } + if (y.tag === "Position") { return Data$dOrdering.GT; } + if (x.tag === "EraseData") { + if (y.tag === "EraseData") { return ordEraseParam.compare(x._1)(y._1); } + return Data$dOrdering.LT; + } + if (y.tag === "EraseData") { return Data$dOrdering.GT; } + if (x.tag === "EraseLine") { + if (y.tag === "EraseLine") { return ordEraseParam.compare(x._1)(y._1); } + return Data$dOrdering.LT; + } + if (y.tag === "EraseLine") { return Data$dOrdering.GT; } + if (x.tag === "ScrollUp") { + if (y.tag === "ScrollUp") { return Data$dOrd.ordInt.compare(x._1)(y._1); } + return Data$dOrdering.LT; + } + if (y.tag === "ScrollUp") { return Data$dOrdering.GT; } + if (x.tag === "ScrollDown") { + if (y.tag === "ScrollDown") { return Data$dOrd.ordInt.compare(x._1)(y._1); } + return Data$dOrdering.LT; + } + if (y.tag === "ScrollDown") { return Data$dOrdering.GT; } + if (x.tag === "Graphics") { + if (y.tag === "Graphics") { return compare4(x._1)(y._1); } + return Data$dOrdering.LT; + } + if (y.tag === "Graphics") { return Data$dOrdering.GT; } + if (x.tag === "SavePosition") { + if (y.tag === "SavePosition") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "SavePosition") { return Data$dOrdering.GT; } + if (x.tag === "RestorePosition") { + if (y.tag === "RestorePosition") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "RestorePosition") { return Data$dOrdering.GT; } + if (x.tag === "QueryPosition") { + if (y.tag === "QueryPosition") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "QueryPosition") { return Data$dOrdering.GT; } + if (x.tag === "HideCursor") { + if (y.tag === "HideCursor") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "HideCursor") { return Data$dOrdering.GT; } + if (x.tag === "ShowCursor") { + if (y.tag === "ShowCursor") { return Data$dOrdering.EQ; } + $runtime.fail(); + } + $runtime.fail(); + }, + Eq0: () => eqEscapeCode +}; +const colorSuffix = "m"; +const colorCode = c => { + if (c.tag === "Black") { return 30; } + if (c.tag === "Red") { return 31; } + if (c.tag === "Green") { return 32; } + if (c.tag === "Yellow") { return 33; } + if (c.tag === "Blue") { return 34; } + if (c.tag === "Magenta") { return 35; } + if (c.tag === "Cyan") { return 36; } + if (c.tag === "White") { return 37; } + if (c.tag === "BrightBlack") { return 90; } + if (c.tag === "BrightRed") { return 91; } + if (c.tag === "BrightGreen") { return 92; } + if (c.tag === "BrightYellow") { return 93; } + if (c.tag === "BrightBlue") { return 94; } + if (c.tag === "BrightMagenta") { return 95; } + if (c.tag === "BrightCyan") { return 96; } + if (c.tag === "BrightWhite") { return 97; } + $runtime.fail(); +}; +const codeForRenderingMode = m => { + if (m.tag === "Bold") { return 1; } + if (m.tag === "Dim") { return 2; } + if (m.tag === "Italic") { return 3; } + if (m.tag === "Underline") { return 4; } + if (m.tag === "Inverse") { return 7; } + if (m.tag === "Strikethrough") { return 9; } + $runtime.fail(); +}; +const graphicsParamToString = gp => { + if (gp.tag === "Reset") { return "0"; } + if (gp.tag === "PMode") { + return Data$dShow.showIntImpl((() => { + if (gp._1.tag === "Bold") { return 1; } + if (gp._1.tag === "Dim") { return 2; } + if (gp._1.tag === "Italic") { return 3; } + if (gp._1.tag === "Underline") { return 4; } + if (gp._1.tag === "Inverse") { return 7; } + if (gp._1.tag === "Strikethrough") { return 9; } + $runtime.fail(); + })()); + } + if (gp.tag === "PForeground") { + return Data$dShow.showIntImpl((() => { + if (gp._1.tag === "Black") { return 30; } + if (gp._1.tag === "Red") { return 31; } + if (gp._1.tag === "Green") { return 32; } + if (gp._1.tag === "Yellow") { return 33; } + if (gp._1.tag === "Blue") { return 34; } + if (gp._1.tag === "Magenta") { return 35; } + if (gp._1.tag === "Cyan") { return 36; } + if (gp._1.tag === "White") { return 37; } + if (gp._1.tag === "BrightBlack") { return 90; } + if (gp._1.tag === "BrightRed") { return 91; } + if (gp._1.tag === "BrightGreen") { return 92; } + if (gp._1.tag === "BrightYellow") { return 93; } + if (gp._1.tag === "BrightBlue") { return 94; } + if (gp._1.tag === "BrightMagenta") { return 95; } + if (gp._1.tag === "BrightCyan") { return 96; } + if (gp._1.tag === "BrightWhite") { return 97; } + $runtime.fail(); + })()); + } + if (gp.tag === "PBackground") { + return Data$dShow.showIntImpl((() => { + if (gp._1.tag === "Black") { return 40; } + if (gp._1.tag === "Red") { return 41; } + if (gp._1.tag === "Green") { return 42; } + if (gp._1.tag === "Yellow") { return 43; } + if (gp._1.tag === "Blue") { return 44; } + if (gp._1.tag === "Magenta") { return 45; } + if (gp._1.tag === "Cyan") { return 46; } + if (gp._1.tag === "White") { return 47; } + if (gp._1.tag === "BrightBlack") { return 100; } + if (gp._1.tag === "BrightRed") { return 101; } + if (gp._1.tag === "BrightGreen") { return 102; } + if (gp._1.tag === "BrightYellow") { return 103; } + if (gp._1.tag === "BrightBlue") { return 104; } + if (gp._1.tag === "BrightMagenta") { return 105; } + if (gp._1.tag === "BrightCyan") { return 106; } + if (gp._1.tag === "BrightWhite") { return 107; } + $runtime.fail(); + })()); + } + $runtime.fail(); +}; +const escapeCodeToString = x => { + if (x.tag === "Up") { return "\u001b[" + (Data$dShow.showIntImpl(x._1) + "A"); } + if (x.tag === "Down") { return "\u001b[" + (Data$dShow.showIntImpl(x._1) + "B"); } + if (x.tag === "Forward") { return "\u001b[" + (Data$dShow.showIntImpl(x._1) + "C"); } + if (x.tag === "Back") { return "\u001b[" + (Data$dShow.showIntImpl(x._1) + "D"); } + if (x.tag === "NextLine") { return "\u001b[" + (Data$dShow.showIntImpl(x._1) + "E"); } + if (x.tag === "PreviousLine") { return "\u001b[" + (Data$dShow.showIntImpl(x._1) + "F"); } + if (x.tag === "HorizontalAbsolute") { return "\u001b[" + (Data$dShow.showIntImpl(x._1) + "G"); } + if (x.tag === "Position") { return "\u001b[" + (Data$dShow.showIntImpl(x._1) + (";" + (Data$dShow.showIntImpl(x._2) + "H"))); } + if (x.tag === "EraseData") { + if (x._1.tag === "ToEnd") { return "\u001b[0J"; } + if (x._1.tag === "FromBeginning") { return "\u001b[1J"; } + if (x._1.tag === "Entire") { return "\u001b[2J"; } + $runtime.fail(); + } + if (x.tag === "EraseLine") { + if (x._1.tag === "ToEnd") { return "\u001b[0K"; } + if (x._1.tag === "FromBeginning") { return "\u001b[1K"; } + if (x._1.tag === "Entire") { return "\u001b[2K"; } + $runtime.fail(); + } + if (x.tag === "ScrollUp") { return "\u001b[" + (Data$dShow.showIntImpl(x._1) + "S"); } + if (x.tag === "ScrollDown") { return "\u001b[" + (Data$dShow.showIntImpl(x._1) + "T"); } + if (x.tag === "Graphics") { + const $1 = Data$dList$dTypes.functorNonEmptyList.map(graphicsParamToString)(x._1); + 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 = (() => { + if (b.init) { return {init: false, acc: v._1}; } + return {init: false, acc: b.acc + (";" + v._1)}; + })(); + go$a1 = v._2; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return "\u001b[" + (go({init: false, acc: $1._1})($1._2).acc + "m"); + } + if (x.tag === "SavePosition") { return "\u001b[s"; } + if (x.tag === "RestorePosition") { return "\u001b[u"; } + if (x.tag === "QueryPosition") { return "\u001b[6n"; } + if (x.tag === "HideCursor") { return "\u001b[?25l"; } + if (x.tag === "ShowCursor") { return "\u001b[?25h"; } + $runtime.fail(); +}; +export { + $Color, + $EraseParam, + $EscapeCode, + $GraphicsParam, + $RenderingMode, + Back, + Black, + Blue, + Bold, + BrightBlack, + BrightBlue, + BrightCyan, + BrightGreen, + BrightMagenta, + BrightRed, + BrightWhite, + BrightYellow, + Cyan, + Dim, + Down, + Entire, + EraseData, + EraseLine, + Forward, + FromBeginning, + Graphics, + Green, + HideCursor, + HorizontalAbsolute, + Inverse, + Italic, + Magenta, + NextLine, + PBackground, + PForeground, + PMode, + Position, + PreviousLine, + QueryPosition, + Red, + Reset, + RestorePosition, + SavePosition, + ScrollDown, + ScrollUp, + ShowCursor, + Strikethrough, + ToEnd, + Underline, + Up, + White, + Yellow, + codeForRenderingMode, + colorCode, + colorSuffix, + compare4, + eq4, + eqColor, + eqEraseParam, + eqEscapeCode, + eqGraphicsParam, + eqRenderingMode, + eraseParamToString, + escapeCodeToString, + genericColor, + genericEraseParam, + genericEscapeCode, + genericGraphicsParam, + genericRenderingMode, + genericShowArgsArgument, + graphicsParamToString, + ordColor, + ordEraseParam, + ordEscapeCode, + ordGraphicsParam, + ordRenderingMode, + prefix, + showColor, + showEraseParam, + showEscapeCode, + showGraphicsParam, + showRenderingMode +}; diff --git a/.storybook/purescript-indexer/output-es/Ansi.Output/index.js b/.storybook/purescript-indexer/output-es/Ansi.Output/index.js new file mode 100644 index 0000000..4288c40 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Ansi.Output/index.js @@ -0,0 +1,18 @@ +// | Convenience functions to simplify outputting ANSI escape codes to +// | terminals. +import * as $runtime from "../runtime.js"; +import * as Ansi$dCodes from "../Ansi.Codes/index.js"; +import * as Data$dList$dTypes from "../Data.List.Types/index.js"; +import * as Data$dNonEmpty from "../Data.NonEmpty/index.js"; +const withGraphics = params => text => Ansi$dCodes.escapeCodeToString(Ansi$dCodes.$EscapeCode("Graphics", params)) + ( + text + Ansi$dCodes.escapeCodeToString(Ansi$dCodes.$EscapeCode("Graphics", Data$dNonEmpty.$NonEmpty(Ansi$dCodes.Reset, Data$dList$dTypes.Nil))) +); +const underline = /* #__PURE__ */ Data$dNonEmpty.$NonEmpty(/* #__PURE__ */ Ansi$dCodes.$GraphicsParam("PMode", Ansi$dCodes.Underline), Data$dList$dTypes.Nil); +const strikethrough = /* #__PURE__ */ Data$dNonEmpty.$NonEmpty(/* #__PURE__ */ Ansi$dCodes.$GraphicsParam("PMode", Ansi$dCodes.Strikethrough), Data$dList$dTypes.Nil); +const italic = /* #__PURE__ */ Data$dNonEmpty.$NonEmpty(/* #__PURE__ */ Ansi$dCodes.$GraphicsParam("PMode", Ansi$dCodes.Italic), Data$dList$dTypes.Nil); +const inverse = /* #__PURE__ */ Data$dNonEmpty.$NonEmpty(/* #__PURE__ */ Ansi$dCodes.$GraphicsParam("PMode", Ansi$dCodes.Inverse), Data$dList$dTypes.Nil); +const foreground = c => Data$dNonEmpty.$NonEmpty(Ansi$dCodes.$GraphicsParam("PForeground", c), Data$dList$dTypes.Nil); +const dim = /* #__PURE__ */ Data$dNonEmpty.$NonEmpty(/* #__PURE__ */ Ansi$dCodes.$GraphicsParam("PMode", Ansi$dCodes.Dim), Data$dList$dTypes.Nil); +const bold = /* #__PURE__ */ Data$dNonEmpty.$NonEmpty(/* #__PURE__ */ Ansi$dCodes.$GraphicsParam("PMode", Ansi$dCodes.Bold), Data$dList$dTypes.Nil); +const background = c => Data$dNonEmpty.$NonEmpty(Ansi$dCodes.$GraphicsParam("PBackground", c), Data$dList$dTypes.Nil); +export {background, bold, dim, foreground, inverse, italic, strikethrough, underline, withGraphics}; diff --git a/.storybook/purescript-indexer/output-es/Control.Alt/index.js b/.storybook/purescript-indexer/output-es/Control.Alt/index.js new file mode 100644 index 0000000..48bdf51 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Alt/index.js @@ -0,0 +1,6 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dFunctor from "../Data.Functor/index.js"; +import * as Data$dSemigroup from "../Data.Semigroup/index.js"; +const altArray = {alt: Data$dSemigroup.concatArray, Functor0: () => Data$dFunctor.functorArray}; +const alt = dict => dict.alt; +export {alt, altArray}; diff --git a/.storybook/purescript-indexer/output-es/Control.Alternative/index.js b/.storybook/purescript-indexer/output-es/Control.Alternative/index.js new file mode 100644 index 0000000..79c8436 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Alternative/index.js @@ -0,0 +1,14 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dApplicative from "../Control.Applicative/index.js"; +import * as Control$dPlus from "../Control.Plus/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +const guard = dictAlternative => { + const pure = dictAlternative.Applicative0().pure; + const empty = dictAlternative.Plus1().empty; + return v => { + if (v) { return pure(Data$dUnit.unit); } + return empty; + }; +}; +const alternativeArray = {Applicative0: () => Control$dApplicative.applicativeArray, Plus1: () => Control$dPlus.plusArray}; +export {alternativeArray, guard}; diff --git a/.storybook/purescript-indexer/output-es/Control.Applicative/index.js b/.storybook/purescript-indexer/output-es/Control.Applicative/index.js new file mode 100644 index 0000000..7f97a97 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Applicative/index.js @@ -0,0 +1,22 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dApply from "../Control.Apply/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +import * as Type$dProxy from "../Type.Proxy/index.js"; +const pure = dict => dict.pure; +const unless = dictApplicative => v => v1 => { + if (!v) { return v1; } + if (v) { return dictApplicative.pure(Data$dUnit.unit); } + $runtime.fail(); +}; +const when = dictApplicative => v => v1 => { + if (v) { return v1; } + return dictApplicative.pure(Data$dUnit.unit); +}; +const liftA1 = dictApplicative => { + const apply = dictApplicative.Apply0().apply; + return f => a => apply(dictApplicative.pure(f))(a); +}; +const applicativeProxy = {pure: v => Type$dProxy.Proxy, Apply0: () => Control$dApply.applyProxy}; +const applicativeFn = {pure: x => v => x, Apply0: () => Control$dApply.applyFn}; +const applicativeArray = {pure: x => [x], Apply0: () => Control$dApply.applyArray}; +export {applicativeArray, applicativeFn, applicativeProxy, liftA1, pure, unless, when}; diff --git a/.storybook/purescript-indexer/output-es/Control.Apply/foreign.js b/.storybook/purescript-indexer/output-es/Control.Apply/foreign.js new file mode 100644 index 0000000..149f438 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Apply/foreign.js @@ -0,0 +1,15 @@ +export const 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; + }; +}; diff --git a/.storybook/purescript-indexer/output-es/Control.Apply/index.js b/.storybook/purescript-indexer/output-es/Control.Apply/index.js new file mode 100644 index 0000000..373276c --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Apply/index.js @@ -0,0 +1,36 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dFunction from "../Data.Function/index.js"; +import * as Data$dFunctor from "../Data.Functor/index.js"; +import * as Type$dProxy from "../Type.Proxy/index.js"; +import {arrayApply} from "./foreign.js"; +const identity = x => x; +const applyProxy = {apply: v => v1 => Type$dProxy.Proxy, Functor0: () => Data$dFunctor.functorProxy}; +const applyFn = {apply: f => g => x => f(x)(g(x)), Functor0: () => Data$dFunctor.functorFn}; +const applyArray = {apply: arrayApply, Functor0: () => Data$dFunctor.functorArray}; +const apply = dict => dict.apply; +const applyFirst = dictApply => { + const map = dictApply.Functor0().map; + return a => b => dictApply.apply(map(Data$dFunction.const)(a))(b); +}; +const applySecond = dictApply => { + const map = dictApply.Functor0().map; + return a => b => dictApply.apply(map(v => identity)(a))(b); +}; +const lift2 = dictApply => { + const map = dictApply.Functor0().map; + return f => a => b => dictApply.apply(map(f)(a))(b); +}; +const lift3 = dictApply => { + const map = dictApply.Functor0().map; + return f => a => b => c => dictApply.apply(dictApply.apply(map(f)(a))(b))(c); +}; +const lift4 = dictApply => { + const map = dictApply.Functor0().map; + return f => a => b => c => d => dictApply.apply(dictApply.apply(dictApply.apply(map(f)(a))(b))(c))(d); +}; +const lift5 = dictApply => { + const map = dictApply.Functor0().map; + return f => a => b => c => d => e => dictApply.apply(dictApply.apply(dictApply.apply(dictApply.apply(map(f)(a))(b))(c))(d))(e); +}; +export {apply, applyArray, applyFirst, applyFn, applyProxy, applySecond, identity, lift2, lift3, lift4, lift5}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Control.Biapplicative/index.js b/.storybook/purescript-indexer/output-es/Control.Biapplicative/index.js new file mode 100644 index 0000000..3cf3876 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Biapplicative/index.js @@ -0,0 +1,6 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dBiapply from "../Control.Biapply/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +const bipure = dict => dict.bipure; +const biapplicativeTuple = {bipure: Data$dTuple.Tuple, Biapply0: () => Control$dBiapply.biapplyTuple}; +export {biapplicativeTuple, bipure}; diff --git a/.storybook/purescript-indexer/output-es/Control.Biapply/index.js b/.storybook/purescript-indexer/output-es/Control.Biapply/index.js new file mode 100644 index 0000000..55e3fb0 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Biapply/index.js @@ -0,0 +1,24 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dBifunctor from "../Data.Bifunctor/index.js"; +import * as Data$dFunction from "../Data.Function/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +const identity = x => x; +const biapplyTuple = {biapply: v => v1 => Data$dTuple.$Tuple(v._1(v1._1), v._2(v1._2)), Bifunctor0: () => Data$dBifunctor.bifunctorTuple}; +const biapply = dict => dict.biapply; +const biapplyFirst = dictBiapply => { + const bimap = dictBiapply.Bifunctor0().bimap; + return a => b => dictBiapply.biapply(bimap(v => identity)(v => identity)(a))(b); +}; +const biapplySecond = dictBiapply => { + const bimap = dictBiapply.Bifunctor0().bimap; + return a => b => dictBiapply.biapply(bimap(Data$dFunction.const)(Data$dFunction.const)(a))(b); +}; +const bilift2 = dictBiapply => { + const bimap = dictBiapply.Bifunctor0().bimap; + return f => g => a => b => dictBiapply.biapply(bimap(f)(g)(a))(b); +}; +const bilift3 = dictBiapply => { + const bimap = dictBiapply.Bifunctor0().bimap; + return f => g => a => b => c => dictBiapply.biapply(dictBiapply.biapply(bimap(f)(g)(a))(b))(c); +}; +export {biapply, biapplyFirst, biapplySecond, biapplyTuple, bilift2, bilift3, identity}; diff --git a/.storybook/purescript-indexer/output-es/Control.Bind/foreign.js b/.storybook/purescript-indexer/output-es/Control.Bind/foreign.js new file mode 100644 index 0000000..fa0dbae --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Bind/foreign.js @@ -0,0 +1,9 @@ +export const 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; + }; +}; diff --git a/.storybook/purescript-indexer/output-es/Control.Bind/index.js b/.storybook/purescript-indexer/output-es/Control.Bind/index.js new file mode 100644 index 0000000..c87c32e --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Bind/index.js @@ -0,0 +1,22 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dApply from "../Control.Apply/index.js"; +import * as Type$dProxy from "../Type.Proxy/index.js"; +import {arrayBind} from "./foreign.js"; +const identity = x => x; +const discard = dict => dict.discard; +const bindProxy = {bind: v => v1 => Type$dProxy.Proxy, Apply0: () => Control$dApply.applyProxy}; +const bindFn = {bind: m => f => x => f(m(x))(x), Apply0: () => Control$dApply.applyFn}; +const bindArray = {bind: arrayBind, Apply0: () => Control$dApply.applyArray}; +const bind = dict => dict.bind; +const bindFlipped = dictBind => b => a => dictBind.bind(a)(b); +const composeKleisliFlipped = dictBind => f => g => a => dictBind.bind(g(a))(f); +const composeKleisli = dictBind => f => g => a => dictBind.bind(f(a))(g); +const discardProxy = {discard: dictBind => dictBind.bind}; +const discardUnit = {discard: dictBind => dictBind.bind}; +const ifM = dictBind => cond => t => f => dictBind.bind(cond)(cond$p => { + if (cond$p) { return t; } + return f; +}); +const join = dictBind => m => dictBind.bind(m)(identity); +export {bind, bindArray, bindFlipped, bindFn, bindProxy, composeKleisli, composeKleisliFlipped, discard, discardProxy, discardUnit, identity, ifM, join}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Control.Category/index.js b/.storybook/purescript-indexer/output-es/Control.Category/index.js new file mode 100644 index 0000000..ae19a7e --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Category/index.js @@ -0,0 +1,5 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dSemigroupoid from "../Control.Semigroupoid/index.js"; +const identity = dict => dict.identity; +const categoryFn = {identity: x => x, Semigroupoid0: () => Control$dSemigroupoid.semigroupoidFn}; +export {categoryFn, identity}; diff --git a/.storybook/purescript-indexer/output-es/Control.Comonad.Cofree.Class/index.js b/.storybook/purescript-indexer/output-es/Control.Comonad.Cofree.Class/index.js new file mode 100644 index 0000000..d738b5b --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Comonad.Cofree.Class/index.js @@ -0,0 +1,30 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dComonad$dCofree from "../Control.Comonad.Cofree/index.js"; +import * as Control$dComonad$dEnv$dTrans from "../Control.Comonad.Env.Trans/index.js"; +import * as Control$dComonad$dStore$dTrans from "../Control.Comonad.Store.Trans/index.js"; +import * as Control$dComonad$dTraced$dTrans from "../Control.Comonad.Traced.Trans/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +const unwrapCofree = dict => dict.unwrapCofree; +const comonadCofreeTracedT = dictFunctor => dictComonadCofree => { + const Functor0 = dictComonadCofree.Functor0(); + const comonadTracedT = Control$dComonad$dTraced$dTrans.comonadTracedT(dictComonadCofree.Comonad1()); + return dictMonoid => { + const comonadTracedT1 = comonadTracedT(dictMonoid); + return {unwrapCofree: v => Functor0.map(Control$dComonad$dTraced$dTrans.TracedT)(dictComonadCofree.unwrapCofree(v)), Functor0: () => Functor0, Comonad1: () => comonadTracedT1}; + }; +}; +const comonadCofreeStoreT = dictFunctor => dictComonadCofree => { + const Functor0 = dictComonadCofree.Functor0(); + const comonadStoreT = Control$dComonad$dStore$dTrans.comonadStoreT(dictComonadCofree.Comonad1()); + return {unwrapCofree: v => Functor0.map(x => Data$dTuple.$Tuple(x, v._2))(dictComonadCofree.unwrapCofree(v._1)), Functor0: () => Functor0, Comonad1: () => comonadStoreT}; +}; +const comonadCofreeEnvT = dictFunctor => dictComonadCofree => { + const Functor0 = dictComonadCofree.Functor0(); + const comonadEnvT = Control$dComonad$dEnv$dTrans.comonadEnvT(dictComonadCofree.Comonad1()); + return {unwrapCofree: v => Functor0.map(x => Data$dTuple.$Tuple(v._1, x))(dictComonadCofree.unwrapCofree(v._2)), Functor0: () => Functor0, Comonad1: () => comonadEnvT}; +}; +const comonadCofreeCofree = dictFunctor => { + const extendCofree1 = Control$dComonad$dCofree.extendCofree(dictFunctor); + return {unwrapCofree: Control$dComonad$dCofree.tail, Functor0: () => dictFunctor, Comonad1: () => ({extract: Control$dComonad$dCofree.head, Extend0: () => extendCofree1})}; +}; +export {comonadCofreeCofree, comonadCofreeEnvT, comonadCofreeStoreT, comonadCofreeTracedT, unwrapCofree}; diff --git a/.storybook/purescript-indexer/output-es/Control.Comonad.Cofree/index.js b/.storybook/purescript-indexer/output-es/Control.Comonad.Cofree/index.js new file mode 100644 index 0000000..d9191b4 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Comonad.Cofree/index.js @@ -0,0 +1,223 @@ +// | The _cofree comonad_ for a `Functor`. +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dFree from "../Control.Monad.Free/index.js"; +import * as Control$dMonad$dRec$dClass from "../Control.Monad.Rec.Class/index.js"; +import * as Control$dMonad$dState$dTrans from "../Control.Monad.State.Trans/index.js"; +import * as Data$dIdentity from "../Data.Identity/index.js"; +import * as Data$dLazy from "../Data.Lazy/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +const identity = x => x; +const state = /* #__PURE__ */ (() => Control$dMonad$dState$dTrans.monadStateStateT(Data$dIdentity.monadIdentity).state)(); +const monadRecStateT = /* #__PURE__ */ Control$dMonad$dState$dTrans.monadRecStateT(Control$dMonad$dRec$dClass.monadRecIdentity); +const tail = v => Data$dLazy.force(v)._2; +const mkCofree = a => t => Data$dLazy.defer(v => Data$dTuple.$Tuple(a, t)); +const lazyCofree = {defer: k => Data$dLazy.defer(v => Data$dLazy.force(k(Data$dUnit.unit)))}; +const hoistCofree = dictFunctor => nat => v => { + const $3 = Data$dTuple.functorTuple.map((() => { + const $3 = dictFunctor.map(hoistCofree(dictFunctor)(nat)); + return x => nat($3(x)); + })()); + return Data$dLazy.defer(v$1 => $3(Data$dLazy.force(v))); +}; +const head = v => Data$dLazy.force(v)._1; +const functorCofree = dictFunctor => ( + { + map: f => { + const loop = v => Data$dLazy.defer(v$1 => { + const $5 = Data$dLazy.force(v); + return Data$dTuple.$Tuple(f($5._1), dictFunctor.map(loop)($5._2)); + }); + return loop; + } + } +); +const functorWithIndexCofree = dictFunctor => { + const functorCofree1 = functorCofree(dictFunctor); + return { + mapWithIndex: f => { + const loop = n => v => Data$dLazy.defer(v$1 => { + const $7 = Data$dLazy.force(v); + return Data$dTuple.$Tuple(f(n)($7._1), dictFunctor.map(loop(n + 1 | 0))($7._2)); + }); + return loop(0); + }, + Functor0: () => functorCofree1 + }; +}; +const foldableCofree = dictFoldable => ( + { + foldr: f => { + const go = fa => b => f(Data$dLazy.force(fa)._1)(dictFoldable.foldr(go)(b)(Data$dLazy.force(fa)._2)); + return b => a => go(a)(b); + }, + foldl: f => { + const go = b => fa => dictFoldable.foldl(go)(f(b)(Data$dLazy.force(fa)._1))(Data$dLazy.force(fa)._2); + return go; + }, + foldMap: dictMonoid => { + const append = dictMonoid.Semigroup0().append; + const foldMap1 = dictFoldable.foldMap(dictMonoid); + return f => { + const go = fa => append(f(Data$dLazy.force(fa)._1))(foldMap1(go)(Data$dLazy.force(fa)._2)); + return go; + }; + } + } +); +const traversableCofree = dictTraversable => { + const functorCofree1 = functorCofree(dictTraversable.Functor0()); + const foldableCofree1 = foldableCofree(dictTraversable.Foldable1()); + return { + sequence: dictApplicative => traversableCofree(dictTraversable).traverse(dictApplicative)(identity), + traverse: dictApplicative => { + const Apply0 = dictApplicative.Apply0(); + const map2 = Apply0.Functor0().map; + const traverse1 = dictTraversable.traverse(dictApplicative); + return f => { + const loop = ta => Apply0.apply(map2(mkCofree)(f(Data$dLazy.force(ta)._1)))(traverse1(loop)(Data$dLazy.force(ta)._2)); + return loop; + }; + }, + Functor0: () => functorCofree1, + Foldable1: () => foldableCofree1 + }; +}; +const extendCofree = dictFunctor => { + const functorCofree1 = functorCofree(dictFunctor); + return { + extend: f => { + const loop = v => Data$dLazy.defer(v$1 => Data$dTuple.$Tuple(f(v), dictFunctor.map(loop)(Data$dLazy.force(v)._2))); + return loop; + }, + Functor0: () => functorCofree1 + }; +}; +const eqCofree = dictEq1 => dictEq => ( + {eq: x => y => dictEq.eq(Data$dLazy.force(x)._1)(Data$dLazy.force(y)._1) && dictEq1.eq1(eqCofree(dictEq1)(dictEq))(Data$dLazy.force(x)._2)(Data$dLazy.force(y)._2)} +); +const ordCofree = dictOrd1 => { + const eqCofree1 = eqCofree(dictOrd1.Eq10()); + return dictOrd => { + const eqCofree2 = eqCofree1(dictOrd.Eq0()); + return { + compare: x => y => { + const v = dictOrd.compare(Data$dLazy.force(x)._1)(Data$dLazy.force(y)._1); + if (v.tag === "EQ") { return dictOrd1.compare1(ordCofree(dictOrd1)(dictOrd))(Data$dLazy.force(x)._2)(Data$dLazy.force(y)._2); } + return v; + }, + Eq0: () => eqCofree2 + }; + }; +}; +const eq1Cofree = dictEq1 => ({eq1: dictEq => eqCofree(dictEq1)(dictEq).eq}); +const ord1Cofree = dictOrd1 => { + const ordCofree1 = ordCofree(dictOrd1); + const $2 = dictOrd1.Eq10(); + const eq1Cofree1 = {eq1: dictEq => eqCofree($2)(dictEq).eq}; + return {compare1: dictOrd => ordCofree1(dictOrd).compare, Eq10: () => eq1Cofree1}; +}; +const deferCofree = x => Data$dLazy.defer(x); +const semigroupCofree = dictApply => { + const map2 = dictApply.Functor0().map; + return dictSemigroup => ( + { + append: x => y => Data$dLazy.defer(v => Data$dTuple.$Tuple( + dictSemigroup.append(Data$dLazy.force(x)._1)(Data$dLazy.force(y)._1), + dictApply.apply(map2(semigroupCofree(dictApply)(dictSemigroup).append)(Data$dLazy.force(x)._2))(Data$dLazy.force(y)._2) + )) + } + ); +}; +const monoidCofree = dictApplicative => { + const semigroupCofree1 = semigroupCofree(dictApplicative.Apply0()); + return dictMonoid => { + const semigroupCofree2 = semigroupCofree1(dictMonoid.Semigroup0()); + return { + mempty: Data$dLazy.defer(v => Data$dTuple.$Tuple(dictMonoid.mempty, dictApplicative.pure(monoidCofree(dictApplicative)(dictMonoid).mempty))), + Semigroup0: () => semigroupCofree2 + }; + }; +}; +const comonadCofree = dictFunctor => { + const extendCofree1 = extendCofree(dictFunctor); + return {extract: head, Extend0: () => extendCofree1}; +}; +const explore = dictFunctor => { + const runFreeM = Control$dMonad$dFree.runFreeM(dictFunctor)(monadRecStateT); + return dictFunctor1 => pair => m => w => { + const v = runFreeM(ff => state(cof => pair(dictFunctor.map(Data$dTuple.Tuple)(ff))(Data$dLazy.force(cof)._2)))(m)(w); + return v._1(Data$dLazy.force(v._2)._1); + }; +}; +const exploreM = dictFunctor => dictFunctor1 => dictMonadRec => { + const map3 = dictMonadRec.Monad0().Bind1().Apply0().Functor0().map; + const runFreeM1 = Control$dMonad$dFree.runFreeM(dictFunctor)(Control$dMonad$dState$dTrans.monadRecStateT(dictMonadRec)); + return pair => m => w => map3(v => v._1(Data$dLazy.force(v._2)._1))(runFreeM1(ff => cof => pair(dictFunctor.map(Data$dTuple.Tuple)(ff))(Data$dLazy.force(cof)._2))(m)(w)); +}; +const buildCofree = dictFunctor => k => s => Data$dLazy.defer(v => { + const $4 = k(s); + return Data$dTuple.$Tuple($4._1, dictFunctor.map(buildCofree(dictFunctor)(k))($4._2)); +}); +const monadCofree = dictAlternative => ({Applicative0: () => applicativeCofree(dictAlternative), Bind1: () => bindCofree(dictAlternative)}); +const bindCofree = dictAlternative => { + const Alt0 = dictAlternative.Plus1().Alt0(); + const map2 = Alt0.Functor0().map; + return { + bind: fa => f => { + const loop = fa$p => { + const fh = f(Data$dLazy.force(fa$p)._1); + const $8 = Data$dLazy.force(fh)._1; + const $9 = Alt0.alt(Data$dLazy.force(fh)._2)(map2(loop)(Data$dLazy.force(fa$p)._2)); + return Data$dLazy.defer(v => Data$dTuple.$Tuple($8, $9)); + }; + return loop(fa); + }, + Apply0: () => applyCofree(dictAlternative) + }; +}; +const applyCofree = dictAlternative => { + const functorCofree1 = functorCofree(dictAlternative.Plus1().Alt0().Functor0()); + return { + apply: (() => { + const bind = bindCofree(dictAlternative).bind; + const pure = applicativeCofree(dictAlternative).pure; + return f => a => bind(f)(f$p => bind(a)(a$p => pure(f$p(a$p)))); + })(), + Functor0: () => functorCofree1 + }; +}; +const applicativeCofree = dictAlternative => { + const empty = dictAlternative.Plus1().empty; + return {pure: a => Data$dLazy.defer(v => Data$dTuple.$Tuple(a, empty)), Apply0: () => applyCofree(dictAlternative)}; +}; +export { + applicativeCofree, + applyCofree, + bindCofree, + buildCofree, + comonadCofree, + deferCofree, + eq1Cofree, + eqCofree, + explore, + exploreM, + extendCofree, + foldableCofree, + functorCofree, + functorWithIndexCofree, + head, + hoistCofree, + identity, + lazyCofree, + mkCofree, + monadCofree, + monadRecStateT, + monoidCofree, + ord1Cofree, + ordCofree, + semigroupCofree, + state, + tail, + traversableCofree +}; diff --git a/.storybook/purescript-indexer/output-es/Control.Comonad.Env.Class/index.js b/.storybook/purescript-indexer/output-es/Control.Comonad.Env.Class/index.js new file mode 100644 index 0000000..068d1be --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Comonad.Env.Class/index.js @@ -0,0 +1,18 @@ +// | This module defines the `ComonadEnv` type class and its instances. +import * as $runtime from "../runtime.js"; +import * as Control$dComonad$dEnv$dTrans from "../Control.Comonad.Env.Trans/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +const local = dict => dict.local; +const comonadAskTuple = {ask: Data$dTuple.fst, Comonad0: () => Data$dTuple.comonadTuple}; +const comonadEnvTuple = {local: f => v => Data$dTuple.$Tuple(f(v._1), v._2), ComonadAsk0: () => comonadAskTuple}; +const comonadAskEnvT = dictComonad => { + const comonadEnvT = Control$dComonad$dEnv$dTrans.comonadEnvT(dictComonad); + return {ask: v => v._1, Comonad0: () => comonadEnvT}; +}; +const comonadEnvEnvT = dictComonad => { + const comonadEnvT = Control$dComonad$dEnv$dTrans.comonadEnvT(dictComonad); + return {local: f => v => Data$dTuple.$Tuple(f(v._1), v._2), ComonadAsk0: () => ({ask: v => v._1, Comonad0: () => comonadEnvT})}; +}; +const ask = dict => dict.ask; +const asks = dictComonadAsk => f => x => f(dictComonadAsk.ask(x)); +export {ask, asks, comonadAskEnvT, comonadAskTuple, comonadEnvEnvT, comonadEnvTuple, local}; diff --git a/.storybook/purescript-indexer/output-es/Control.Comonad.Env.Trans/index.js b/.storybook/purescript-indexer/output-es/Control.Comonad.Env.Trans/index.js new file mode 100644 index 0000000..3cffb6f --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Comonad.Env.Trans/index.js @@ -0,0 +1,112 @@ +// | This module defines the environment comonad transformer, `EnvT`. +import * as $runtime from "../runtime.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +const EnvT = x => x; +const withEnvT = f => v => Data$dTuple.$Tuple(f(v._1), v._2); +const runEnvT = v => v; +const newtypeEnvT = {Coercible0: () => undefined}; +const mapEnvT = f => v => Data$dTuple.$Tuple(v._1, f(v._2)); +const functorEnvT = dictFunctor => ({map: f => v => Data$dTuple.$Tuple(v._1, dictFunctor.map(f)(v._2))}); +const functorWithIndexEnvT = dictFunctorWithIndex => { + const $1 = dictFunctorWithIndex.Functor0(); + const functorEnvT1 = {map: f => v => Data$dTuple.$Tuple(v._1, $1.map(f)(v._2))}; + return {mapWithIndex: f => v => Data$dTuple.$Tuple(v._1, dictFunctorWithIndex.mapWithIndex(f)(v._2)), Functor0: () => functorEnvT1}; +}; +const foldableEnvT = dictFoldable => ( + { + foldl: fn => a => v => dictFoldable.foldl(fn)(a)(v._2), + foldr: fn => a => v => dictFoldable.foldr(fn)(a)(v._2), + foldMap: dictMonoid => { + const foldMap1 = dictFoldable.foldMap(dictMonoid); + return fn => v => foldMap1(fn)(v._2); + } + } +); +const foldableWithIndexEnvT = dictFoldableWithIndex => { + const $1 = dictFoldableWithIndex.Foldable0(); + const foldableEnvT1 = { + foldl: fn => a => v => $1.foldl(fn)(a)(v._2), + foldr: fn => a => v => $1.foldr(fn)(a)(v._2), + foldMap: dictMonoid => { + const foldMap1 = $1.foldMap(dictMonoid); + return fn => v => foldMap1(fn)(v._2); + } + }; + return { + foldlWithIndex: f => a => v => dictFoldableWithIndex.foldlWithIndex(f)(a)(v._2), + foldrWithIndex: f => a => v => dictFoldableWithIndex.foldrWithIndex(f)(a)(v._2), + foldMapWithIndex: dictMonoid => { + const foldMapWithIndex1 = dictFoldableWithIndex.foldMapWithIndex(dictMonoid); + return f => v => foldMapWithIndex1(f)(v._2); + }, + Foldable0: () => foldableEnvT1 + }; +}; +const traversableEnvT = dictTraversable => { + const $1 = dictTraversable.Functor0(); + const functorEnvT1 = {map: f => v => Data$dTuple.$Tuple(v._1, $1.map(f)(v._2))}; + const $3 = dictTraversable.Foldable1(); + const foldableEnvT1 = { + foldl: fn => a => v => $3.foldl(fn)(a)(v._2), + foldr: fn => a => v => $3.foldr(fn)(a)(v._2), + foldMap: dictMonoid => { + const foldMap1 = $3.foldMap(dictMonoid); + return fn => v => foldMap1(fn)(v._2); + } + }; + return { + sequence: dictApplicative => { + const map1 = dictApplicative.Apply0().Functor0().map; + const sequence1 = dictTraversable.sequence(dictApplicative); + return v => map1(Data$dTuple.Tuple(v._1))(sequence1(v._2)); + }, + traverse: dictApplicative => { + const map1 = dictApplicative.Apply0().Functor0().map; + const traverse1 = dictTraversable.traverse(dictApplicative); + return f => v => map1(Data$dTuple.Tuple(v._1))(traverse1(f)(v._2)); + }, + Functor0: () => functorEnvT1, + Foldable1: () => foldableEnvT1 + }; +}; +const traversableWithIndexEnvT = dictTraversableWithIndex => { + const functorWithIndexEnvT1 = functorWithIndexEnvT(dictTraversableWithIndex.FunctorWithIndex0()); + const foldableWithIndexEnvT1 = foldableWithIndexEnvT(dictTraversableWithIndex.FoldableWithIndex1()); + const traversableEnvT1 = traversableEnvT(dictTraversableWithIndex.Traversable2()); + return { + traverseWithIndex: dictApplicative => { + const map1 = dictApplicative.Apply0().Functor0().map; + const traverseWithIndex1 = dictTraversableWithIndex.traverseWithIndex(dictApplicative); + return f => v => map1(Data$dTuple.Tuple(v._1))(traverseWithIndex1(f)(v._2)); + }, + FunctorWithIndex0: () => functorWithIndexEnvT1, + FoldableWithIndex1: () => foldableWithIndexEnvT1, + Traversable2: () => traversableEnvT1 + }; +}; +const extendEnvT = dictExtend => { + const Functor0 = dictExtend.Functor0(); + const functorEnvT1 = {map: f => v => Data$dTuple.$Tuple(v._1, Functor0.map(f)(v._2))}; + return {extend: f => v => Data$dTuple.$Tuple(v._1, Functor0.map(f)(dictExtend.extend(Data$dTuple.Tuple(v._1))(v._2))), Functor0: () => functorEnvT1}; +}; +const comonadTransEnvT = {lower: dictComonad => v => v._2}; +const comonadEnvT = dictComonad => { + const extendEnvT1 = extendEnvT(dictComonad.Extend0()); + return {extract: v => dictComonad.extract(v._2), Extend0: () => extendEnvT1}; +}; +export { + EnvT, + comonadEnvT, + comonadTransEnvT, + extendEnvT, + foldableEnvT, + foldableWithIndexEnvT, + functorEnvT, + functorWithIndexEnvT, + mapEnvT, + newtypeEnvT, + runEnvT, + traversableEnvT, + traversableWithIndexEnvT, + withEnvT +}; diff --git a/.storybook/purescript-indexer/output-es/Control.Comonad.Env/index.js b/.storybook/purescript-indexer/output-es/Control.Comonad.Env/index.js new file mode 100644 index 0000000..c226a01 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Comonad.Env/index.js @@ -0,0 +1,9 @@ +// | This module defines the `Env` comonad. +import * as $runtime from "../runtime.js"; +import * as Control$dComonad$dEnv$dTrans from "../Control.Comonad.Env.Trans/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +const withEnv = Control$dComonad$dEnv$dTrans.withEnvT; +const runEnv = v => Data$dTuple.$Tuple(v._1, v._2); +const mapEnv = f => v => Data$dTuple.$Tuple(v._1, f(v._2)); +const env = e => a => Data$dTuple.$Tuple(e, a); +export {env, mapEnv, runEnv, withEnv}; diff --git a/.storybook/purescript-indexer/output-es/Control.Comonad.Store.Class/index.js b/.storybook/purescript-indexer/output-es/Control.Comonad.Store.Class/index.js new file mode 100644 index 0000000..12cd13f --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Comonad.Store.Class/index.js @@ -0,0 +1,56 @@ +// | This module defines the `ComonadStore` type class and its instances. +import * as $runtime from "../runtime.js"; +import * as Control$dComonad$dEnv$dTrans from "../Control.Comonad.Env.Trans/index.js"; +import * as Control$dComonad$dStore$dTrans from "../Control.Comonad.Store.Trans/index.js"; +import * as Control$dComonad$dTraced$dTrans from "../Control.Comonad.Traced.Trans/index.js"; +import * as Control$dExtend from "../Control.Extend/index.js"; +const pos = dict => dict.pos; +const peek = dict => dict.peek; +const peeks = dictComonadStore => f => x => dictComonadStore.peek(f(dictComonadStore.pos(x)))(x); +const seeks = dictComonadStore => { + const duplicate = dictComonadStore.Comonad0().Extend0().extend(Control$dExtend.identity); + return f => x => { + const $4 = duplicate(x); + return dictComonadStore.peek(f(dictComonadStore.pos($4)))($4); + }; +}; +const seek = dictComonadStore => { + const duplicate = dictComonadStore.Comonad0().Extend0().extend(Control$dExtend.identity); + return s => { + const $3 = dictComonadStore.peek(s); + return x => $3(duplicate(x)); + }; +}; +const experiment = dictComonadStore => dictFunctor => f => x => dictFunctor.map(a => dictComonadStore.peek(a)(x))(f(dictComonadStore.pos(x))); +const comonadStoreTracedT = dictComonadStore => { + const Comonad0 = dictComonadStore.Comonad0(); + const comonadTracedT = Control$dComonad$dTraced$dTrans.comonadTracedT(Comonad0); + return dictMonoid => { + const map = Comonad0.Extend0().Functor0().map; + const comonadTracedT1 = comonadTracedT(dictMonoid); + return { + pos: x => dictComonadStore.pos(map(f => f(dictMonoid.mempty))(x)), + peek: s => { + const $7 = dictComonadStore.peek(s); + return x => $7(map(f => f(dictMonoid.mempty))(x)); + }, + Comonad0: () => comonadTracedT1 + }; + }; +}; +const comonadStoreStoreT = dictComonad => { + const comonadStoreT = Control$dComonad$dStore$dTrans.comonadStoreT(dictComonad); + return {pos: v => v._2, peek: s => v => dictComonad.extract(v._1)(s), Comonad0: () => comonadStoreT}; +}; +const comonadStoreEnvT = dictComonadStore => { + const comonadEnvT = Control$dComonad$dEnv$dTrans.comonadEnvT(dictComonadStore.Comonad0()); + return { + pos: x => dictComonadStore.pos(x._2), + peek: s => { + const $3 = dictComonadStore.peek(s); + return x => $3(x._2); + }, + Comonad0: () => comonadEnvT + }; +}; +export {comonadStoreEnvT, comonadStoreStoreT, comonadStoreTracedT, experiment, peek, peeks, pos, seek, seeks}; diff --git a/.storybook/purescript-indexer/output-es/Control.Comonad.Store.Trans/index.js b/.storybook/purescript-indexer/output-es/Control.Comonad.Store.Trans/index.js new file mode 100644 index 0000000..8c28381 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Comonad.Store.Trans/index.js @@ -0,0 +1,22 @@ +// | This module defines the store comonad transformer, `StoreT`. +import * as $runtime from "../runtime.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +const StoreT = x => x; +const runStoreT = v => v; +const newtypeStoreT = {Coercible0: () => undefined}; +const functorStoreT = dictFunctor => ({map: f => v => Data$dTuple.$Tuple(dictFunctor.map(h => x => f(h(x)))(v._1), v._2)}); +const extendStoreT = dictExtend => { + const functorStoreT1 = functorStoreT(dictExtend.Functor0()); + return {extend: f => v => Data$dTuple.$Tuple(dictExtend.extend(w$p => s$p => f(Data$dTuple.$Tuple(w$p, s$p)))(v._1), v._2), Functor0: () => functorStoreT1}; +}; +const comonadTransStoreT = { + lower: dictComonad => { + const map = dictComonad.Extend0().Functor0().map; + return v => map(v1 => v1(v._2))(v._1); + } +}; +const comonadStoreT = dictComonad => { + const extendStoreT1 = extendStoreT(dictComonad.Extend0()); + return {extract: v => dictComonad.extract(v._1)(v._2), Extend0: () => extendStoreT1}; +}; +export {StoreT, comonadStoreT, comonadTransStoreT, extendStoreT, functorStoreT, newtypeStoreT, runStoreT}; diff --git a/.storybook/purescript-indexer/output-es/Control.Comonad.Store/index.js b/.storybook/purescript-indexer/output-es/Control.Comonad.Store/index.js new file mode 100644 index 0000000..07ef3c5 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Comonad.Store/index.js @@ -0,0 +1,6 @@ +// | This module defines the `Store` comonad. +import * as $runtime from "../runtime.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +const store = f => x => Data$dTuple.$Tuple(f, x); +const runStore = v => Data$dTuple.$Tuple(v._1, v._2); +export {runStore, store}; diff --git a/.storybook/purescript-indexer/output-es/Control.Comonad.Traced.Class/index.js b/.storybook/purescript-indexer/output-es/Control.Comonad.Traced.Class/index.js new file mode 100644 index 0000000..fc7d75d --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Comonad.Traced.Class/index.js @@ -0,0 +1,20 @@ +// | This module defines the `ComonadTraced` type class and its instances. +import * as $runtime from "../runtime.js"; +import * as Control$dComonad$dTraced$dTrans from "../Control.Comonad.Traced.Trans/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +const track = dict => dict.track; +const tracks = dictComonadTraced => { + const extract = dictComonadTraced.Comonad0().extract; + return f => w => dictComonadTraced.track(f(extract(w)))(w); +}; +const listens = dictFunctor => f => v => dictFunctor.map(g => t => Data$dTuple.$Tuple(g(t), f(t)))(v); +const listen = dictFunctor => v => dictFunctor.map(f => t => Data$dTuple.$Tuple(f(t), t))(v); +const comonadTracedTracedT = dictComonad => { + const comonadTracedT = Control$dComonad$dTraced$dTrans.comonadTracedT(dictComonad); + return dictMonoid => { + const comonadTracedT1 = comonadTracedT(dictMonoid); + return {track: t => v => dictComonad.extract(v)(t), Comonad0: () => comonadTracedT1}; + }; +}; +const censor = dictFunctor => f => v => dictFunctor.map(v1 => x => v1(f(x)))(v); +export {censor, comonadTracedTracedT, listen, listens, track, tracks}; diff --git a/.storybook/purescript-indexer/output-es/Control.Comonad.Traced.Trans/index.js b/.storybook/purescript-indexer/output-es/Control.Comonad.Traced.Trans/index.js new file mode 100644 index 0000000..7142c0d --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Comonad.Traced.Trans/index.js @@ -0,0 +1,30 @@ +// | This module defines the cowriter comonad transformer, `TracedT`. +import * as $runtime from "../runtime.js"; +const TracedT = x => x; +const runTracedT = v => v; +const newtypeTracedT = {Coercible0: () => undefined}; +const functorTracedT = dictFunctor => ({map: f => v => dictFunctor.map(g => t => f(g(t)))(v)}); +const extendTracedT = dictExtend => { + const Functor0 = dictExtend.Functor0(); + const functorTracedT1 = {map: f => v => Functor0.map(g => t => f(g(t)))(v)}; + return dictSemigroup => ({extend: f => v => dictExtend.extend(w$p => t => f(Functor0.map(h => t$p => h(dictSemigroup.append(t)(t$p)))(w$p)))(v), Functor0: () => functorTracedT1}); +}; +const comonadTransTracedT = dictMonoid => ( + { + lower: dictComonad => { + const map = dictComonad.Extend0().Functor0().map; + return v => map(f => f(dictMonoid.mempty))(v); + } + } +); +const comonadTracedT = dictComonad => { + const $1 = dictComonad.Extend0(); + const Functor0 = $1.Functor0(); + const functorTracedT1 = {map: f => v => Functor0.map(g => t => f(g(t)))(v)}; + return dictMonoid => { + const $5 = dictMonoid.Semigroup0(); + const extendTracedT2 = {extend: f => v => $1.extend(w$p => t => f(Functor0.map(h => t$p => h($5.append(t)(t$p)))(w$p)))(v), Functor0: () => functorTracedT1}; + return {extract: v => dictComonad.extract(v)(dictMonoid.mempty), Extend0: () => extendTracedT2}; + }; +}; +export {TracedT, comonadTracedT, comonadTransTracedT, extendTracedT, functorTracedT, newtypeTracedT, runTracedT}; diff --git a/.storybook/purescript-indexer/output-es/Control.Comonad.Traced/index.js b/.storybook/purescript-indexer/output-es/Control.Comonad.Traced/index.js new file mode 100644 index 0000000..e58c9fb --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Comonad.Traced/index.js @@ -0,0 +1,5 @@ +// | This module defines the `Traced` comonad. +import * as $runtime from "../runtime.js"; +const traced = x => x; +const runTraced = v => v; +export {runTraced, traced}; diff --git a/.storybook/purescript-indexer/output-es/Control.Comonad.Trans.Class/index.js b/.storybook/purescript-indexer/output-es/Control.Comonad.Trans.Class/index.js new file mode 100644 index 0000000..924866a --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Comonad.Trans.Class/index.js @@ -0,0 +1,4 @@ +// | This module defines the `ComonadTrans` type class of _comonad transformers_. +import * as $runtime from "../runtime.js"; +const lower = dict => dict.lower; +export {lower}; diff --git a/.storybook/purescript-indexer/output-es/Control.Comonad/index.js b/.storybook/purescript-indexer/output-es/Control.Comonad/index.js new file mode 100644 index 0000000..0972b7b --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Comonad/index.js @@ -0,0 +1,3 @@ +import * as $runtime from "../runtime.js"; +const extract = dict => dict.extract; +export {extract}; diff --git a/.storybook/purescript-indexer/output-es/Control.Extend/foreign.js b/.storybook/purescript-indexer/output-es/Control.Extend/foreign.js new file mode 100644 index 0000000..3c8ac86 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Extend/foreign.js @@ -0,0 +1,7 @@ +export const arrayExtend = function(f) { + return function(xs) { + return xs.map(function (_, i, xs) { + return f(xs.slice(i)); + }); + }; +}; diff --git a/.storybook/purescript-indexer/output-es/Control.Extend/index.js b/.storybook/purescript-indexer/output-es/Control.Extend/index.js new file mode 100644 index 0000000..b9aefb1 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Extend/index.js @@ -0,0 +1,13 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dFunctor from "../Data.Functor/index.js"; +import {arrayExtend} from "./foreign.js"; +const identity = x => x; +const extendFn = dictSemigroup => ({extend: f => g => w => f(w$p => g(dictSemigroup.append(w)(w$p))), Functor0: () => Data$dFunctor.functorFn}); +const extendArray = {extend: arrayExtend, Functor0: () => Data$dFunctor.functorArray}; +const extend = dict => dict.extend; +const extendFlipped = dictExtend => w => f => dictExtend.extend(f)(w); +const duplicate = dictExtend => dictExtend.extend(identity); +const composeCoKleisliFlipped = dictExtend => f => g => w => f(dictExtend.extend(g)(w)); +const composeCoKleisli = dictExtend => f => g => w => g(dictExtend.extend(f)(w)); +export {composeCoKleisli, composeCoKleisliFlipped, duplicate, extend, extendArray, extendFlipped, extendFn, identity}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Control.Lazy/index.js b/.storybook/purescript-indexer/output-es/Control.Lazy/index.js new file mode 100644 index 0000000..f3a25ee --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Lazy/index.js @@ -0,0 +1,11 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +const lazyUnit = {defer: v => Data$dUnit.unit}; +const lazyFn = {defer: f => x => f(Data$dUnit.unit)(x)}; +const defer = dict => dict.defer; +const fix = dictLazy => f => { + const go$lazy = $runtime.binding(() => dictLazy.defer(v => f(go$lazy()))); + const go = go$lazy(); + return go; +}; +export {defer, fix, lazyFn, lazyUnit}; diff --git a/.storybook/purescript-indexer/output-es/Control.Monad.Cont.Class/index.js b/.storybook/purescript-indexer/output-es/Control.Monad.Cont.Class/index.js new file mode 100644 index 0000000..037f677 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Monad.Cont.Class/index.js @@ -0,0 +1,4 @@ +// | This module defines the `MonadCont` type class and its instances. +import * as $runtime from "../runtime.js"; +const callCC = dict => dict.callCC; +export {callCC}; diff --git a/.storybook/purescript-indexer/output-es/Control.Monad.Cont.Trans/index.js b/.storybook/purescript-indexer/output-es/Control.Monad.Cont.Trans/index.js new file mode 100644 index 0000000..594c34f --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Monad.Cont.Trans/index.js @@ -0,0 +1,113 @@ +// | This module defines the CPS monad transformer. +import * as $runtime from "../runtime.js"; +const ContT = x => x; +const withContT = f => v => k => v(f(k)); +const runContT = v => k => v(k); +const newtypeContT = {Coercible0: () => undefined}; +const monadTransContT = {lift: dictMonad => dictMonad.Bind1().bind}; +const mapContT = f => v => k => f(v(k)); +const functorContT = dictFunctor => ({map: f => v => k => v(a => k(f(a)))}); +const applyContT = dictApply => { + const functorContT1 = {map: f => v => k => v(a => k(f(a)))}; + return {apply: v => v1 => k => v(g => v1(a => k(g(a)))), Functor0: () => functorContT1}; +}; +const bindContT = dictBind => { + const functorContT1 = {map: f => v => k => v(a => k(f(a)))}; + const applyContT1 = {apply: v => v1 => k => v(g => v1(a => k(g(a)))), Functor0: () => functorContT1}; + return {bind: v => k => k$p => v(a => k(a)(k$p)), Apply0: () => applyContT1}; +}; +const semigroupContT = dictApply => dictSemigroup => ( + { + append: a => b => k => a(a$1 => { + const $6 = dictSemigroup.append(a$1); + return b(a$2 => k($6(a$2))); + }) + } +); +const applicativeContT = dictApplicative => { + const functorContT1 = {map: f => v => k => v(a => k(f(a)))}; + const applyContT1 = {apply: v => v1 => k => v(g => v1(a => k(g(a)))), Functor0: () => functorContT1}; + return {pure: a => k => k(a), Apply0: () => applyContT1}; +}; +const monadContT = dictMonad => { + const functorContT1 = {map: f => v => k => v(a => k(f(a)))}; + const applyContT1 = {apply: v => v1 => k => v(g => v1(a => k(g(a)))), Functor0: () => functorContT1}; + const applicativeContT1 = {pure: a => k => k(a), Apply0: () => applyContT1}; + const functorContT1$1 = {map: f => v => k => v(a => k(f(a)))}; + const applyContT1$1 = {apply: v => v1 => k => v(g => v1(a => k(g(a)))), Functor0: () => functorContT1$1}; + const bindContT1 = {bind: v => k => k$p => v(a => k(a)(k$p)), Apply0: () => applyContT1$1}; + return {Applicative0: () => applicativeContT1, Bind1: () => bindContT1}; +}; +const monadAskContT = dictMonadAsk => { + const Monad0 = dictMonadAsk.Monad0(); + const monadContT1 = monadContT(Monad0); + return {ask: Monad0.Bind1().bind(dictMonadAsk.ask), Monad0: () => monadContT1}; +}; +const monadReaderContT = dictMonadReader => { + const MonadAsk0 = dictMonadReader.MonadAsk0(); + const bind = MonadAsk0.Monad0().Bind1().bind; + const monadAskContT1 = monadAskContT(MonadAsk0); + return { + local: f => v => k => bind(MonadAsk0.ask)(r => dictMonadReader.local(f)(v((() => { + const $8 = dictMonadReader.local(v$1 => r); + return x => $8(k(x)); + })()))), + MonadAsk0: () => monadAskContT1 + }; +}; +const monadContContT = dictMonad => { + const monadContT1 = monadContT(dictMonad); + return {callCC: f => k => f(a => v1 => k(a))(k), Monad0: () => monadContT1}; +}; +const monadEffectContT = dictMonadEffect => { + const Monad0 = dictMonadEffect.Monad0(); + const monadContT1 = monadContT(Monad0); + return { + liftEffect: (() => { + const $3 = Monad0.Bind1().bind; + return x => $3(dictMonadEffect.liftEffect(x)); + })(), + Monad0: () => monadContT1 + }; +}; +const monadStateContT = dictMonadState => { + const Monad0 = dictMonadState.Monad0(); + const monadContT1 = monadContT(Monad0); + return { + state: (() => { + const $3 = Monad0.Bind1().bind; + return x => $3(dictMonadState.state(x)); + })(), + Monad0: () => monadContT1 + }; +}; +const monoidContT = dictApplicative => dictMonoid => { + const $2 = dictMonoid.Semigroup0(); + const semigroupContT2 = { + append: a => b => k => a(a$1 => { + const $7 = $2.append(a$1); + return b(a$2 => k($7(a$2))); + }) + }; + return {mempty: k => k(dictMonoid.mempty), Semigroup0: () => semigroupContT2}; +}; +export { + ContT, + applicativeContT, + applyContT, + bindContT, + functorContT, + mapContT, + monadAskContT, + monadContContT, + monadContT, + monadEffectContT, + monadReaderContT, + monadStateContT, + monadTransContT, + monoidContT, + newtypeContT, + runContT, + semigroupContT, + withContT +}; diff --git a/.storybook/purescript-indexer/output-es/Control.Monad.Cont/index.js b/.storybook/purescript-indexer/output-es/Control.Monad.Cont/index.js new file mode 100644 index 0000000..dd9d146 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Monad.Cont/index.js @@ -0,0 +1,7 @@ +// | This module defines the `Cont`inuation monad. +import * as $runtime from "../runtime.js"; +const withCont = f => v => k => v(f(x => k(x))); +const runCont = cc => k => cc(x => k(x)); +const mapCont = f => v => k => f(v(k)); +const cont = f => c => f(x => c(x)); +export {cont, mapCont, runCont, withCont}; diff --git a/.storybook/purescript-indexer/output-es/Control.Monad.Error.Class/index.js b/.storybook/purescript-indexer/output-es/Control.Monad.Error.Class/index.js new file mode 100644 index 0000000..cc3f8b5 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Monad.Error.Class/index.js @@ -0,0 +1,90 @@ +// | This module defines the `MonadError` type class and its instances. +import * as $runtime from "../runtime.js"; +import * as Data$dEither from "../Data.Either/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +import * as Effect from "../Effect/index.js"; +import * as Effect$dException from "../Effect.Exception/index.js"; +const throwError = dict => dict.throwError; +const monadThrowMaybe = {throwError: v => Data$dMaybe.Nothing, Monad0: () => Data$dMaybe.monadMaybe}; +const monadThrowEither = {throwError: Data$dEither.Left, Monad0: () => Data$dEither.monadEither}; +const monadThrowEffect = {throwError: Effect$dException.throwException, Monad0: () => Effect.monadEffect}; +const monadErrorMaybe = { + catchError: v => v1 => { + if (v.tag === "Nothing") { return v1(Data$dUnit.unit); } + if (v.tag === "Just") { return Data$dMaybe.$Maybe("Just", v._1); } + $runtime.fail(); + }, + MonadThrow0: () => monadThrowMaybe +}; +const monadErrorEither = { + catchError: v => v1 => { + if (v.tag === "Left") { return v1(v._1); } + if (v.tag === "Right") { return Data$dEither.$Either("Right", v._1); } + $runtime.fail(); + }, + MonadThrow0: () => monadThrowEither +}; +const monadErrorEffect = {catchError: b => a => Effect$dException.catchException(a)(b), MonadThrow0: () => monadThrowEffect}; +const liftMaybe = dictMonadThrow => { + const pure = dictMonadThrow.Monad0().Applicative0().pure; + return error => { + const $3 = dictMonadThrow.throwError(error); + return v2 => { + if (v2.tag === "Nothing") { return $3; } + if (v2.tag === "Just") { return pure(v2._1); } + $runtime.fail(); + }; + }; +}; +const liftEither = dictMonadThrow => { + const $1 = dictMonadThrow.Monad0().Applicative0().pure; + return v2 => { + if (v2.tag === "Left") { return dictMonadThrow.throwError(v2._1); } + if (v2.tag === "Right") { return $1(v2._1); } + $runtime.fail(); + }; +}; +const catchError = dict => dict.catchError; +const catchJust = dictMonadError => { + const throwError1 = dictMonadError.MonadThrow0().throwError; + return p => act => handler => dictMonadError.catchError(act)(e => { + const v = p(e); + if (v.tag === "Nothing") { return throwError1(e); } + if (v.tag === "Just") { return handler(v._1); } + $runtime.fail(); + }); +}; +const $$try = dictMonadError => { + const Monad0 = dictMonadError.MonadThrow0().Monad0(); + const map = Monad0.Bind1().Apply0().Functor0().map; + const pure = Monad0.Applicative0().pure; + return a => dictMonadError.catchError(map(Data$dEither.Right)(a))(x => pure(Data$dEither.$Either("Left", x))); +}; +const withResource = dictMonadError => { + const MonadThrow0 = dictMonadError.MonadThrow0(); + const Monad0 = MonadThrow0.Monad0(); + const Bind1 = Monad0.Bind1(); + const try1 = $$try(dictMonadError); + const pure = Monad0.Applicative0().pure; + return acquire => release => kleisli => Bind1.bind(acquire)(resource => Bind1.bind(try1(kleisli(resource)))(result => Bind1.bind(release(resource))(() => { + if (result.tag === "Left") { return MonadThrow0.throwError(result._1); } + if (result.tag === "Right") { return pure(result._1); } + $runtime.fail(); + }))); +}; +export { + catchError, + catchJust, + liftEither, + liftMaybe, + monadErrorEffect, + monadErrorEither, + monadErrorMaybe, + monadThrowEffect, + monadThrowEither, + monadThrowMaybe, + throwError, + $$try as try, + withResource +}; diff --git a/.storybook/purescript-indexer/output-es/Control.Monad.Except.Trans/index.js b/.storybook/purescript-indexer/output-es/Control.Monad.Except.Trans/index.js new file mode 100644 index 0000000..326952a --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Monad.Except.Trans/index.js @@ -0,0 +1,252 @@ +// | This module defines the _exception monad transformer_ `ExceptT`. +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dRec$dClass from "../Control.Monad.Rec.Class/index.js"; +import * as Data$dEither from "../Data.Either/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +const identity = x => x; +const ExceptT = x => x; +const withExceptT = dictFunctor => f => v => dictFunctor.map(v2 => { + if (v2.tag === "Right") { return Data$dEither.$Either("Right", v2._1); } + if (v2.tag === "Left") { return Data$dEither.$Either("Left", f(v2._1)); } + $runtime.fail(); +})(v); +const runExceptT = v => v; +const newtypeExceptT = {Coercible0: () => undefined}; +const monadTransExceptT = { + lift: dictMonad => { + const bind = dictMonad.Bind1().bind; + const pure = dictMonad.Applicative0().pure; + return m => bind(m)(a => pure(Data$dEither.$Either("Right", a))); + } +}; +const mapExceptT = f => v => f(v); +const functorExceptT = dictFunctor => ({map: f => dictFunctor.map(Data$dEither.functorEither.map(f))}); +const except = dictApplicative => x => dictApplicative.pure(x); +const monadExceptT = dictMonad => ({Applicative0: () => applicativeExceptT(dictMonad), Bind1: () => bindExceptT(dictMonad)}); +const bindExceptT = dictMonad => { + const bind = dictMonad.Bind1().bind; + const pure = dictMonad.Applicative0().pure; + return { + bind: v => k => bind(v)(v2 => { + if (v2.tag === "Left") { return pure(Data$dEither.$Either("Left", v2._1)); } + if (v2.tag === "Right") { return k(v2._1); } + $runtime.fail(); + }), + Apply0: () => applyExceptT(dictMonad) + }; +}; +const applyExceptT = dictMonad => { + const $1 = dictMonad.Bind1().Apply0().Functor0(); + const functorExceptT1 = {map: f => $1.map(Data$dEither.functorEither.map(f))}; + return { + apply: (() => { + const bind = bindExceptT(dictMonad).bind; + const pure = applicativeExceptT(dictMonad).pure; + return f => a => bind(f)(f$p => bind(a)(a$p => pure(f$p(a$p)))); + })(), + Functor0: () => functorExceptT1 + }; +}; +const applicativeExceptT = dictMonad => ( + { + pure: (() => { + const $1 = dictMonad.Applicative0().pure; + return x => $1(Data$dEither.$Either("Right", x)); + })(), + Apply0: () => applyExceptT(dictMonad) + } +); +const semigroupExceptT = dictMonad => { + const $1 = applyExceptT(dictMonad); + const map = $1.Functor0().map; + return dictSemigroup => ({append: a => b => $1.apply(map(dictSemigroup.append)(a))(b)}); +}; +const monadAskExceptT = dictMonadAsk => { + const Monad0 = dictMonadAsk.Monad0(); + const monadExceptT1 = {Applicative0: () => applicativeExceptT(Monad0), Bind1: () => bindExceptT(Monad0)}; + return {ask: monadTransExceptT.lift(Monad0)(dictMonadAsk.ask), Monad0: () => monadExceptT1}; +}; +const monadReaderExceptT = dictMonadReader => { + const monadAskExceptT1 = monadAskExceptT(dictMonadReader.MonadAsk0()); + return {local: f => dictMonadReader.local(f), MonadAsk0: () => monadAskExceptT1}; +}; +const monadContExceptT = dictMonadCont => { + const $1 = dictMonadCont.Monad0(); + const monadExceptT1 = {Applicative0: () => applicativeExceptT($1), Bind1: () => bindExceptT($1)}; + return {callCC: f => dictMonadCont.callCC(c => f(a => c(Data$dEither.$Either("Right", a)))), Monad0: () => monadExceptT1}; +}; +const monadEffectExceptT = dictMonadEffect => { + const Monad0 = dictMonadEffect.Monad0(); + const monadExceptT1 = {Applicative0: () => applicativeExceptT(Monad0), Bind1: () => bindExceptT(Monad0)}; + return { + liftEffect: (() => { + const $3 = monadTransExceptT.lift(Monad0); + return x => $3(dictMonadEffect.liftEffect(x)); + })(), + Monad0: () => monadExceptT1 + }; +}; +const monadRecExceptT = dictMonadRec => { + const Monad0 = dictMonadRec.Monad0(); + const bind = Monad0.Bind1().bind; + const pure = Monad0.Applicative0().pure; + const monadExceptT1 = {Applicative0: () => applicativeExceptT(Monad0), Bind1: () => bindExceptT(Monad0)}; + return { + tailRecM: f => dictMonadRec.tailRecM(a => bind(f(a))(m$p => pure((() => { + if (m$p.tag === "Left") { return Control$dMonad$dRec$dClass.$Step("Done", Data$dEither.$Either("Left", m$p._1)); } + if (m$p.tag === "Right") { + if (m$p._1.tag === "Loop") { return Control$dMonad$dRec$dClass.$Step("Loop", m$p._1._1); } + if (m$p._1.tag === "Done") { return Control$dMonad$dRec$dClass.$Step("Done", Data$dEither.$Either("Right", m$p._1._1)); } + $runtime.fail(); + } + $runtime.fail(); + })()))), + Monad0: () => monadExceptT1 + }; +}; +const monadStateExceptT = dictMonadState => { + const Monad0 = dictMonadState.Monad0(); + const lift1 = monadTransExceptT.lift(Monad0); + const monadExceptT1 = {Applicative0: () => applicativeExceptT(Monad0), Bind1: () => bindExceptT(Monad0)}; + return {state: f => lift1(dictMonadState.state(f)), Monad0: () => monadExceptT1}; +}; +const monadTellExceptT = dictMonadTell => { + const Monad1 = dictMonadTell.Monad1(); + const Semigroup0 = dictMonadTell.Semigroup0(); + const monadExceptT1 = {Applicative0: () => applicativeExceptT(Monad1), Bind1: () => bindExceptT(Monad1)}; + return { + tell: (() => { + const $4 = monadTransExceptT.lift(Monad1); + return x => $4(dictMonadTell.tell(x)); + })(), + Semigroup0: () => Semigroup0, + Monad1: () => monadExceptT1 + }; +}; +const monadWriterExceptT = dictMonadWriter => { + const MonadTell1 = dictMonadWriter.MonadTell1(); + const Monad1 = MonadTell1.Monad1(); + const bind = Monad1.Bind1().bind; + const pure = Monad1.Applicative0().pure; + const Monoid0 = dictMonadWriter.Monoid0(); + const monadTellExceptT1 = monadTellExceptT(MonadTell1); + return { + listen: v => bind(dictMonadWriter.listen(v))(v$1 => pure((() => { + if (v$1._1.tag === "Left") { return Data$dEither.$Either("Left", v$1._1._1); } + if (v$1._1.tag === "Right") { return Data$dEither.$Either("Right", Data$dTuple.$Tuple(v$1._1._1, v$1._2)); } + $runtime.fail(); + })())), + pass: v => dictMonadWriter.pass(bind(v)(a => pure((() => { + if (a.tag === "Left") { return Data$dTuple.$Tuple(Data$dEither.$Either("Left", a._1), identity); } + if (a.tag === "Right") { return Data$dTuple.$Tuple(Data$dEither.$Either("Right", a._1._1), a._1._2); } + $runtime.fail(); + })()))), + Monoid0: () => Monoid0, + MonadTell1: () => monadTellExceptT1 + }; +}; +const monadThrowExceptT = dictMonad => { + const monadExceptT1 = {Applicative0: () => applicativeExceptT(dictMonad), Bind1: () => bindExceptT(dictMonad)}; + return { + throwError: (() => { + const $2 = dictMonad.Applicative0().pure; + return x => $2(Data$dEither.$Either("Left", x)); + })(), + Monad0: () => monadExceptT1 + }; +}; +const monadErrorExceptT = dictMonad => { + const bind = dictMonad.Bind1().bind; + const pure = dictMonad.Applicative0().pure; + const monadThrowExceptT1 = monadThrowExceptT(dictMonad); + return { + catchError: v => k => bind(v)(v2 => { + if (v2.tag === "Left") { return k(v2._1); } + if (v2.tag === "Right") { return pure(Data$dEither.$Either("Right", v2._1)); } + $runtime.fail(); + }), + MonadThrow0: () => monadThrowExceptT1 + }; +}; +const monoidExceptT = dictMonad => { + const pure = applicativeExceptT(dictMonad).pure; + const semigroupExceptT1 = semigroupExceptT(dictMonad); + return dictMonoid => { + const semigroupExceptT2 = semigroupExceptT1(dictMonoid.Semigroup0()); + return {mempty: pure(dictMonoid.mempty), Semigroup0: () => semigroupExceptT2}; + }; +}; +const altExceptT = dictSemigroup => dictMonad => { + const Bind1 = dictMonad.Bind1(); + const pure = dictMonad.Applicative0().pure; + const $4 = Bind1.Apply0().Functor0(); + const functorExceptT1 = {map: f => $4.map(Data$dEither.functorEither.map(f))}; + return { + alt: v => v1 => Bind1.bind(v)(rm => { + if (rm.tag === "Right") { return pure(Data$dEither.$Either("Right", rm._1)); } + if (rm.tag === "Left") { + return Bind1.bind(v1)(rn => { + if (rn.tag === "Right") { return pure(Data$dEither.$Either("Right", rn._1)); } + if (rn.tag === "Left") { return pure(Data$dEither.$Either("Left", dictSemigroup.append(rm._1)(rn._1))); } + $runtime.fail(); + }); + } + $runtime.fail(); + }), + Functor0: () => functorExceptT1 + }; +}; +const plusExceptT = dictMonoid => { + const altExceptT1 = altExceptT(dictMonoid.Semigroup0()); + return dictMonad => { + const altExceptT2 = altExceptT1(dictMonad); + return {empty: monadThrowExceptT(dictMonad).throwError(dictMonoid.mempty), Alt0: () => altExceptT2}; + }; +}; +const alternativeExceptT = dictMonoid => { + const plusExceptT1 = plusExceptT(dictMonoid); + return dictMonad => { + const applicativeExceptT1 = applicativeExceptT(dictMonad); + const plusExceptT2 = plusExceptT1(dictMonad); + return {Applicative0: () => applicativeExceptT1, Plus1: () => plusExceptT2}; + }; +}; +const monadPlusExceptT = dictMonoid => { + const alternativeExceptT1 = alternativeExceptT(dictMonoid); + return dictMonad => { + const monadExceptT1 = {Applicative0: () => applicativeExceptT(dictMonad), Bind1: () => bindExceptT(dictMonad)}; + const alternativeExceptT2 = alternativeExceptT1(dictMonad); + return {Monad0: () => monadExceptT1, Alternative1: () => alternativeExceptT2}; + }; +}; +export { + ExceptT, + altExceptT, + alternativeExceptT, + applicativeExceptT, + applyExceptT, + bindExceptT, + except, + functorExceptT, + identity, + mapExceptT, + monadAskExceptT, + monadContExceptT, + monadEffectExceptT, + monadErrorExceptT, + monadExceptT, + monadPlusExceptT, + monadReaderExceptT, + monadRecExceptT, + monadStateExceptT, + monadTellExceptT, + monadThrowExceptT, + monadTransExceptT, + monadWriterExceptT, + monoidExceptT, + newtypeExceptT, + plusExceptT, + runExceptT, + semigroupExceptT, + withExceptT +}; diff --git a/.storybook/purescript-indexer/output-es/Control.Monad.Except/index.js b/.storybook/purescript-indexer/output-es/Control.Monad.Except/index.js new file mode 100644 index 0000000..58d2772 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Monad.Except/index.js @@ -0,0 +1,7 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dExcept$dTrans from "../Control.Monad.Except.Trans/index.js"; +import * as Data$dIdentity from "../Data.Identity/index.js"; +const withExcept = /* #__PURE__ */ Control$dMonad$dExcept$dTrans.withExceptT(Data$dIdentity.functorIdentity); +const runExcept = x => x; +const mapExcept = f => v => f(v); +export {mapExcept, runExcept, withExcept}; diff --git a/.storybook/purescript-indexer/output-es/Control.Monad.Free.Class/index.js b/.storybook/purescript-indexer/output-es/Control.Monad.Free.Class/index.js new file mode 100644 index 0000000..d1f7770 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Monad.Free.Class/index.js @@ -0,0 +1,46 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dBind from "../Control.Bind/index.js"; +import * as Control$dMonad$dExcept$dTrans from "../Control.Monad.Except.Trans/index.js"; +import * as Control$dMonad$dFree from "../Control.Monad.Free/index.js"; +import * as Control$dMonad$dMaybe$dTrans from "../Control.Monad.Maybe.Trans/index.js"; +import * as Control$dMonad$dReader$dTrans from "../Control.Monad.Reader.Trans/index.js"; +import * as Control$dMonad$dState$dTrans from "../Control.Monad.State.Trans/index.js"; +import * as Control$dMonad$dWriter$dTrans from "../Control.Monad.Writer.Trans/index.js"; +import * as Data$dCatList from "../Data.CatList/index.js"; +import * as Data$dCatQueue from "../Data.CatQueue/index.js"; +import * as Data$dList$dTypes from "../Data.List.Types/index.js"; +const wrapFree = dict => dict.wrapFree; +const monadFreeWriterT = dictFunctor => dictMonadFree => { + const Monad0 = dictMonadFree.Monad0(); + return dictMonoid => { + const monadWriterT = Control$dMonad$dWriter$dTrans.monadWriterT(dictMonoid)(Monad0); + return {wrapFree: f => dictMonadFree.wrapFree(dictFunctor.map(Control$dMonad$dWriter$dTrans.runWriterT)(f)), Monad0: () => monadWriterT}; + }; +}; +const monadFreeStateT = dictFunctor => dictMonadFree => { + const $2 = dictMonadFree.Monad0(); + const monadStateT = {Applicative0: () => Control$dMonad$dState$dTrans.applicativeStateT($2), Bind1: () => Control$dMonad$dState$dTrans.bindStateT($2)}; + return {wrapFree: f => s => dictMonadFree.wrapFree(dictFunctor.map(st => st(s))(f)), Monad0: () => monadStateT}; +}; +const monadFreeReaderT = dictFunctor => dictMonadFree => { + const monadReaderT = Control$dMonad$dReader$dTrans.monadReaderT(dictMonadFree.Monad0()); + return {wrapFree: f => r => dictMonadFree.wrapFree(dictFunctor.map(rt => rt(r))(f)), Monad0: () => monadReaderT}; +}; +const monadFreeMaybeT = dictFunctor => dictMonadFree => { + const $2 = dictMonadFree.Monad0(); + const monadMaybeT = {Applicative0: () => Control$dMonad$dMaybe$dTrans.applicativeMaybeT($2), Bind1: () => Control$dMonad$dMaybe$dTrans.bindMaybeT($2)}; + return {wrapFree: f => dictMonadFree.wrapFree(dictFunctor.map(Control$dMonad$dMaybe$dTrans.runMaybeT)(f)), Monad0: () => monadMaybeT}; +}; +const monadFreeFree = { + wrapFree: x => Control$dMonad$dFree.$Free( + Control$dMonad$dFree.$FreeView("Bind", x, x$1 => Control$dMonad$dFree.$Free(Control$dMonad$dFree.$FreeView("Return", x$1), Data$dCatList.CatNil)), + Data$dCatList.link(Data$dCatList.CatNil)(Data$dCatList.$CatList("CatCons", Control$dBind.identity, Data$dCatQueue.$CatQueue(Data$dList$dTypes.Nil, Data$dList$dTypes.Nil))) + ), + Monad0: () => Control$dMonad$dFree.freeMonad +}; +const monadFreeExceptT = dictFunctor => dictMonadFree => { + const $2 = dictMonadFree.Monad0(); + const monadExceptT = {Applicative0: () => Control$dMonad$dExcept$dTrans.applicativeExceptT($2), Bind1: () => Control$dMonad$dExcept$dTrans.bindExceptT($2)}; + return {wrapFree: f => dictMonadFree.wrapFree(dictFunctor.map(Control$dMonad$dExcept$dTrans.runExceptT)(f)), Monad0: () => monadExceptT}; +}; +export {monadFreeExceptT, monadFreeFree, monadFreeMaybeT, monadFreeReaderT, monadFreeStateT, monadFreeWriterT, wrapFree}; diff --git a/.storybook/purescript-indexer/output-es/Control.Monad.Free/index.js b/.storybook/purescript-indexer/output-es/Control.Monad.Free/index.js new file mode 100644 index 0000000..b952a6c --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Monad.Free/index.js @@ -0,0 +1,319 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dBind from "../Control.Bind/index.js"; +import * as Control$dMonad$dRec$dClass from "../Control.Monad.Rec.Class/index.js"; +import * as Data$dCatList from "../Data.CatList/index.js"; +import * as Data$dCatQueue from "../Data.CatQueue/index.js"; +import * as Data$dEither from "../Data.Either/index.js"; +import * as Data$dList$dTypes from "../Data.List.Types/index.js"; +import * as Data$dOrdering from "../Data.Ordering/index.js"; +import * as Unsafe$dCoerce from "../Unsafe.Coerce/index.js"; +const $Free = (_1, _2) => ({tag: "Free", _1, _2}); +const $FreeView = (tag, _1, _2) => ({tag, _1, _2}); +const identity = x => x; +const Free = value0 => value1 => $Free(value0, value1); +const Return = value0 => $FreeView("Return", value0); +const Bind = value0 => value1 => $FreeView("Bind", value0, value1); +const toView = toView$a0$copy => { + let toView$a0 = toView$a0$copy, toView$c = true, toView$r; + while (toView$c) { + const v = toView$a0; + if (v._1.tag === "Return") { + const v2 = Data$dCatList.uncons(v._2); + if (v2.tag === "Nothing") { + toView$c = false; + toView$r = $FreeView("Return", v._1._1); + continue; + } + if (v2.tag === "Just") { + toView$a0 = (() => { + const $2 = v2._1._1(v._1._1); + return $Free($2._1, Data$dCatList.link($2._2)(v2._1._2)); + })(); + continue; + } + $runtime.fail(); + } + if (v._1.tag === "Bind") { + toView$c = false; + toView$r = $FreeView( + "Bind", + v._1._1, + a => { + const $2 = v._1._2(a); + return $Free($2._1, Data$dCatList.link($2._2)(v._2)); + } + ); + continue; + } + $runtime.fail(); + }; + return toView$r; +}; +const runFreeM = dictFunctor => dictMonadRec => { + const Monad0 = dictMonadRec.Monad0(); + const map2 = Monad0.Bind1().Apply0().Functor0().map; + const pure1 = Monad0.Applicative0().pure; + return k => dictMonadRec.tailRecM(f => { + const v = toView(f); + if (v.tag === "Return") { return map2(Control$dMonad$dRec$dClass.Done)(pure1(v._1)); } + if (v.tag === "Bind") { return map2(Control$dMonad$dRec$dClass.Loop)(k(dictFunctor.map(v._2)(v._1))); } + $runtime.fail(); + }); +}; +const runFree = dictFunctor => k => { + const go = go$a0$copy => { + let go$a0 = go$a0$copy, go$c = true, go$r; + while (go$c) { + const f = go$a0; + const v = toView(f); + if (v.tag === "Return") { + go$c = false; + go$r = v._1; + continue; + } + if (v.tag === "Bind") { + go$a0 = k(dictFunctor.map(v._2)(v._1)); + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go; +}; +const resume$p = k => j => f => { + const v = toView(f); + if (v.tag === "Return") { return j(v._1); } + if (v.tag === "Bind") { return k(v._1)(v._2); } + $runtime.fail(); +}; +const resume = dictFunctor => resume$p(g => i => Data$dEither.$Either("Left", dictFunctor.map(i)(g)))(Data$dEither.Right); +const wrap = f => $Free($FreeView("Bind", f, Unsafe$dCoerce.unsafeCoerce), Data$dCatList.CatNil); +const suspendF = dictApplicative => f => $Free($FreeView("Bind", dictApplicative.pure(f), Unsafe$dCoerce.unsafeCoerce), Data$dCatList.CatNil); +const freeMonad = {Applicative0: () => freeApplicative, Bind1: () => freeBind}; +const freeFunctor = {map: k => f => freeBind.bind(f)(x => freeApplicative.pure(k(x)))}; +const freeBind = { + bind: v => k => $Free(v._1, Data$dCatList.link(v._2)(Data$dCatList.$CatList("CatCons", k, Data$dCatQueue.$CatQueue(Data$dList$dTypes.Nil, Data$dList$dTypes.Nil)))), + Apply0: () => freeApply +}; +const freeApply = { + apply: f => a => $Free( + f._1, + Data$dCatList.link(f._2)(Data$dCatList.$CatList( + "CatCons", + f$p => $Free( + a._1, + Data$dCatList.link(a._2)(Data$dCatList.$CatList("CatCons", a$p => freeApplicative.pure(f$p(a$p)), Data$dCatQueue.$CatQueue(Data$dList$dTypes.Nil, Data$dList$dTypes.Nil))) + ), + Data$dCatQueue.$CatQueue(Data$dList$dTypes.Nil, Data$dList$dTypes.Nil) + )) + ), + Functor0: () => freeFunctor +}; +const freeApplicative = {pure: x => $Free($FreeView("Return", x), Data$dCatList.CatNil), Apply0: () => freeApply}; +const semigroupFree = dictSemigroup => ( + { + append: a => b => freeApply.apply($Free( + a._1, + Data$dCatList.link(a._2)(Data$dCatList.$CatList( + "CatCons", + x => $Free($FreeView("Return", dictSemigroup.append(x)), Data$dCatList.CatNil), + Data$dCatQueue.$CatQueue(Data$dList$dTypes.Nil, Data$dList$dTypes.Nil) + )) + ))(b) + } +); +const freeMonadRec = { + tailRecM: k => a => { + const $2 = k(a); + return $Free( + $2._1, + Data$dCatList.link($2._2)(Data$dCatList.$CatList( + "CatCons", + v => { + if (v.tag === "Loop") { return freeMonadRec.tailRecM(k)(v._1); } + if (v.tag === "Done") { return $Free($FreeView("Return", v._1), Data$dCatList.CatNil); } + $runtime.fail(); + }, + Data$dCatQueue.$CatQueue(Data$dList$dTypes.Nil, Data$dList$dTypes.Nil) + )) + ); + }, + Monad0: () => freeMonad +}; +const liftF = f => $Free($FreeView("Bind", f, x => $Free($FreeView("Return", x), Data$dCatList.CatNil)), Data$dCatList.CatNil); +const freeMonadTrans = {lift: dictMonad => liftF}; +const monoidFree = dictMonoid => { + const semigroupFree1 = semigroupFree(dictMonoid.Semigroup0()); + return {mempty: $Free($FreeView("Return", dictMonoid.mempty), Data$dCatList.CatNil), Semigroup0: () => semigroupFree1}; +}; +const substFree = k => { + const go = f => { + const v = toView(f); + if (v.tag === "Return") { return $Free($FreeView("Return", v._1), Data$dCatList.CatNil); } + if (v.tag === "Bind") { + const $4 = k(v._1); + return $Free($4._1, Data$dCatList.link($4._2)(Data$dCatList.$CatList("CatCons", x => go(v._2(x)), Data$dCatQueue.$CatQueue(Data$dList$dTypes.Nil, Data$dList$dTypes.Nil)))); + } + $runtime.fail(); + }; + return go; +}; +const hoistFree = k => substFree(x => $Free($FreeView("Bind", k(x), x$1 => $Free($FreeView("Return", x$1), Data$dCatList.CatNil)), Data$dCatList.CatNil)); +const foldableFree = dictFunctor => dictFoldable => ( + { + foldMap: dictMonoid => { + const foldMap1 = dictFoldable.foldMap(dictMonoid); + return f => { + const go = x => { + const $7 = resume$p(g => i => Data$dEither.$Either("Left", dictFunctor.map(i)(g)))(Data$dEither.Right)(x); + if ($7.tag === "Left") { return foldMap1(go)($7._1); } + if ($7.tag === "Right") { return f($7._1); } + $runtime.fail(); + }; + return go; + }; + }, + foldl: f => { + const go = r => x => { + const $6 = resume$p(g => i => Data$dEither.$Either("Left", dictFunctor.map(i)(g)))(Data$dEither.Right)(x); + if ($6.tag === "Left") { return dictFoldable.foldl(go)(r)($6._1); } + if ($6.tag === "Right") { return f(r)($6._1); } + $runtime.fail(); + }; + return go; + }, + foldr: f => { + const go = r => x => { + const $6 = resume$p(g => i => Data$dEither.$Either("Left", dictFunctor.map(i)(g)))(Data$dEither.Right)(x); + if ($6.tag === "Left") { return dictFoldable.foldr(b => a => go(a)(b))(r)($6._1); } + if ($6.tag === "Right") { return f($6._1)(r); } + $runtime.fail(); + }; + return go; + } + } +); +const traversableFree = dictTraversable => { + const Functor0 = dictTraversable.Functor0(); + const foldableFree1 = foldableFree(Functor0)(dictTraversable.Foldable1()); + return { + traverse: dictApplicative => { + const map1 = dictApplicative.Apply0().Functor0().map; + const traverse1 = dictTraversable.traverse(dictApplicative); + return f => { + const go = x => { + const $9 = resume$p(g => i => Data$dEither.$Either("Left", Functor0.map(i)(g)))(Data$dEither.Right)(x); + if ($9.tag === "Left") { + return map1(x$1 => $Free( + $FreeView("Bind", x$1, x$2 => $Free($FreeView("Return", x$2), Data$dCatList.CatNil)), + Data$dCatList.link(Data$dCatList.CatNil)(Data$dCatList.$CatList( + "CatCons", + Control$dBind.identity, + Data$dCatQueue.$CatQueue(Data$dList$dTypes.Nil, Data$dList$dTypes.Nil) + )) + ))(traverse1(go)($9._1)); + } + if ($9.tag === "Right") { return map1(freeApplicative.pure)(f($9._1)); } + $runtime.fail(); + }; + return go; + }; + }, + sequence: dictApplicative => tma => traversableFree(dictTraversable).traverse(dictApplicative)(identity)(tma), + Functor0: () => freeFunctor, + Foldable1: () => foldableFree1 + }; +}; +const foldFree = dictMonadRec => { + const Monad0 = dictMonadRec.Monad0(); + const map1 = Monad0.Bind1().Apply0().Functor0().map; + const pure1 = Monad0.Applicative0().pure; + return k => dictMonadRec.tailRecM(f => { + const v = toView(f); + if (v.tag === "Return") { return map1(Control$dMonad$dRec$dClass.Done)(pure1(v._1)); } + if (v.tag === "Bind") { return map1(x => Control$dMonad$dRec$dClass.$Step("Loop", v._2(x)))(k(v._1)); } + $runtime.fail(); + }); +}; +const eqFree = dictFunctor => dictEq1 => dictEq => ( + { + eq: x => y => { + const v = resume$p(g => i => Data$dEither.$Either("Left", dictFunctor.map(i)(g)))(Data$dEither.Right)(y); + const v1 = resume$p(g => i => Data$dEither.$Either("Left", dictFunctor.map(i)(g)))(Data$dEither.Right)(x); + if (v1.tag === "Left") { + if (v.tag === "Left") { return dictEq1.eq1(eqFree(dictFunctor)(dictEq1)(dictEq))(v1._1)(v._1); } + return false; + } + if (v1.tag === "Right") { + if (v.tag === "Right") { return dictEq.eq(v1._1)(v._1); } + return false; + } + return false; + } + } +); +const ordFree = dictFunctor => dictOrd1 => { + const eqFree2 = eqFree(dictFunctor)(dictOrd1.Eq10()); + return dictOrd => { + const eqFree3 = eqFree2(dictOrd.Eq0()); + return { + compare: x => y => { + const v = resume$p(g => i => Data$dEither.$Either("Left", dictFunctor.map(i)(g)))(Data$dEither.Right)(y); + const v1 = resume$p(g => i => Data$dEither.$Either("Left", dictFunctor.map(i)(g)))(Data$dEither.Right)(x); + if (v1.tag === "Left") { + if (v.tag === "Left") { return dictOrd1.compare1(ordFree(dictFunctor)(dictOrd1)(dictOrd))(v1._1)(v._1); } + return Data$dOrdering.LT; + } + if (v.tag === "Left") { return Data$dOrdering.GT; } + if (v1.tag === "Right") { + if (v.tag === "Right") { return dictOrd.compare(v1._1)(v._1); } + $runtime.fail(); + } + $runtime.fail(); + }, + Eq0: () => eqFree3 + }; + }; +}; +const eq1Free = dictFunctor => dictEq1 => ({eq1: dictEq => eqFree(dictFunctor)(dictEq1)(dictEq).eq}); +const ord1Free = dictFunctor => dictOrd1 => { + const ordFree2 = ordFree(dictFunctor)(dictOrd1); + const $3 = dictOrd1.Eq10(); + const eq1Free2 = {eq1: dictEq => eqFree(dictFunctor)($3)(dictEq).eq}; + return {compare1: dictOrd => ordFree2(dictOrd).compare, Eq10: () => eq1Free2}; +}; +export { + $Free, + $FreeView, + Bind, + Free, + Return, + eq1Free, + eqFree, + foldFree, + foldableFree, + freeApplicative, + freeApply, + freeBind, + freeFunctor, + freeMonad, + freeMonadRec, + freeMonadTrans, + hoistFree, + identity, + liftF, + monoidFree, + ord1Free, + ordFree, + resume, + resume$p, + runFree, + runFreeM, + semigroupFree, + substFree, + suspendF, + toView, + traversableFree, + wrap +}; diff --git a/.storybook/purescript-indexer/output-es/Control.Monad.Gen.Class/index.js b/.storybook/purescript-indexer/output-es/Control.Monad.Gen.Class/index.js new file mode 100644 index 0000000..6b0311f --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Monad.Gen.Class/index.js @@ -0,0 +1,7 @@ +import * as $runtime from "../runtime.js"; +const sized = dict => dict.sized; +const resize = dict => dict.resize; +const chooseInt = dict => dict.chooseInt; +const chooseFloat = dict => dict.chooseFloat; +const chooseBool = dict => dict.chooseBool; +export {chooseBool, chooseFloat, chooseInt, resize, sized}; diff --git a/.storybook/purescript-indexer/output-es/Control.Monad.Gen.Common/index.js b/.storybook/purescript-indexer/output-es/Control.Monad.Gen.Common/index.js new file mode 100644 index 0000000..6ceeb96 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Monad.Gen.Common/index.js @@ -0,0 +1,50 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dGen from "../Control.Monad.Gen/index.js"; +import * as Data$dEither from "../Data.Either/index.js"; +import * as Data$dIdentity from "../Data.Identity/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dNonEmpty from "../Data.NonEmpty/index.js"; +import * as Data$dOrd from "../Data.Ord/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +const max = x => y => { + const v = Data$dOrd.ordInt.compare(x)(y); + if (v.tag === "LT") { return y; } + if (v.tag === "EQ") { return x; } + if (v.tag === "GT") { return x; } + $runtime.fail(); +}; +const genTuple = dictApply => { + const map = dictApply.Functor0().map; + return a => b => dictApply.apply(map(Data$dTuple.Tuple)(a))(b); +}; +const genNonEmpty = dictMonadRec => dictMonadGen => { + const Apply0 = dictMonadGen.Monad0().Bind1().Apply0(); + const map = Apply0.Functor0().map; + const unfoldable1 = Control$dMonad$dGen.unfoldable(dictMonadRec)(dictMonadGen); + return dictUnfoldable => { + const unfoldable2 = unfoldable1(dictUnfoldable); + return gen => Apply0.apply(map(Data$dNonEmpty.NonEmpty)(gen))(dictMonadGen.resize(x => max(0)(x - 1 | 0))(unfoldable2(gen))); + }; +}; +const genMaybe$p = dictMonadGen => { + const Monad0 = dictMonadGen.Monad0(); + const Bind1 = Monad0.Bind1(); + const map = Bind1.Apply0().Functor0().map; + const pure = Monad0.Applicative0().pure; + return bias => gen => Bind1.bind(dictMonadGen.chooseFloat(0.0)(1.0))(n => { + if (n < bias) { return map(Data$dMaybe.Just)(gen); } + return pure(Data$dMaybe.Nothing); + }); +}; +const genMaybe = dictMonadGen => genMaybe$p(dictMonadGen)(0.75); +const genIdentity = dictFunctor => dictFunctor.map(Data$dIdentity.Identity); +const genEither$p = dictMonadGen => { + const Bind1 = dictMonadGen.Monad0().Bind1(); + const map = Bind1.Apply0().Functor0().map; + return bias => genA => genB => Bind1.bind(dictMonadGen.chooseFloat(0.0)(1.0))(n => { + if (n < bias) { return map(Data$dEither.Left)(genA); } + return map(Data$dEither.Right)(genB); + }); +}; +const genEither = dictMonadGen => genEither$p(dictMonadGen)(0.5); +export {genEither, genEither$p, genIdentity, genMaybe, genMaybe$p, genNonEmpty, genTuple, max}; diff --git a/.storybook/purescript-indexer/output-es/Control.Monad.Gen/index.js b/.storybook/purescript-indexer/output-es/Control.Monad.Gen/index.js new file mode 100644 index 0000000..3a5b869 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Monad.Gen/index.js @@ -0,0 +1,130 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dRec$dClass from "../Control.Monad.Rec.Class/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dSemigroup$dLast from "../Data.Semigroup.Last/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +const $LL = (tag, _1, _2) => ({tag, _1, _2}); +const monoidAdditive = /* #__PURE__ */ (() => { + const semigroupAdditive1 = {append: v => v1 => v + v1}; + return {mempty: 0.0, Semigroup0: () => semigroupAdditive1}; +})(); +const Cons = value0 => value1 => $LL("Cons", value0, value1); +const Nil = /* #__PURE__ */ $LL("Nil"); +const unfoldable = dictMonadRec => dictMonadGen => { + const Monad0 = dictMonadGen.Monad0(); + const pure = Monad0.Applicative0().pure; + const Bind1 = Monad0.Bind1(); + const map = Bind1.Apply0().Functor0().map; + return dictUnfoldable => gen => map(dictUnfoldable.unfoldr(v => { + if (v.tag === "Nil") { return Data$dMaybe.Nothing; } + if (v.tag === "Cons") { return Data$dMaybe.$Maybe("Just", Data$dTuple.$Tuple(v._1, v._2)); } + $runtime.fail(); + }))(dictMonadGen.sized((() => { + const $8 = dictMonadRec.tailRecM(v => { + if (v._2 <= 0) { return pure(Control$dMonad$dRec$dClass.$Step("Done", v._1)); } + return Bind1.bind(gen)(x => pure(Control$dMonad$dRec$dClass.$Step("Loop", Data$dTuple.$Tuple($LL("Cons", x, v._1), v._2 - 1 | 0)))); + }); + const $9 = Data$dTuple.Tuple(Nil); + return x => $8($9(x)); + })())); +}; +const semigroupFreqSemigroup = { + append: v => v1 => pos => { + const v2 = v(pos); + if (v2._1.tag === "Just") { return v1(v2._1._1); } + return v2; + } +}; +const fromIndex = dictFoldable1 => { + const foldMap1 = dictFoldable1.foldMap1(Data$dSemigroup$dLast.semigroupLast); + const foldr = dictFoldable1.Foldable0().foldr; + return i => xs => { + 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 === "Cons") { + if (v1._2.tag === "Nil") { + go$c = false; + go$r = v1._1; + continue; + } + if (v <= 0) { + go$c = false; + go$r = v1._1; + continue; + } + go$a0 = v - 1 | 0; + go$a1 = v1._2; + continue; + } + if (v1.tag === "Nil") { + go$c = false; + go$r = foldMap1(Data$dSemigroup$dLast.Last)(xs); + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go(i)(foldr(Cons)(Nil)(xs)); + }; +}; +const oneOf = dictMonadGen => { + const bind = dictMonadGen.Monad0().Bind1().bind; + return dictFoldable1 => { + const length = dictFoldable1.Foldable0().foldl(c => v => 1 + c | 0)(0); + const fromIndex1 = fromIndex(dictFoldable1); + return xs => bind(dictMonadGen.chooseInt(0)(length(xs) - 1 | 0))(n => fromIndex1(n)(xs)); + }; +}; +const freqSemigroup = v => pos => { + if (pos >= v._1) { return Data$dTuple.$Tuple(Data$dMaybe.$Maybe("Just", pos - v._1), v._2); } + return Data$dTuple.$Tuple(Data$dMaybe.Nothing, v._2); +}; +const frequency = dictMonadGen => { + const bind = dictMonadGen.Monad0().Bind1().bind; + return dictFoldable1 => { + const foldMap = dictFoldable1.Foldable0().foldMap(monoidAdditive); + const foldMap1 = dictFoldable1.foldMap1(semigroupFreqSemigroup); + return xs => bind(dictMonadGen.chooseFloat(0.0)(foldMap(Data$dTuple.fst)(xs)))((() => { + const $6 = foldMap1(freqSemigroup)(xs); + return x => $6(x)._2; + })()); + }; +}; +const filtered = dictMonadRec => dictMonadGen => { + const $2 = dictMonadGen.Monad0().Bind1().Apply0().Functor0(); + return gen => dictMonadRec.tailRecM(v => $2.map(a => { + if (a.tag === "Nothing") { return Control$dMonad$dRec$dClass.$Step("Loop", Data$dUnit.unit); } + if (a.tag === "Just") { return Control$dMonad$dRec$dClass.$Step("Done", a._1); } + $runtime.fail(); + })(gen))(Data$dUnit.unit); +}; +const suchThat = dictMonadRec => dictMonadGen => { + const filtered2 = filtered(dictMonadRec)(dictMonadGen); + const $3 = dictMonadGen.Monad0().Bind1().Apply0().Functor0(); + return gen => pred => filtered2($3.map(a => { + if (pred(a)) { return Data$dMaybe.$Maybe("Just", a); } + return Data$dMaybe.Nothing; + })(gen)); +}; +const elements = dictMonadGen => { + const Monad0 = dictMonadGen.Monad0(); + const bind = Monad0.Bind1().bind; + const pure = Monad0.Applicative0().pure; + return dictFoldable1 => { + const length = dictFoldable1.Foldable0().foldl(c => v => 1 + c | 0)(0); + const fromIndex1 = fromIndex(dictFoldable1); + return xs => bind(dictMonadGen.chooseInt(0)(length(xs) - 1 | 0))(n => pure(fromIndex1(n)(xs))); + }; +}; +const choose = dictMonadGen => { + const bind = dictMonadGen.Monad0().Bind1().bind; + return genA => genB => bind(dictMonadGen.chooseBool)(v => { + if (v) { return genA; } + return genB; + }); +}; +export {$LL, Cons, Nil, choose, elements, filtered, freqSemigroup, frequency, fromIndex, monoidAdditive, oneOf, semigroupFreqSemigroup, suchThat, unfoldable}; diff --git a/.storybook/purescript-indexer/output-es/Control.Monad.Identity.Trans/index.js b/.storybook/purescript-indexer/output-es/Control.Monad.Identity.Trans/index.js new file mode 100644 index 0000000..660e575 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Monad.Identity.Trans/index.js @@ -0,0 +1,78 @@ +import * as $runtime from "../runtime.js"; +const IdentityT = x => x; +const traversableIdentityT = dictTraversable => dictTraversable; +const runIdentityT = v => v; +const plusIdentityT = dictPlus => dictPlus; +const newtypeIdentityT = {Coercible0: () => undefined}; +const monadWriterIdentityT = dictMonadWriter => dictMonadWriter; +const monadTransIdentityT = {lift: dictMonad => IdentityT}; +const monadThrowIdentityT = dictMonadThrow => dictMonadThrow; +const monadTellIdentityT = dictMonadTell => dictMonadTell; +const monadStateIdentityT = dictMonadState => dictMonadState; +const monadRecIdentityT = dictMonadRec => dictMonadRec; +const monadReaderIdentityT = dictMonadReader => dictMonadReader; +const monadPlusIdentityT = dictMonadPlus => dictMonadPlus; +const monadIdentityT = dictMonad => dictMonad; +const monadErrorIdentityT = dictMonadError => dictMonadError; +const monadEffectIdentityT = dictMonadEffect => dictMonadEffect; +const monadContIdentityT = dictMonadCont => dictMonadCont; +const monadAskIdentityT = dictMonadAsk => dictMonadAsk; +const mapIdentityT = f => v => f(v); +const functorIdentityT = dictFunctor => dictFunctor; +const foldableIdentityT = dictFoldable => dictFoldable; +const eqIdentityT = dictEq1 => dictEq => { + const eq11 = dictEq1.eq1(dictEq); + return {eq: x => y => eq11(x)(y)}; +}; +const ordIdentityT = dictOrd1 => { + const $1 = dictOrd1.Eq10(); + return dictOrd => { + const compare11 = dictOrd1.compare1(dictOrd); + const eq11 = $1.eq1(dictOrd.Eq0()); + const eqIdentityT2 = {eq: x => y => eq11(x)(y)}; + return {compare: x => y => compare11(x)(y), Eq0: () => eqIdentityT2}; + }; +}; +const eq1IdentityT = dictEq1 => ({eq1: dictEq => dictEq1.eq1(dictEq)}); +const ord1IdentityT = dictOrd1 => { + const $1 = dictOrd1.Eq10(); + const eq1IdentityT1 = {eq1: dictEq => $1.eq1(dictEq)}; + return {compare1: dictOrd => dictOrd1.compare1(dictOrd), Eq10: () => eq1IdentityT1}; +}; +const bindIdentityT = dictBind => dictBind; +const applyIdentityT = dictApply => dictApply; +const applicativeIdentityT = dictApplicative => dictApplicative; +const alternativeIdentityT = dictAlternative => dictAlternative; +const altIdentityT = dictAlt => dictAlt; +export { + IdentityT, + altIdentityT, + alternativeIdentityT, + applicativeIdentityT, + applyIdentityT, + bindIdentityT, + eq1IdentityT, + eqIdentityT, + foldableIdentityT, + functorIdentityT, + mapIdentityT, + monadAskIdentityT, + monadContIdentityT, + monadEffectIdentityT, + monadErrorIdentityT, + monadIdentityT, + monadPlusIdentityT, + monadReaderIdentityT, + monadRecIdentityT, + monadStateIdentityT, + monadTellIdentityT, + monadThrowIdentityT, + monadTransIdentityT, + monadWriterIdentityT, + newtypeIdentityT, + ord1IdentityT, + ordIdentityT, + plusIdentityT, + runIdentityT, + traversableIdentityT +}; diff --git a/.storybook/purescript-indexer/output-es/Control.Monad.List.Trans/index.js b/.storybook/purescript-indexer/output-es/Control.Monad.List.Trans/index.js new file mode 100644 index 0000000..a5410cf --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Monad.List.Trans/index.js @@ -0,0 +1,509 @@ +// | This module defines the list monad transformer, `ListT`. +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dRec$dClass from "../Control.Monad.Rec.Class/index.js"; +import * as Data$dLazy from "../Data.Lazy/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +const $Step = (tag, _1, _2) => ({tag, _1, _2}); +const identity = x => x; +const Yield = value0 => value1 => $Step("Yield", value0, value1); +const Skip = value0 => $Step("Skip", value0); +const Done = /* #__PURE__ */ $Step("Done"); +const ListT = x => x; +const wrapLazy = dictApplicative => v => dictApplicative.pure($Step("Skip", v)); +const wrapEffect = dictFunctor => v => dictFunctor.map(x => $Step("Skip", Data$dLazy.defer(v$1 => x)))(v); +const unfold = dictMonad => { + const map2 = dictMonad.Bind1().Apply0().Functor0().map; + return f => z => map2(v => { + if (v.tag === "Just") { return $Step("Yield", v._1._2, Data$dLazy.defer(v1 => unfold(dictMonad)(f)(v._1._1))); } + if (v.tag === "Nothing") { return Done; } + $runtime.fail(); + })(f(z)); +}; +const uncons = dictMonad => { + const pure1 = dictMonad.Applicative0().pure; + const bind = dictMonad.Bind1().bind; + return v => bind(v)(v1 => { + if (v1.tag === "Yield") { return pure1(Data$dMaybe.$Maybe("Just", Data$dTuple.$Tuple(v1._1, Data$dLazy.force(v1._2)))); } + if (v1.tag === "Skip") { return uncons(dictMonad)(Data$dLazy.force(v1._1)); } + if (v1.tag === "Done") { return pure1(Data$dMaybe.Nothing); } + $runtime.fail(); + }); +}; +const tail = dictMonad => { + const map2 = dictMonad.Bind1().Apply0().Functor0().map; + const uncons1 = uncons(dictMonad); + return l => map2(Data$dMaybe.functorMaybe.map(Data$dTuple.snd))(uncons1(l)); +}; +const takeWhile = dictApplicative => { + const $1 = dictApplicative.Apply0().Functor0(); + return f => v => $1.map(v$1 => { + if (v$1.tag === "Yield") { + if (f(v$1._1)) { + return $Step( + "Yield", + v$1._1, + (() => { + const $5 = takeWhile(dictApplicative)(f); + return Data$dLazy.defer(v$2 => $5(Data$dLazy.force(v$1._2))); + })() + ); + } + return Done; + } + if (v$1.tag === "Skip") { + return $Step( + "Skip", + (() => { + const $5 = takeWhile(dictApplicative)(f); + return Data$dLazy.defer(v$2 => $5(Data$dLazy.force(v$1._1))); + })() + ); + } + if (v$1.tag === "Done") { return Done; } + $runtime.fail(); + })(v); +}; +const scanl = dictMonad => { + const map2 = dictMonad.Bind1().Apply0().Functor0().map; + const unfold1 = unfold(dictMonad); + return f => b => l => unfold1(v => map2(v1 => { + if (v1.tag === "Yield") { return Data$dMaybe.$Maybe("Just", Data$dTuple.$Tuple(Data$dTuple.$Tuple(f(v._1)(v1._1), Data$dLazy.force(v1._2)), v._1)); } + if (v1.tag === "Skip") { return Data$dMaybe.$Maybe("Just", Data$dTuple.$Tuple(Data$dTuple.$Tuple(v._1, Data$dLazy.force(v1._1)), v._1)); } + if (v1.tag === "Done") { return Data$dMaybe.Nothing; } + $runtime.fail(); + })(v._2))(Data$dTuple.$Tuple(b, l)); +}; +const prepend$p = dictApplicative => h => t => dictApplicative.pure($Step("Yield", h, t)); +const prepend = dictApplicative => h => t => dictApplicative.pure($Step("Yield", h, Data$dLazy.defer(v => t))); +const nil = dictApplicative => dictApplicative.pure(Done); +const singleton = dictApplicative => { + const nil1 = dictApplicative.pure(Done); + return a => dictApplicative.pure($Step("Yield", a, Data$dLazy.defer(v => nil1))); +}; +const take = dictApplicative => { + const nil1 = dictApplicative.pure(Done); + const $2 = dictApplicative.Apply0().Functor0(); + return v => v1 => { + if (v === 0) { return nil1; } + return $2.map(v2 => { + if (v2.tag === "Yield") { + return $Step( + "Yield", + v2._1, + (() => { + const $6 = take(dictApplicative)(v - 1 | 0); + return Data$dLazy.defer(v$1 => $6(Data$dLazy.force(v2._2))); + })() + ); + } + if (v2.tag === "Skip") { + return $Step( + "Skip", + (() => { + const $6 = take(dictApplicative)(v); + return Data$dLazy.defer(v$1 => $6(Data$dLazy.force(v2._1))); + })() + ); + } + if (v2.tag === "Done") { return Done; } + $runtime.fail(); + })(v1); + }; +}; +const zipWith$p = dictMonad => { + const Applicative0 = dictMonad.Applicative0(); + const nil1 = Applicative0.pure(Done); + const Bind1 = dictMonad.Bind1(); + const Functor0 = Bind1.Apply0().Functor0(); + const uncons1 = uncons(dictMonad); + return f => fa => fb => Functor0.map(x => $Step("Skip", Data$dLazy.defer(v => x)))(Bind1.bind(uncons1(fa))(ua => Bind1.bind(uncons1(fb))(ub => { + if (ub.tag === "Nothing") { return Applicative0.pure(nil1); } + if (ua.tag === "Nothing") { return Applicative0.pure(nil1); } + if (ua.tag === "Just") { + if (ub.tag === "Just") { + return Functor0.map((() => { + const $11 = Data$dLazy.defer(v2 => zipWith$p(dictMonad)(f)(ua._1._2)(ub._1._2)); + return a => Applicative0.pure($Step("Yield", a, $11)); + })())(f(ua._1._1)(ub._1._1)); + } + $runtime.fail(); + } + $runtime.fail(); + }))); +}; +const zipWith = dictMonad => { + const pure1 = dictMonad.Applicative0().pure; + const zipWith$p1 = zipWith$p(dictMonad); + return f => zipWith$p1(a => b => pure1(f(a)(b))); +}; +const newtypeListT = {Coercible0: () => undefined}; +const mapMaybe = dictFunctor => f => v => dictFunctor.map(v$1 => { + if (v$1.tag === "Yield") { + const $4 = f(v$1._1); + if ($4.tag === "Just") { + return $Step( + "Yield", + $4._1, + (() => { + const $5 = mapMaybe(dictFunctor)(f); + return Data$dLazy.defer(v$2 => $5(Data$dLazy.force(v$1._2))); + })() + ); + } + return $Step( + "Skip", + (() => { + const $5 = mapMaybe(dictFunctor)(f); + return Data$dLazy.defer(v$2 => $5(Data$dLazy.force(v$1._2))); + })() + ); + } + if (v$1.tag === "Skip") { + return $Step( + "Skip", + (() => { + const $4 = mapMaybe(dictFunctor)(f); + return Data$dLazy.defer(v$2 => $4(Data$dLazy.force(v$1._1))); + })() + ); + } + if (v$1.tag === "Done") { return Done; } + $runtime.fail(); +})(v); +const iterate = dictMonad => { + const pure1 = dictMonad.Applicative0().pure; + const unfold1 = unfold(dictMonad); + return f => a => unfold1(x => pure1(Data$dMaybe.$Maybe("Just", Data$dTuple.$Tuple(f(x), x))))(a); +}; +const repeat = dictMonad => iterate(dictMonad)(identity); +const head = dictMonad => { + const map2 = dictMonad.Bind1().Apply0().Functor0().map; + const uncons1 = uncons(dictMonad); + return l => map2(Data$dMaybe.functorMaybe.map(Data$dTuple.fst))(uncons1(l)); +}; +const functorListT = dictFunctor => ( + { + map: f => v => dictFunctor.map(v$1 => { + if (v$1.tag === "Yield") { + return $Step( + "Yield", + f(v$1._1), + (() => { + const $4 = functorListT(dictFunctor).map(f); + return Data$dLazy.defer(v$2 => $4(Data$dLazy.force(v$1._2))); + })() + ); + } + if (v$1.tag === "Skip") { + return $Step( + "Skip", + (() => { + const $4 = functorListT(dictFunctor).map(f); + return Data$dLazy.defer(v$2 => $4(Data$dLazy.force(v$1._1))); + })() + ); + } + if (v$1.tag === "Done") { return Done; } + $runtime.fail(); + })(v) + } +); +const fromEffect = dictApplicative => { + const map2 = dictApplicative.Apply0().Functor0().map; + const nil1 = dictApplicative.pure(Done); + return fa => map2((() => { + const $4 = Data$dLazy.defer(v => nil1); + return a => $Step("Yield", a, $4); + })())(fa); +}; +const monadTransListT = {lift: dictMonad => fromEffect(dictMonad.Applicative0())}; +const foldlRec$p = dictMonadRec => { + const Monad0 = dictMonadRec.Monad0(); + const pure1 = Monad0.Applicative0().pure; + const bind = Monad0.Bind1().bind; + const uncons1 = uncons(Monad0); + return f => a => b => dictMonadRec.tailRecM(o => bind(uncons1(o.b))(v => { + if (v.tag === "Nothing") { return pure1(Control$dMonad$dRec$dClass.$Step("Done", o.a)); } + if (v.tag === "Just") { return bind(f(o.a)(v._1._1))(b$p => pure1(Control$dMonad$dRec$dClass.$Step("Loop", {a: b$p, b: v._1._2}))); } + $runtime.fail(); + }))({a: a, b: b}); +}; +const runListTRec = dictMonadRec => { + const pure1 = dictMonadRec.Monad0().Applicative0().pure; + return foldlRec$p(dictMonadRec)(v => v1 => pure1(Data$dUnit.unit))(Data$dUnit.unit); +}; +const foldlRec = dictMonadRec => { + const Monad0 = dictMonadRec.Monad0(); + const pure1 = Monad0.Applicative0().pure; + const bind = Monad0.Bind1().bind; + const uncons1 = uncons(Monad0); + return f => a => b => dictMonadRec.tailRecM(o => bind(uncons1(o.b))(v => { + if (v.tag === "Nothing") { return pure1(Control$dMonad$dRec$dClass.$Step("Done", o.a)); } + if (v.tag === "Just") { return pure1(Control$dMonad$dRec$dClass.$Step("Loop", {a: f(o.a)(v._1._1), b: v._1._2})); } + $runtime.fail(); + }))({a: a, b: b}); +}; +const foldl$p = dictMonad => { + const pure1 = dictMonad.Applicative0().pure; + const bind = dictMonad.Bind1().bind; + const uncons1 = uncons(dictMonad); + return f => { + const loop = b => l => bind(uncons1(l))(v => { + if (v.tag === "Nothing") { return pure1(b); } + if (v.tag === "Just") { return bind(f(b)(v._1._1))(a => loop(a)(v._1._2)); } + $runtime.fail(); + }); + return loop; + }; +}; +const runListT = dictMonad => { + const pure1 = dictMonad.Applicative0().pure; + return foldl$p(dictMonad)(v => v1 => pure1(Data$dUnit.unit))(Data$dUnit.unit); +}; +const foldl = dictMonad => { + const pure1 = dictMonad.Applicative0().pure; + const bind = dictMonad.Bind1().bind; + const uncons1 = uncons(dictMonad); + return f => { + const loop = b => l => bind(uncons1(l))(v => { + if (v.tag === "Nothing") { return pure1(b); } + if (v.tag === "Just") { return loop(f(b)(v._1._1))(v._1._2); } + $runtime.fail(); + }); + return loop; + }; +}; +const filter = dictFunctor => f => v => dictFunctor.map(v$1 => { + if (v$1.tag === "Yield") { + const $4 = filter(dictFunctor)(f); + const s$p = Data$dLazy.defer(v$2 => $4(Data$dLazy.force(v$1._2))); + if (f(v$1._1)) { return $Step("Yield", v$1._1, s$p); } + return $Step("Skip", s$p); + } + if (v$1.tag === "Skip") { + return $Step( + "Skip", + (() => { + const $4 = filter(dictFunctor)(f); + return Data$dLazy.defer(v$2 => $4(Data$dLazy.force(v$1._1))); + })() + ); + } + if (v$1.tag === "Done") { return Done; } + $runtime.fail(); +})(v); +const dropWhile = dictApplicative => { + const $1 = dictApplicative.Apply0().Functor0(); + return f => v => $1.map(v$1 => { + if (v$1.tag === "Yield") { + if (f(v$1._1)) { + return $Step( + "Skip", + (() => { + const $5 = dropWhile(dictApplicative)(f); + return Data$dLazy.defer(v$2 => $5(Data$dLazy.force(v$1._2))); + })() + ); + } + return $Step("Yield", v$1._1, v$1._2); + } + if (v$1.tag === "Skip") { + return $Step( + "Skip", + (() => { + const $5 = dropWhile(dictApplicative)(f); + return Data$dLazy.defer(v$2 => $5(Data$dLazy.force(v$1._1))); + })() + ); + } + if (v$1.tag === "Done") { return Done; } + $runtime.fail(); + })(v); +}; +const drop = dictApplicative => { + const $1 = dictApplicative.Apply0().Functor0(); + return v => v1 => { + if (v === 0) { return v1; } + return $1.map(v2 => { + if (v2.tag === "Yield") { + return $Step( + "Skip", + (() => { + const $5 = drop(dictApplicative)(v - 1 | 0); + return Data$dLazy.defer(v$1 => $5(Data$dLazy.force(v2._2))); + })() + ); + } + if (v2.tag === "Skip") { + return $Step( + "Skip", + (() => { + const $5 = drop(dictApplicative)(v); + return Data$dLazy.defer(v$1 => $5(Data$dLazy.force(v2._1))); + })() + ); + } + if (v2.tag === "Done") { return Done; } + $runtime.fail(); + })(v1); + }; +}; +const cons = dictApplicative => lh => t => dictApplicative.pure($Step("Yield", Data$dLazy.force(lh), t)); +const unfoldable1ListT = dictMonad => { + const Applicative0 = dictMonad.Applicative0(); + const singleton1 = singleton(Applicative0); + return { + unfoldr1: f => b => { + const go = v => { + if (v._2.tag === "Nothing") { return singleton1(v._1); } + if (v._2.tag === "Just") { return Applicative0.pure($Step("Yield", Data$dLazy.force(Data$dLazy.defer(v$1 => v._1)), Data$dLazy.defer(v1 => go(f(v._2._1))))); } + $runtime.fail(); + }; + return go(f(b)); + } + }; +}; +const unfoldableListT = dictMonad => { + const Applicative0 = dictMonad.Applicative0(); + const nil1 = Applicative0.pure(Done); + const unfoldable1ListT1 = unfoldable1ListT(dictMonad); + return { + unfoldr: f => b => { + const go = v => { + if (v.tag === "Nothing") { return nil1; } + if (v.tag === "Just") { return Applicative0.pure($Step("Yield", Data$dLazy.force(Data$dLazy.defer(v$1 => v._1._1)), Data$dLazy.defer(v1 => go(f(v._1._2))))); } + $runtime.fail(); + }; + return go(f(b)); + }, + Unfoldable10: () => unfoldable1ListT1 + }; +}; +const semigroupListT = dictApplicative => ({append: concat(dictApplicative)}); +const concat = dictApplicative => { + const $1 = dictApplicative.Apply0().Functor0(); + return x => y => $1.map(v => { + if (v.tag === "Yield") { return $Step("Yield", v._1, Data$dLazy.defer(v$1 => concat(dictApplicative)(Data$dLazy.force(v._2))(y))); } + if (v.tag === "Skip") { return $Step("Skip", Data$dLazy.defer(v$1 => concat(dictApplicative)(Data$dLazy.force(v._1))(y))); } + if (v.tag === "Done") { return $Step("Skip", Data$dLazy.defer(v$1 => y)); } + $runtime.fail(); + })(x); +}; +const monoidListT = dictApplicative => { + const semigroupListT1 = {append: concat(dictApplicative)}; + return {mempty: dictApplicative.pure(Done), Semigroup0: () => semigroupListT1}; +}; +const catMaybes = dictFunctor => mapMaybe(dictFunctor)(identity); +const monadListT = dictMonad => ({Applicative0: () => applicativeListT(dictMonad), Bind1: () => bindListT(dictMonad)}); +const bindListT = dictMonad => { + const append = concat(dictMonad.Applicative0()); + const $2 = dictMonad.Bind1().Apply0().Functor0(); + return { + bind: fa => f => $2.map(v => { + if (v.tag === "Yield") { return $Step("Skip", Data$dLazy.defer(v$1 => append(f(v._1))(bindListT(dictMonad).bind(Data$dLazy.force(v._2))(f)))); } + if (v.tag === "Skip") { return $Step("Skip", Data$dLazy.defer(v$1 => bindListT(dictMonad).bind(Data$dLazy.force(v._1))(f))); } + if (v.tag === "Done") { return Done; } + $runtime.fail(); + })(fa), + Apply0: () => applyListT(dictMonad) + }; +}; +const applyListT = dictMonad => { + const functorListT1 = functorListT(dictMonad.Bind1().Apply0().Functor0()); + return { + apply: (() => { + const bind = bindListT(dictMonad).bind; + const pure = applicativeListT(dictMonad).pure; + return f => a => bind(f)(f$p => bind(a)(a$p => pure(f$p(a$p)))); + })(), + Functor0: () => functorListT1 + }; +}; +const applicativeListT = dictMonad => ({pure: singleton(dictMonad.Applicative0()), Apply0: () => applyListT(dictMonad)}); +const monadEffectListT = dictMonadEffect => { + const Monad0 = dictMonadEffect.Monad0(); + const monadListT1 = {Applicative0: () => ({pure: singleton(Monad0.Applicative0()), Apply0: () => applyListT(Monad0)}), Bind1: () => bindListT(Monad0)}; + return { + liftEffect: (() => { + const $3 = fromEffect(Monad0.Applicative0()); + return x => $3(dictMonadEffect.liftEffect(x)); + })(), + Monad0: () => monadListT1 + }; +}; +const altListT = dictApplicative => { + const functorListT1 = functorListT(dictApplicative.Apply0().Functor0()); + return {alt: concat(dictApplicative), Functor0: () => functorListT1}; +}; +const plusListT = dictMonad => { + const Applicative0 = dictMonad.Applicative0(); + const altListT1 = altListT(Applicative0); + return {empty: Applicative0.pure(Done), Alt0: () => altListT1}; +}; +const alternativeListT = dictMonad => { + const applicativeListT1 = {pure: singleton(dictMonad.Applicative0()), Apply0: () => applyListT(dictMonad)}; + const plusListT1 = plusListT(dictMonad); + return {Applicative0: () => applicativeListT1, Plus1: () => plusListT1}; +}; +const monadPlusListT = dictMonad => { + const monadListT1 = {Applicative0: () => ({pure: singleton(dictMonad.Applicative0()), Apply0: () => applyListT(dictMonad)}), Bind1: () => bindListT(dictMonad)}; + const alternativeListT1 = alternativeListT(dictMonad); + return {Monad0: () => monadListT1, Alternative1: () => alternativeListT1}; +}; +export { + $Step, + Done, + ListT, + Skip, + Yield, + altListT, + alternativeListT, + applicativeListT, + applyListT, + bindListT, + catMaybes, + concat, + cons, + drop, + dropWhile, + filter, + foldl, + foldl$p, + foldlRec, + foldlRec$p, + fromEffect, + functorListT, + head, + identity, + iterate, + mapMaybe, + monadEffectListT, + monadListT, + monadPlusListT, + monadTransListT, + monoidListT, + newtypeListT, + nil, + plusListT, + prepend, + prepend$p, + repeat, + runListT, + runListTRec, + scanl, + semigroupListT, + singleton, + tail, + take, + takeWhile, + uncons, + unfold, + unfoldable1ListT, + unfoldableListT, + wrapEffect, + wrapLazy, + zipWith, + zipWith$p +}; diff --git a/.storybook/purescript-indexer/output-es/Control.Monad.Maybe.Trans/index.js b/.storybook/purescript-indexer/output-es/Control.Monad.Maybe.Trans/index.js new file mode 100644 index 0000000..a349004 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Monad.Maybe.Trans/index.js @@ -0,0 +1,214 @@ +// | This module defines the `MaybeT` monad transformer. +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dRec$dClass from "../Control.Monad.Rec.Class/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +const identity = x => x; +const MaybeT = x => x; +const runMaybeT = v => v; +const newtypeMaybeT = {Coercible0: () => undefined}; +const monadTransMaybeT = { + lift: dictMonad => { + const bind = dictMonad.Bind1().bind; + const pure = dictMonad.Applicative0().pure; + return x => bind(x)(a$p => pure(Data$dMaybe.$Maybe("Just", a$p))); + } +}; +const mapMaybeT = f => v => f(v); +const functorMaybeT = dictFunctor => ({map: f => v => dictFunctor.map(Data$dMaybe.functorMaybe.map(f))(v)}); +const monadMaybeT = dictMonad => ({Applicative0: () => applicativeMaybeT(dictMonad), Bind1: () => bindMaybeT(dictMonad)}); +const bindMaybeT = dictMonad => { + const bind = dictMonad.Bind1().bind; + const pure = dictMonad.Applicative0().pure; + return { + bind: v => f => bind(v)(v1 => { + if (v1.tag === "Nothing") { return pure(Data$dMaybe.Nothing); } + if (v1.tag === "Just") { return f(v1._1); } + $runtime.fail(); + }), + Apply0: () => applyMaybeT(dictMonad) + }; +}; +const applyMaybeT = dictMonad => { + const $1 = dictMonad.Bind1().Apply0().Functor0(); + const functorMaybeT1 = {map: f => v => $1.map(Data$dMaybe.functorMaybe.map(f))(v)}; + return { + apply: (() => { + const bind = bindMaybeT(dictMonad).bind; + const pure = applicativeMaybeT(dictMonad).pure; + return f => a => bind(f)(f$p => bind(a)(a$p => pure(f$p(a$p)))); + })(), + Functor0: () => functorMaybeT1 + }; +}; +const applicativeMaybeT = dictMonad => ( + { + pure: (() => { + const $1 = dictMonad.Applicative0().pure; + return x => $1(Data$dMaybe.$Maybe("Just", x)); + })(), + Apply0: () => applyMaybeT(dictMonad) + } +); +const semigroupMaybeT = dictMonad => { + const $1 = applyMaybeT(dictMonad); + const map = $1.Functor0().map; + return dictSemigroup => ({append: a => b => $1.apply(map(dictSemigroup.append)(a))(b)}); +}; +const monadAskMaybeT = dictMonadAsk => { + const Monad0 = dictMonadAsk.Monad0(); + const monadMaybeT1 = {Applicative0: () => applicativeMaybeT(Monad0), Bind1: () => bindMaybeT(Monad0)}; + return {ask: monadTransMaybeT.lift(Monad0)(dictMonadAsk.ask), Monad0: () => monadMaybeT1}; +}; +const monadReaderMaybeT = dictMonadReader => { + const monadAskMaybeT1 = monadAskMaybeT(dictMonadReader.MonadAsk0()); + return {local: f => dictMonadReader.local(f), MonadAsk0: () => monadAskMaybeT1}; +}; +const monadContMaybeT = dictMonadCont => { + const $1 = dictMonadCont.Monad0(); + const monadMaybeT1 = {Applicative0: () => applicativeMaybeT($1), Bind1: () => bindMaybeT($1)}; + return {callCC: f => dictMonadCont.callCC(c => f(a => c(Data$dMaybe.$Maybe("Just", a)))), Monad0: () => monadMaybeT1}; +}; +const monadEffectMaybe = dictMonadEffect => { + const Monad0 = dictMonadEffect.Monad0(); + const monadMaybeT1 = {Applicative0: () => applicativeMaybeT(Monad0), Bind1: () => bindMaybeT(Monad0)}; + return { + liftEffect: (() => { + const $3 = monadTransMaybeT.lift(Monad0); + return x => $3(dictMonadEffect.liftEffect(x)); + })(), + Monad0: () => monadMaybeT1 + }; +}; +const monadRecMaybeT = dictMonadRec => { + const Monad0 = dictMonadRec.Monad0(); + const bind = Monad0.Bind1().bind; + const pure = Monad0.Applicative0().pure; + const monadMaybeT1 = {Applicative0: () => applicativeMaybeT(Monad0), Bind1: () => bindMaybeT(Monad0)}; + return { + tailRecM: f => dictMonadRec.tailRecM(a => bind(f(a))(m$p => pure((() => { + if (m$p.tag === "Nothing") { return Control$dMonad$dRec$dClass.$Step("Done", Data$dMaybe.Nothing); } + if (m$p.tag === "Just") { + if (m$p._1.tag === "Loop") { return Control$dMonad$dRec$dClass.$Step("Loop", m$p._1._1); } + if (m$p._1.tag === "Done") { return Control$dMonad$dRec$dClass.$Step("Done", Data$dMaybe.$Maybe("Just", m$p._1._1)); } + $runtime.fail(); + } + $runtime.fail(); + })()))), + Monad0: () => monadMaybeT1 + }; +}; +const monadStateMaybeT = dictMonadState => { + const Monad0 = dictMonadState.Monad0(); + const lift1 = monadTransMaybeT.lift(Monad0); + const monadMaybeT1 = {Applicative0: () => applicativeMaybeT(Monad0), Bind1: () => bindMaybeT(Monad0)}; + return {state: f => lift1(dictMonadState.state(f)), Monad0: () => monadMaybeT1}; +}; +const monadTellMaybeT = dictMonadTell => { + const Monad1 = dictMonadTell.Monad1(); + const Semigroup0 = dictMonadTell.Semigroup0(); + const monadMaybeT1 = {Applicative0: () => applicativeMaybeT(Monad1), Bind1: () => bindMaybeT(Monad1)}; + return { + tell: (() => { + const $4 = monadTransMaybeT.lift(Monad1); + return x => $4(dictMonadTell.tell(x)); + })(), + Semigroup0: () => Semigroup0, + Monad1: () => monadMaybeT1 + }; +}; +const monadWriterMaybeT = dictMonadWriter => { + const MonadTell1 = dictMonadWriter.MonadTell1(); + const Monad1 = MonadTell1.Monad1(); + const bind = Monad1.Bind1().bind; + const pure = Monad1.Applicative0().pure; + const Monoid0 = dictMonadWriter.Monoid0(); + const monadTellMaybeT1 = monadTellMaybeT(MonadTell1); + return { + listen: v => bind(dictMonadWriter.listen(v))(v$1 => pure((() => { + if (v$1._1.tag === "Just") { return Data$dMaybe.$Maybe("Just", Data$dTuple.$Tuple(v$1._1._1, v$1._2)); } + return Data$dMaybe.Nothing; + })())), + pass: v => dictMonadWriter.pass(bind(v)(a => pure((() => { + if (a.tag === "Nothing") { return Data$dTuple.$Tuple(Data$dMaybe.Nothing, identity); } + if (a.tag === "Just") { return Data$dTuple.$Tuple(Data$dMaybe.$Maybe("Just", a._1._1), a._1._2); } + $runtime.fail(); + })()))), + Monoid0: () => Monoid0, + MonadTell1: () => monadTellMaybeT1 + }; +}; +const monadThrowMaybeT = dictMonadThrow => { + const Monad0 = dictMonadThrow.Monad0(); + const lift1 = monadTransMaybeT.lift(Monad0); + const monadMaybeT1 = {Applicative0: () => applicativeMaybeT(Monad0), Bind1: () => bindMaybeT(Monad0)}; + return {throwError: e => lift1(dictMonadThrow.throwError(e)), Monad0: () => monadMaybeT1}; +}; +const monadErrorMaybeT = dictMonadError => { + const monadThrowMaybeT1 = monadThrowMaybeT(dictMonadError.MonadThrow0()); + return {catchError: v => h => dictMonadError.catchError(v)(a => h(a)), MonadThrow0: () => monadThrowMaybeT1}; +}; +const monoidMaybeT = dictMonad => { + const pure = applicativeMaybeT(dictMonad).pure; + const semigroupMaybeT1 = semigroupMaybeT(dictMonad); + return dictMonoid => { + const semigroupMaybeT2 = semigroupMaybeT1(dictMonoid.Semigroup0()); + return {mempty: pure(dictMonoid.mempty), Semigroup0: () => semigroupMaybeT2}; + }; +}; +const altMaybeT = dictMonad => { + const Bind1 = dictMonad.Bind1(); + const pure = dictMonad.Applicative0().pure; + const $3 = Bind1.Apply0().Functor0(); + const functorMaybeT1 = {map: f => v => $3.map(Data$dMaybe.functorMaybe.map(f))(v)}; + return { + alt: v => v1 => Bind1.bind(v)(m => { + if (m.tag === "Nothing") { return v1; } + return pure(m); + }), + Functor0: () => functorMaybeT1 + }; +}; +const plusMaybeT = dictMonad => { + const altMaybeT1 = altMaybeT(dictMonad); + return {empty: dictMonad.Applicative0().pure(Data$dMaybe.Nothing), Alt0: () => altMaybeT1}; +}; +const alternativeMaybeT = dictMonad => { + const applicativeMaybeT1 = applicativeMaybeT(dictMonad); + const plusMaybeT1 = plusMaybeT(dictMonad); + return {Applicative0: () => applicativeMaybeT1, Plus1: () => plusMaybeT1}; +}; +const monadPlusMaybeT = dictMonad => { + const monadMaybeT1 = {Applicative0: () => applicativeMaybeT(dictMonad), Bind1: () => bindMaybeT(dictMonad)}; + const alternativeMaybeT1 = alternativeMaybeT(dictMonad); + return {Monad0: () => monadMaybeT1, Alternative1: () => alternativeMaybeT1}; +}; +export { + MaybeT, + altMaybeT, + alternativeMaybeT, + applicativeMaybeT, + applyMaybeT, + bindMaybeT, + functorMaybeT, + identity, + mapMaybeT, + monadAskMaybeT, + monadContMaybeT, + monadEffectMaybe, + monadErrorMaybeT, + monadMaybeT, + monadPlusMaybeT, + monadReaderMaybeT, + monadRecMaybeT, + monadStateMaybeT, + monadTellMaybeT, + monadThrowMaybeT, + monadTransMaybeT, + monadWriterMaybeT, + monoidMaybeT, + newtypeMaybeT, + plusMaybeT, + runMaybeT, + semigroupMaybeT +}; diff --git a/.storybook/purescript-indexer/output-es/Control.Monad.RWS.Trans/index.js b/.storybook/purescript-indexer/output-es/Control.Monad.RWS.Trans/index.js new file mode 100644 index 0000000..3e98ce2 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Monad.RWS.Trans/index.js @@ -0,0 +1,240 @@ +// | This module defines the reader-writer-state monad transformer, `RWST`. +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dRec$dClass from "../Control.Monad.Rec.Class/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +const $RWSResult = (_1, _2, _3) => ({tag: "RWSResult", _1, _2, _3}); +const RWSResult = value0 => value1 => value2 => $RWSResult(value0, value1, value2); +const RWST = x => x; +const withRWST = f => m => r => s => { + const $4 = f(r)(s); + return m($4._1)($4._2); +}; +const runRWST = v => v; +const newtypeRWST = {Coercible0: () => undefined}; +const monadTransRWST = dictMonoid => ( + { + lift: dictMonad => { + const bind = dictMonad.Bind1().bind; + const pure = dictMonad.Applicative0().pure; + return m => v => s => bind(m)(a => pure($RWSResult(s, a, dictMonoid.mempty))); + } + } +); +const mapRWST = f => v => r => s => f(v(r)(s)); +const lazyRWST = {defer: f => r => s => f(Data$dUnit.unit)(r)(s)}; +const functorRWST = dictFunctor => ({map: f => v => r => s => dictFunctor.map(v1 => $RWSResult(v1._1, f(v1._2), v1._3))(v(r)(s))}); +const execRWST = dictMonad => { + const bind = dictMonad.Bind1().bind; + const pure = dictMonad.Applicative0().pure; + return v => r => s => bind(v(r)(s))(v1 => pure(Data$dTuple.$Tuple(v1._1, v1._3))); +}; +const evalRWST = dictMonad => { + const bind = dictMonad.Bind1().bind; + const pure = dictMonad.Applicative0().pure; + return v => r => s => bind(v(r)(s))(v1 => pure(Data$dTuple.$Tuple(v1._2, v1._3))); +}; +const applyRWST = dictBind => { + const Functor0 = dictBind.Apply0().Functor0(); + const functorRWST1 = functorRWST(Functor0); + return dictMonoid => { + const append = dictMonoid.Semigroup0().append; + return { + apply: v => v1 => r => s => dictBind.bind(v(r)(s))(v2 => Functor0.map(v3 => $RWSResult(v3._1, v2._2(v3._2), append(v2._3)(v3._3)))(v1(r)(v2._1))), + Functor0: () => functorRWST1 + }; + }; +}; +const bindRWST = dictBind => { + const $1 = dictBind.Apply0().Functor0(); + const applyRWST1 = applyRWST(dictBind); + return dictMonoid => { + const append = dictMonoid.Semigroup0().append; + const applyRWST2 = applyRWST1(dictMonoid); + return {bind: v => f => r => s => dictBind.bind(v(r)(s))(v1 => $1.map(v3 => $RWSResult(v3._1, v3._2, append(v1._3)(v3._3)))(f(v1._2)(r)(v1._1))), Apply0: () => applyRWST2}; + }; +}; +const semigroupRWST = dictBind => { + const applyRWST1 = applyRWST(dictBind); + return dictMonoid => { + const $3 = applyRWST1(dictMonoid); + const map = $3.Functor0().map; + return dictSemigroup => ({append: a => b => $3.apply(map(dictSemigroup.append)(a))(b)}); + }; +}; +const applicativeRWST = dictMonad => { + const pure = dictMonad.Applicative0().pure; + const applyRWST1 = applyRWST(dictMonad.Bind1()); + return dictMonoid => { + const applyRWST2 = applyRWST1(dictMonoid); + return {pure: a => v => s => pure($RWSResult(s, a, dictMonoid.mempty)), Apply0: () => applyRWST2}; + }; +}; +const monadRWST = dictMonad => { + const applicativeRWST1 = applicativeRWST(dictMonad); + const bindRWST1 = bindRWST(dictMonad.Bind1()); + return dictMonoid => { + const applicativeRWST2 = applicativeRWST1(dictMonoid); + const bindRWST2 = bindRWST1(dictMonoid); + return {Applicative0: () => applicativeRWST2, Bind1: () => bindRWST2}; + }; +}; +const monadAskRWST = dictMonad => { + const pure = dictMonad.Applicative0().pure; + const monadRWST1 = monadRWST(dictMonad); + return dictMonoid => { + const monadRWST2 = monadRWST1(dictMonoid); + return {ask: r => s => pure($RWSResult(s, r, dictMonoid.mempty)), Monad0: () => monadRWST2}; + }; +}; +const monadReaderRWST = dictMonad => { + const monadAskRWST1 = monadAskRWST(dictMonad); + return dictMonoid => { + const monadAskRWST2 = monadAskRWST1(dictMonoid); + return {local: f => m => r => s => m(f(r))(s), MonadAsk0: () => monadAskRWST2}; + }; +}; +const monadEffectRWS = dictMonoid => { + const lift = monadTransRWST(dictMonoid).lift; + return dictMonadEffect => { + const Monad0 = dictMonadEffect.Monad0(); + const monadRWST1 = monadRWST(Monad0)(dictMonoid); + return { + liftEffect: (() => { + const $5 = lift(Monad0); + return x => $5(dictMonadEffect.liftEffect(x)); + })(), + Monad0: () => monadRWST1 + }; + }; +}; +const monadRecRWST = dictMonadRec => { + const Monad0 = dictMonadRec.Monad0(); + const bind = Monad0.Bind1().bind; + const pure = Monad0.Applicative0().pure; + const monadRWST1 = monadRWST(Monad0); + return dictMonoid => { + const append = dictMonoid.Semigroup0().append; + const monadRWST2 = monadRWST1(dictMonoid); + return { + tailRecM: k => a => r => s => dictMonadRec.tailRecM(v => bind(k(v._2)(r)(v._1))(v2 => pure((() => { + if (v2._2.tag === "Loop") { return Control$dMonad$dRec$dClass.$Step("Loop", $RWSResult(v2._1, v2._2._1, append(v._3)(v2._3))); } + if (v2._2.tag === "Done") { return Control$dMonad$dRec$dClass.$Step("Done", $RWSResult(v2._1, v2._2._1, append(v._3)(v2._3))); } + $runtime.fail(); + })())))($RWSResult(s, a, dictMonoid.mempty)), + Monad0: () => monadRWST2 + }; + }; +}; +const monadStateRWST = dictMonad => { + const pure = dictMonad.Applicative0().pure; + const monadRWST1 = monadRWST(dictMonad); + return dictMonoid => { + const monadRWST2 = monadRWST1(dictMonoid); + return { + state: f => v => s => { + const v1 = f(s); + return pure($RWSResult(v1._2, v1._1, dictMonoid.mempty)); + }, + Monad0: () => monadRWST2 + }; + }; +}; +const monadTellRWST = dictMonad => { + const pure = dictMonad.Applicative0().pure; + const monadRWST1 = monadRWST(dictMonad); + return dictMonoid => { + const Semigroup0 = dictMonoid.Semigroup0(); + const monadRWST2 = monadRWST1(dictMonoid); + return {tell: w => v => s => pure($RWSResult(s, Data$dUnit.unit, w)), Semigroup0: () => Semigroup0, Monad1: () => monadRWST2}; + }; +}; +const monadWriterRWST = dictMonad => { + const bind = dictMonad.Bind1().bind; + const pure = dictMonad.Applicative0().pure; + const monadTellRWST1 = monadTellRWST(dictMonad); + return dictMonoid => { + const monadTellRWST2 = monadTellRWST1(dictMonoid); + return { + listen: m => r => s => bind(m(r)(s))(v => pure($RWSResult(v._1, Data$dTuple.$Tuple(v._2, v._3), v._3))), + pass: m => r => s => bind(m(r)(s))(v => pure($RWSResult(v._1, v._2._1, v._2._2(v._3)))), + Monoid0: () => dictMonoid, + MonadTell1: () => monadTellRWST2 + }; + }; +}; +const monadThrowRWST = dictMonadThrow => { + const Monad0 = dictMonadThrow.Monad0(); + const monadRWST1 = monadRWST(Monad0); + return dictMonoid => { + const lift = monadTransRWST(dictMonoid).lift(Monad0); + const monadRWST2 = monadRWST1(dictMonoid); + return {throwError: e => lift(dictMonadThrow.throwError(e)), Monad0: () => monadRWST2}; + }; +}; +const monadErrorRWST = dictMonadError => { + const monadThrowRWST1 = monadThrowRWST(dictMonadError.MonadThrow0()); + return dictMonoid => { + const monadThrowRWST2 = monadThrowRWST1(dictMonoid); + return {catchError: m => h => r => s => dictMonadError.catchError(m(r)(s))(e => h(e)(r)(s)), MonadThrow0: () => monadThrowRWST2}; + }; +}; +const monoidRWST = dictMonad => { + const applicativeRWST1 = applicativeRWST(dictMonad); + const semigroupRWST1 = semigroupRWST(dictMonad.Bind1()); + return dictMonoid => { + const pure = applicativeRWST1(dictMonoid).pure; + const semigroupRWST2 = semigroupRWST1(dictMonoid); + return dictMonoid1 => { + const semigroupRWST3 = semigroupRWST2(dictMonoid1.Semigroup0()); + return {mempty: pure(dictMonoid1.mempty), Semigroup0: () => semigroupRWST3}; + }; + }; +}; +const altRWST = dictAlt => { + const functorRWST1 = functorRWST(dictAlt.Functor0()); + return {alt: v => v1 => r => s => dictAlt.alt(v(r)(s))(v1(r)(s)), Functor0: () => functorRWST1}; +}; +const plusRWST = dictPlus => { + const altRWST1 = altRWST(dictPlus.Alt0()); + return {empty: v => v1 => dictPlus.empty, Alt0: () => altRWST1}; +}; +const alternativeRWST = dictMonoid => dictAlternative => { + const plusRWST1 = plusRWST(dictAlternative.Plus1()); + return dictMonad => { + const applicativeRWST1 = applicativeRWST(dictMonad)(dictMonoid); + return {Applicative0: () => applicativeRWST1, Plus1: () => plusRWST1}; + }; +}; +export { + $RWSResult, + RWSResult, + RWST, + altRWST, + alternativeRWST, + applicativeRWST, + applyRWST, + bindRWST, + evalRWST, + execRWST, + functorRWST, + lazyRWST, + mapRWST, + monadAskRWST, + monadEffectRWS, + monadErrorRWST, + monadRWST, + monadReaderRWST, + monadRecRWST, + monadStateRWST, + monadTellRWST, + monadThrowRWST, + monadTransRWST, + monadWriterRWST, + monoidRWST, + newtypeRWST, + plusRWST, + runRWST, + semigroupRWST, + withRWST +}; diff --git a/.storybook/purescript-indexer/output-es/Control.Monad.RWS/index.js b/.storybook/purescript-indexer/output-es/Control.Monad.RWS/index.js new file mode 100644 index 0000000..df8f661 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Monad.RWS/index.js @@ -0,0 +1,13 @@ +// | This module defines the `RWS` monad. +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dRWS$dTrans from "../Control.Monad.RWS.Trans/index.js"; +import * as Data$dIdentity from "../Data.Identity/index.js"; +const execRWST = /* #__PURE__ */ Control$dMonad$dRWS$dTrans.execRWST(Data$dIdentity.monadIdentity); +const evalRWST = /* #__PURE__ */ Control$dMonad$dRWS$dTrans.evalRWST(Data$dIdentity.monadIdentity); +const withRWS = Control$dMonad$dRWS$dTrans.withRWST; +const rws = f => r => s => f(r)(s); +const runRWS = m => r => s => m(r)(s); +const mapRWS = f => v => r => s => f(v(r)(s)); +const execRWS = m => r => s => execRWST(m)(r)(s); +const evalRWS = m => r => s => evalRWST(m)(r)(s); +export {evalRWS, evalRWST, execRWS, execRWST, mapRWS, runRWS, rws, withRWS}; diff --git a/.storybook/purescript-indexer/output-es/Control.Monad.Reader.Class/index.js b/.storybook/purescript-indexer/output-es/Control.Monad.Reader.Class/index.js new file mode 100644 index 0000000..de0155a --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Monad.Reader.Class/index.js @@ -0,0 +1,12 @@ +// | This module defines the `MonadReader` type class and its instances. +import * as $runtime from "../runtime.js"; +import * as Control$dMonad from "../Control.Monad/index.js"; +const monadAskFun = {ask: x => x, Monad0: () => Control$dMonad.monadFn}; +const monadReaderFun = {local: f => g => x => g(f(x)), MonadAsk0: () => monadAskFun}; +const local = dict => dict.local; +const ask = dict => dict.ask; +const asks = dictMonadAsk => { + const map = dictMonadAsk.Monad0().Bind1().Apply0().Functor0().map; + return f => map(f)(dictMonadAsk.ask); +}; +export {ask, asks, local, monadAskFun, monadReaderFun}; diff --git a/.storybook/purescript-indexer/output-es/Control.Monad.Reader.Trans/index.js b/.storybook/purescript-indexer/output-es/Control.Monad.Reader.Trans/index.js new file mode 100644 index 0000000..397376c --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Monad.Reader.Trans/index.js @@ -0,0 +1,293 @@ +// | This module defines the reader monad transformer, `ReaderT`. +import * as $runtime from "../runtime.js"; +const ReaderT = x => x; +const withReaderT = f => v => x => v(f(x)); +const runReaderT = v => v; +const newtypeReaderT = {Coercible0: () => undefined}; +const monadTransReaderT = {lift: dictMonad => x => v => x}; +const mapReaderT = f => v => x => f(v(x)); +const functorReaderT = dictFunctor => ( + { + map: x => { + const $2 = dictFunctor.map(x); + return v => x$1 => $2(v(x$1)); + } + } +); +const distributiveReaderT = dictDistributive => { + const $1 = dictDistributive.Functor0(); + const functorReaderT1 = { + map: x => { + const $3 = $1.map(x); + return v => x$1 => $3(v(x$1)); + } + }; + return { + distribute: dictFunctor => { + const collect1 = dictDistributive.collect(dictFunctor); + return a => e => collect1(r => r(e))(a); + }, + collect: dictFunctor => f => { + const $5 = distributiveReaderT(dictDistributive).distribute(dictFunctor); + const $6 = dictFunctor.map(f); + return x => $5($6(x)); + }, + Functor0: () => functorReaderT1 + }; +}; +const applyReaderT = dictApply => { + const $1 = dictApply.Functor0(); + const functorReaderT1 = { + map: x => { + const $3 = $1.map(x); + return v => x$1 => $3(v(x$1)); + } + }; + return {apply: v => v1 => r => dictApply.apply(v(r))(v1(r)), Functor0: () => functorReaderT1}; +}; +const bindReaderT = dictBind => { + const $1 = dictBind.Apply0(); + const $2 = $1.Functor0(); + const functorReaderT1 = { + map: x => { + const $4 = $2.map(x); + return v => x$1 => $4(v(x$1)); + } + }; + const applyReaderT1 = {apply: v => v1 => r => $1.apply(v(r))(v1(r)), Functor0: () => functorReaderT1}; + return {bind: v => k => r => dictBind.bind(v(r))(a => k(a)(r)), Apply0: () => applyReaderT1}; +}; +const semigroupReaderT = dictApply => { + const $1 = dictApply.Functor0(); + return dictSemigroup => ( + { + append: a => b => { + const $5 = $1.map(dictSemigroup.append); + return r => dictApply.apply($5(a(r)))(b(r)); + } + } + ); +}; +const applicativeReaderT = dictApplicative => { + const $1 = dictApplicative.Apply0(); + const $2 = $1.Functor0(); + const functorReaderT1 = { + map: x => { + const $4 = $2.map(x); + return v => x$1 => $4(v(x$1)); + } + }; + const applyReaderT1 = {apply: v => v1 => r => $1.apply(v(r))(v1(r)), Functor0: () => functorReaderT1}; + return { + pure: x => { + const $6 = dictApplicative.pure(x); + return v => $6; + }, + Apply0: () => applyReaderT1 + }; +}; +const monadReaderT = dictMonad => { + const $1 = dictMonad.Applicative0(); + const $2 = $1.Apply0(); + const $3 = $2.Functor0(); + const functorReaderT1 = { + map: x => { + const $5 = $3.map(x); + return v => x$1 => $5(v(x$1)); + } + }; + const applyReaderT1 = {apply: v => v1 => r => $2.apply(v(r))(v1(r)), Functor0: () => functorReaderT1}; + const applicativeReaderT1 = { + pure: x => { + const $7 = $1.pure(x); + return v => $7; + }, + Apply0: () => applyReaderT1 + }; + const bindReaderT1 = bindReaderT(dictMonad.Bind1()); + return {Applicative0: () => applicativeReaderT1, Bind1: () => bindReaderT1}; +}; +const monadAskReaderT = dictMonad => { + const monadReaderT1 = monadReaderT(dictMonad); + return {ask: dictMonad.Applicative0().pure, Monad0: () => monadReaderT1}; +}; +const monadReaderReaderT = dictMonad => { + const monadReaderT1 = monadReaderT(dictMonad); + const monadAskReaderT1 = {ask: dictMonad.Applicative0().pure, Monad0: () => monadReaderT1}; + return {local: withReaderT, MonadAsk0: () => monadAskReaderT1}; +}; +const monadContReaderT = dictMonadCont => { + const monadReaderT1 = monadReaderT(dictMonadCont.Monad0()); + return { + callCC: f => r => dictMonadCont.callCC(c => f(x => { + const $6 = c(x); + return v => $6; + })(r)), + Monad0: () => monadReaderT1 + }; +}; +const monadEffectReader = dictMonadEffect => { + const monadReaderT1 = monadReaderT(dictMonadEffect.Monad0()); + return { + liftEffect: x => { + const $3 = dictMonadEffect.liftEffect(x); + return v => $3; + }, + Monad0: () => monadReaderT1 + }; +}; +const monadRecReaderT = dictMonadRec => { + const Monad0 = dictMonadRec.Monad0(); + const $2 = Monad0.Bind1(); + const pure = Monad0.Applicative0().pure; + const monadReaderT1 = monadReaderT(Monad0); + return {tailRecM: k => a => r => dictMonadRec.tailRecM(a$p => $2.bind(k(a$p)(r))(pure))(a), Monad0: () => monadReaderT1}; +}; +const monadStateReaderT = dictMonadState => { + const monadReaderT1 = monadReaderT(dictMonadState.Monad0()); + return { + state: x => { + const $3 = dictMonadState.state(x); + return v => $3; + }, + Monad0: () => monadReaderT1 + }; +}; +const monadTellReaderT = dictMonadTell => { + const Semigroup0 = dictMonadTell.Semigroup0(); + const monadReaderT1 = monadReaderT(dictMonadTell.Monad1()); + return { + tell: x => { + const $4 = dictMonadTell.tell(x); + return v => $4; + }, + Semigroup0: () => Semigroup0, + Monad1: () => monadReaderT1 + }; +}; +const monadWriterReaderT = dictMonadWriter => { + const Monoid0 = dictMonadWriter.Monoid0(); + const monadTellReaderT1 = monadTellReaderT(dictMonadWriter.MonadTell1()); + return {listen: v => x => dictMonadWriter.listen(v(x)), pass: v => x => dictMonadWriter.pass(v(x)), Monoid0: () => Monoid0, MonadTell1: () => monadTellReaderT1}; +}; +const monadThrowReaderT = dictMonadThrow => { + const monadReaderT1 = monadReaderT(dictMonadThrow.Monad0()); + return { + throwError: x => { + const $3 = dictMonadThrow.throwError(x); + return v => $3; + }, + Monad0: () => monadReaderT1 + }; +}; +const monadErrorReaderT = dictMonadError => { + const monadThrowReaderT1 = monadThrowReaderT(dictMonadError.MonadThrow0()); + return {catchError: v => h => r => dictMonadError.catchError(v(r))(e => h(e)(r)), MonadThrow0: () => monadThrowReaderT1}; +}; +const monoidReaderT = dictApplicative => { + const $1 = dictApplicative.Apply0(); + const $2 = $1.Functor0(); + return dictMonoid => { + const $4 = dictMonoid.Semigroup0(); + const semigroupReaderT2 = { + append: a => b => { + const $7 = $2.map($4.append); + return r => $1.apply($7(a(r)))(b(r)); + } + }; + return { + mempty: (() => { + const $6 = dictApplicative.pure(dictMonoid.mempty); + return v => $6; + })(), + Semigroup0: () => semigroupReaderT2 + }; + }; +}; +const altReaderT = dictAlt => { + const $1 = dictAlt.Functor0(); + const functorReaderT1 = { + map: x => { + const $3 = $1.map(x); + return v => x$1 => $3(v(x$1)); + } + }; + return {alt: v => v1 => r => dictAlt.alt(v(r))(v1(r)), Functor0: () => functorReaderT1}; +}; +const plusReaderT = dictPlus => { + const $1 = dictPlus.Alt0(); + const $2 = $1.Functor0(); + const functorReaderT1 = { + map: x => { + const $4 = $2.map(x); + return v => x$1 => $4(v(x$1)); + } + }; + const altReaderT1 = {alt: v => v1 => r => $1.alt(v(r))(v1(r)), Functor0: () => functorReaderT1}; + return {empty: v => dictPlus.empty, Alt0: () => altReaderT1}; +}; +const alternativeReaderT = dictAlternative => { + const $1 = dictAlternative.Applicative0(); + const $2 = $1.Apply0(); + const $3 = $2.Functor0(); + const functorReaderT1 = { + map: x => { + const $5 = $3.map(x); + return v => x$1 => $5(v(x$1)); + } + }; + const applyReaderT1 = {apply: v => v1 => r => $2.apply(v(r))(v1(r)), Functor0: () => functorReaderT1}; + const applicativeReaderT1 = { + pure: x => { + const $7 = $1.pure(x); + return v => $7; + }, + Apply0: () => applyReaderT1 + }; + const $7 = dictAlternative.Plus1(); + const $8 = $7.Alt0(); + const $9 = $8.Functor0(); + const functorReaderT1$1 = { + map: x => { + const $11 = $9.map(x); + return v => x$1 => $11(v(x$1)); + } + }; + const altReaderT1 = {alt: v => v1 => r => $8.alt(v(r))(v1(r)), Functor0: () => functorReaderT1$1}; + return {Applicative0: () => applicativeReaderT1, Plus1: () => ({empty: v => $7.empty, Alt0: () => altReaderT1})}; +}; +const monadPlusReaderT = dictMonadPlus => { + const monadReaderT1 = monadReaderT(dictMonadPlus.Monad0()); + const alternativeReaderT1 = alternativeReaderT(dictMonadPlus.Alternative1()); + return {Monad0: () => monadReaderT1, Alternative1: () => alternativeReaderT1}; +}; +export { + ReaderT, + altReaderT, + alternativeReaderT, + applicativeReaderT, + applyReaderT, + bindReaderT, + distributiveReaderT, + functorReaderT, + mapReaderT, + monadAskReaderT, + monadContReaderT, + monadEffectReader, + monadErrorReaderT, + monadPlusReaderT, + monadReaderReaderT, + monadReaderT, + monadRecReaderT, + monadStateReaderT, + monadTellReaderT, + monadThrowReaderT, + monadTransReaderT, + monadWriterReaderT, + monoidReaderT, + newtypeReaderT, + plusReaderT, + runReaderT, + semigroupReaderT, + withReaderT +}; diff --git a/.storybook/purescript-indexer/output-es/Control.Monad.Reader/index.js b/.storybook/purescript-indexer/output-es/Control.Monad.Reader/index.js new file mode 100644 index 0000000..afbcef9 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Monad.Reader/index.js @@ -0,0 +1,7 @@ +// | This module defines the `Reader` monad. +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dReader$dTrans from "../Control.Monad.Reader.Trans/index.js"; +const withReader = Control$dMonad$dReader$dTrans.withReaderT; +const runReader = v => x => v(x); +const mapReader = f => v => x => f(v(x)); +export {mapReader, runReader, withReader}; diff --git a/.storybook/purescript-indexer/output-es/Control.Monad.Rec.Class/index.js b/.storybook/purescript-indexer/output-es/Control.Monad.Rec.Class/index.js new file mode 100644 index 0000000..1d7ea4d --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Monad.Rec.Class/index.js @@ -0,0 +1,270 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dMonad from "../Control.Monad/index.js"; +import * as Data$dEither from "../Data.Either/index.js"; +import * as Data$dIdentity from "../Data.Identity/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +import * as Effect from "../Effect/index.js"; +import * as Effect$dRef from "../Effect.Ref/index.js"; +const $Step = (tag, _1) => ({tag, _1}); +const Loop = value0 => $Step("Loop", value0); +const Done = value0 => $Step("Done", value0); +const tailRecM = dict => dict.tailRecM; +const tailRecM2 = dictMonadRec => f => a => b => dictMonadRec.tailRecM(o => f(o.a)(o.b))({a: a, b: b}); +const tailRecM3 = dictMonadRec => f => a => b => c => dictMonadRec.tailRecM(o => f(o.a)(o.b)(o.c))({a: a, b: b, c: c}); +const untilJust = dictMonadRec => { + const $1 = dictMonadRec.Monad0().Bind1().Apply0().Functor0(); + return m => dictMonadRec.tailRecM(v => $1.map(v1 => { + if (v1.tag === "Nothing") { return $Step("Loop", Data$dUnit.unit); } + if (v1.tag === "Just") { return $Step("Done", v1._1); } + $runtime.fail(); + })(m))(Data$dUnit.unit); +}; +const whileJust = dictMonoid => { + const append = dictMonoid.Semigroup0().append; + return dictMonadRec => { + const $3 = dictMonadRec.Monad0().Bind1().Apply0().Functor0(); + return m => dictMonadRec.tailRecM(v => $3.map(v1 => { + if (v1.tag === "Nothing") { return $Step("Done", v); } + if (v1.tag === "Just") { return $Step("Loop", append(v)(v1._1)); } + $runtime.fail(); + })(m))(dictMonoid.mempty); + }; +}; +const tailRec = 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; + } + $runtime.fail(); + }; + return go$r; + }; + return x => go(f(x)); +}; +const tailRec2 = f => a => b => { + 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.a)(v._1.b); + continue; + } + if (v.tag === "Done") { + go$c = false; + go$r = v._1; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go(f(a)(b)); +}; +const tailRec3 = f => a => b => c => { + 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.a)(v._1.b)(v._1.c); + continue; + } + if (v.tag === "Done") { + go$c = false; + go$r = v._1; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go(f(a)(b)(c)); +}; +const monadRecMaybe = { + tailRecM: f => a0 => { + const $2 = v => { + if (v.tag === "Nothing") { return $Step("Done", Data$dMaybe.Nothing); } + if (v.tag === "Just") { + if (v._1.tag === "Loop") { return $Step("Loop", f(v._1._1)); } + if (v._1.tag === "Done") { return $Step("Done", Data$dMaybe.$Maybe("Just", v._1._1)); } + $runtime.fail(); + } + $runtime.fail(); + }; + 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 = $2(v._1); + continue; + } + if (v.tag === "Done") { + go$c = false; + go$r = v._1; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go($2(f(a0))); + }, + Monad0: () => Data$dMaybe.monadMaybe +}; +const 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; + } + $runtime.fail(); + }; + return go$r; + }; + return x => go(f(x)); + }, + Monad0: () => Data$dIdentity.monadIdentity +}; +const monadRecFunction = { + tailRecM: f => a0 => e => { + 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)(e); + continue; + } + if (v.tag === "Done") { + go$c = false; + go$r = v._1; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go(f(a0)(e)); + }, + Monad0: () => Control$dMonad.monadFn +}; +const monadRecEither = { + tailRecM: f => a0 => { + const $2 = v => { + if (v.tag === "Left") { return $Step("Done", Data$dEither.$Either("Left", v._1)); } + if (v.tag === "Right") { + if (v._1.tag === "Loop") { return $Step("Loop", f(v._1._1)); } + if (v._1.tag === "Done") { return $Step("Done", Data$dEither.$Either("Right", v._1._1)); } + $runtime.fail(); + } + $runtime.fail(); + }; + 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 = $2(v._1); + continue; + } + if (v.tag === "Done") { + go$c = false; + go$r = v._1; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go($2(f(a0))); + }, + Monad0: () => Data$dEither.monadEither +}; +const monadRecEffect = { + tailRecM: f => a => { + const $2 = Effect.bindE(f(a))(Effect$dRef._new); + return () => { + const r = $2(); + Effect.untilE(() => { + const v = r.value; + if (v.tag === "Loop") { + const e = f(v._1)(); + r.value = e; + return false; + } + if (v.tag === "Done") { return true; } + $runtime.fail(); + })(); + const a$p = r.value; + return (() => { + if (a$p.tag === "Done") { return a$p._1; } + $runtime.fail(); + })(); + }; + }, + Monad0: () => Effect.monadEffect +}; +const loop3 = a => b => c => $Step("Loop", {a: a, b: b, c: c}); +const loop2 = a => b => $Step("Loop", {a: a, b: b}); +const functorStep = { + map: f => m => { + if (m.tag === "Loop") { return $Step("Loop", m._1); } + if (m.tag === "Done") { return $Step("Done", f(m._1)); } + $runtime.fail(); + } +}; +const forever = dictMonadRec => { + const $1 = dictMonadRec.Monad0().Bind1().Apply0().Functor0(); + return ma => dictMonadRec.tailRecM(u => $1.map(v => $Step("Loop", u))(ma))(Data$dUnit.unit); +}; +const bifunctorStep = { + bimap: v => v1 => v2 => { + if (v2.tag === "Loop") { return $Step("Loop", v(v2._1)); } + if (v2.tag === "Done") { return $Step("Done", v1(v2._1)); } + $runtime.fail(); + } +}; +export { + $Step, + Done, + Loop, + bifunctorStep, + forever, + functorStep, + loop2, + loop3, + monadRecEffect, + monadRecEither, + monadRecFunction, + monadRecIdentity, + monadRecMaybe, + tailRec, + tailRec2, + tailRec3, + tailRecM, + tailRecM2, + tailRecM3, + untilJust, + whileJust +}; diff --git a/.storybook/purescript-indexer/output-es/Control.Monad.ST.Class/index.js b/.storybook/purescript-indexer/output-es/Control.Monad.ST.Class/index.js new file mode 100644 index 0000000..6aaab77 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Monad.ST.Class/index.js @@ -0,0 +1,8 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dST$dInternal from "../Control.Monad.ST.Internal/index.js"; +import * as Effect from "../Effect/index.js"; +import * as Unsafe$dCoerce from "../Unsafe.Coerce/index.js"; +const monadSTST = {liftST: x => x, Monad0: () => Control$dMonad$dST$dInternal.monadST}; +const monadSTEffect = {liftST: Unsafe$dCoerce.unsafeCoerce, Monad0: () => Effect.monadEffect}; +const liftST = dict => dict.liftST; +export {liftST, monadSTEffect, monadSTST}; diff --git a/.storybook/purescript-indexer/output-es/Control.Monad.ST.Global/index.js b/.storybook/purescript-indexer/output-es/Control.Monad.ST.Global/index.js new file mode 100644 index 0000000..bd42473 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Monad.ST.Global/index.js @@ -0,0 +1,4 @@ +import * as $runtime from "../runtime.js"; +import * as Unsafe$dCoerce from "../Unsafe.Coerce/index.js"; +const toEffect = Unsafe$dCoerce.unsafeCoerce; +export {toEffect}; diff --git a/.storybook/purescript-indexer/output-es/Control.Monad.ST.Internal/foreign.js b/.storybook/purescript-indexer/output-es/Control.Monad.ST.Internal/foreign.js new file mode 100644 index 0000000..24d2ed8 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Monad.ST.Internal/foreign.js @@ -0,0 +1,90 @@ +export const map_ = function (f) { + return function (a) { + return function () { + return f(a()); + }; + }; +}; + +export const pure_ = function (a) { + return function () { + return a; + }; +}; + +export const bind_ = function (a) { + return function (f) { + return function () { + return f(a())(); + }; + }; +}; + +export const run = function (f) { + return f(); +}; + +function whileST(f) { + return function (a) { + return function () { + while (f()) { + a(); + } + }; + }; +} +export { whileST as while }; + +function forST(lo) { + return function (hi) { + return function (f) { + return function () { + for (var i = lo; i < hi; i++) { + f(i)(); + } + }; + }; + }; +} +export { forST as for }; + +export const foreach = function (as) { + return function (f) { + return function () { + for (var i = 0, l = as.length; i < l; i++) { + f(as[i])(); + } + }; + }; +}; + +function newSTRef(val) { + return function () { + return { value: val }; + }; +} +export { newSTRef as new }; + +export const read = function (ref) { + return function () { + return ref.value; + }; +}; + +export const modifyImpl = function (f) { + return function (ref) { + return function () { + var t = f(ref.value); + ref.value = t.state; + return t.value; + }; + }; +}; + +export const write = function (a) { + return function (ref) { + return function () { + return ref.value = a; // eslint-disable-line no-return-assign + }; + }; +}; diff --git a/.storybook/purescript-indexer/output-es/Control.Monad.ST.Internal/index.js b/.storybook/purescript-indexer/output-es/Control.Monad.ST.Internal/index.js new file mode 100644 index 0000000..5e43c66 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Monad.ST.Internal/index.js @@ -0,0 +1,69 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +import {bind_, for as $$for, foreach, map_, modifyImpl, new as $$new, pure_, read, run, while as $$while, write} from "./foreign.js"; +const modify$p = modifyImpl; +const modify = f => modifyImpl(s => { + const s$p = f(s); + return {state: s$p, value: s$p}; +}); +const functorST = {map: map_}; +const monadST = {Applicative0: () => applicativeST, Bind1: () => bindST}; +const bindST = {bind: bind_, Apply0: () => applyST}; +const applyST = { + apply: f => a => () => { + const f$p = f(); + const a$p = a(); + return applicativeST.pure(f$p(a$p))(); + }, + Functor0: () => functorST +}; +const applicativeST = {pure: pure_, Apply0: () => applyST}; +const semigroupST = dictSemigroup => ( + { + append: a => b => () => { + const $3 = a(); + const a$p = b(); + return dictSemigroup.append($3)(a$p); + } + } +); +const monadRecST = { + tailRecM: f => a => { + const $2 = bind_(f(a))($$new); + return () => { + const r = $2(); + $$while(() => { + const $4 = r.value; + return $4.tag === "Loop"; + })(() => { + const v = r.value; + if (v.tag === "Loop") { + const e = f(v._1)(); + r.value = e; + return Data$dUnit.unit; + } + if (v.tag === "Done") { return Data$dUnit.unit; } + $runtime.fail(); + })(); + const $5 = r.value; + return (() => { + if ($5.tag === "Done") { return $5._1; } + $runtime.fail(); + })(); + }; + }, + Monad0: () => monadST +}; +const monoidST = dictMonoid => { + const $1 = dictMonoid.Semigroup0(); + const semigroupST1 = { + append: a => b => () => { + const $4 = a(); + const a$p = b(); + return $1.append($4)(a$p); + } + }; + return {mempty: () => dictMonoid.mempty, Semigroup0: () => semigroupST1}; +}; +export {applicativeST, applyST, bindST, functorST, modify, modify$p, monadRecST, monadST, monoidST, semigroupST}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Control.Monad.ST.Ref/index.js b/.storybook/purescript-indexer/output-es/Control.Monad.ST.Ref/index.js new file mode 100644 index 0000000..2d3a7c9 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Monad.ST.Ref/index.js @@ -0,0 +1,2 @@ +import * as $runtime from "../runtime.js"; +export {}; diff --git a/.storybook/purescript-indexer/output-es/Control.Monad.ST.Uncurried/foreign.js b/.storybook/purescript-indexer/output-es/Control.Monad.ST.Uncurried/foreign.js new file mode 100644 index 0000000..7745ade --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Monad.ST.Uncurried/foreign.js @@ -0,0 +1,229 @@ +export const mkSTFn1 = function mkSTFn1(fn) { + return function(x) { + return fn(x)(); + }; +}; + +export const mkSTFn2 = function mkSTFn2(fn) { + return function(a, b) { + return fn(a)(b)(); + }; +}; + +export const mkSTFn3 = function mkSTFn3(fn) { + return function(a, b, c) { + return fn(a)(b)(c)(); + }; +}; + +export const mkSTFn4 = function mkSTFn4(fn) { + return function(a, b, c, d) { + return fn(a)(b)(c)(d)(); + }; +}; + +export const mkSTFn5 = function mkSTFn5(fn) { + return function(a, b, c, d, e) { + return fn(a)(b)(c)(d)(e)(); + }; +}; + +export const mkSTFn6 = function mkSTFn6(fn) { + return function(a, b, c, d, e, f) { + return fn(a)(b)(c)(d)(e)(f)(); + }; +}; + +export const mkSTFn7 = function mkSTFn7(fn) { + return function(a, b, c, d, e, f, g) { + return fn(a)(b)(c)(d)(e)(f)(g)(); + }; +}; + +export const mkSTFn8 = function mkSTFn8(fn) { + return function(a, b, c, d, e, f, g, h) { + return fn(a)(b)(c)(d)(e)(f)(g)(h)(); + }; +}; + +export const mkSTFn9 = function mkSTFn9(fn) { + return function(a, b, c, d, e, f, g, h, i) { + return fn(a)(b)(c)(d)(e)(f)(g)(h)(i)(); + }; +}; + +export const mkSTFn10 = function mkSTFn10(fn) { + return function(a, b, c, d, e, f, g, h, i, j) { + return fn(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(); + }; +}; + +export const runSTFn1 = function runSTFn1(fn) { + return function(a) { + return function() { + return fn(a); + }; + }; +}; + +export const runSTFn2 = function runSTFn2(fn) { + return function(a) { + return function(b) { + return function() { + return fn(a, b); + }; + }; + }; +}; + +export const runSTFn3 = function runSTFn3(fn) { + return function(a) { + return function(b) { + return function(c) { + return function() { + return fn(a, b, c); + }; + }; + }; + }; +}; + +export const runSTFn4 = function runSTFn4(fn) { + return function(a) { + return function(b) { + return function(c) { + return function(d) { + return function() { + return fn(a, b, c, d); + }; + }; + }; + }; + }; +}; + +export const runSTFn5 = function runSTFn5(fn) { + return function(a) { + return function(b) { + return function(c) { + return function(d) { + return function(e) { + return function() { + return fn(a, b, c, d, e); + }; + }; + }; + }; + }; + }; +}; + +export const runSTFn6 = function runSTFn6(fn) { + return function(a) { + return function(b) { + return function(c) { + return function(d) { + return function(e) { + return function(f) { + return function() { + return fn(a, b, c, d, e, f); + }; + }; + }; + }; + }; + }; + }; +}; + +export const runSTFn7 = function runSTFn7(fn) { + return function(a) { + return function(b) { + return function(c) { + return function(d) { + return function(e) { + return function(f) { + return function(g) { + return function() { + return fn(a, b, c, d, e, f, g); + }; + }; + }; + }; + }; + }; + }; + }; +}; + +export const runSTFn8 = function runSTFn8(fn) { + return function(a) { + return function(b) { + return function(c) { + return function(d) { + return function(e) { + return function(f) { + return function(g) { + return function(h) { + return function() { + return fn(a, b, c, d, e, f, g, h); + }; + }; + }; + }; + }; + }; + }; + }; + }; +}; + +export const runSTFn9 = function runSTFn9(fn) { + return function(a) { + return function(b) { + return function(c) { + return function(d) { + return function(e) { + return function(f) { + return function(g) { + return function(h) { + return function(i) { + return function() { + return fn(a, b, c, d, e, f, g, h, i); + }; + }; + }; + }; + }; + }; + }; + }; + }; + }; +}; + +export const runSTFn10 = function runSTFn10(fn) { + return function(a) { + return function(b) { + return function(c) { + return function(d) { + return function(e) { + return function(f) { + return function(g) { + return function(h) { + return function(i) { + return function(j) { + return function() { + return fn(a, b, c, d, e, f, g, h, i, j); + }; + }; + }; + }; + }; + }; + }; + }; + }; + }; + }; +}; \ No newline at end of file diff --git a/.storybook/purescript-indexer/output-es/Control.Monad.ST.Uncurried/index.js b/.storybook/purescript-indexer/output-es/Control.Monad.ST.Uncurried/index.js new file mode 100644 index 0000000..3c833a4 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Monad.ST.Uncurried/index.js @@ -0,0 +1,40 @@ +// | This module defines types for STf uncurried functions, as well as +// | functions for converting back and forth between them. +// | +// | The general naming scheme for functions and types in this module is as +// | follows: +// | +// | * `STFn{N}` means, an uncurried function which accepts N arguments and +// | performs some STs. The first N arguments are the actual function's +// | argument. The last type argument is the return type. +// | * `runSTFn{N}` takes an `STFn` of N arguments, and converts it into +// | the normal PureScript form: a curried function which returns an ST +// | action. +// | * `mkSTFn{N}` is the inverse of `runSTFn{N}`. It can be useful for +// | callbacks. +// | +import * as $runtime from "../runtime.js"; +import { + mkSTFn1, + mkSTFn10, + mkSTFn2, + mkSTFn3, + mkSTFn4, + mkSTFn5, + mkSTFn6, + mkSTFn7, + mkSTFn8, + mkSTFn9, + runSTFn1, + runSTFn10, + runSTFn2, + runSTFn3, + runSTFn4, + runSTFn5, + runSTFn6, + runSTFn7, + runSTFn8, + runSTFn9 +} from "./foreign.js"; +export {}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Control.Monad.ST/index.js b/.storybook/purescript-indexer/output-es/Control.Monad.ST/index.js new file mode 100644 index 0000000..2d3a7c9 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Monad.ST/index.js @@ -0,0 +1,2 @@ +import * as $runtime from "../runtime.js"; +export {}; diff --git a/.storybook/purescript-indexer/output-es/Control.Monad.State.Class/index.js b/.storybook/purescript-indexer/output-es/Control.Monad.State.Class/index.js new file mode 100644 index 0000000..4b9c067 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Monad.State.Class/index.js @@ -0,0 +1,14 @@ +// | This module defines the `MonadState` type class and its instances. +import * as $runtime from "../runtime.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +const state = dict => dict.state; +const put = dictMonadState => s => dictMonadState.state(v => Data$dTuple.$Tuple(Data$dUnit.unit, s)); +const modify_ = dictMonadState => f => dictMonadState.state(s => Data$dTuple.$Tuple(Data$dUnit.unit, f(s))); +const modify = dictMonadState => f => dictMonadState.state(s => { + const s$p = f(s); + return Data$dTuple.$Tuple(s$p, s$p); +}); +const gets = dictMonadState => f => dictMonadState.state(s => Data$dTuple.$Tuple(f(s), s)); +const $$get = dictMonadState => dictMonadState.state(s => Data$dTuple.$Tuple(s, s)); +export {$$get as get, gets, modify, modify_, put, state}; diff --git a/.storybook/purescript-indexer/output-es/Control.Monad.State.Trans/index.js b/.storybook/purescript-indexer/output-es/Control.Monad.State.Trans/index.js new file mode 100644 index 0000000..6a88342 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Monad.State.Trans/index.js @@ -0,0 +1,194 @@ +// | This module defines the state monad transformer, `StateT`. +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dRec$dClass from "../Control.Monad.Rec.Class/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +const StateT = x => x; +const withStateT = f => v => x => v(f(x)); +const runStateT = v => v; +const newtypeStateT = {Coercible0: () => undefined}; +const monadTransStateT = { + lift: dictMonad => { + const bind = dictMonad.Bind1().bind; + const pure = dictMonad.Applicative0().pure; + return m => s => bind(m)(x => pure(Data$dTuple.$Tuple(x, s))); + } +}; +const mapStateT = f => v => x => f(v(x)); +const lazyStateT = {defer: f => s => f(Data$dUnit.unit)(s)}; +const functorStateT = dictFunctor => ({map: f => v => s => dictFunctor.map(v1 => Data$dTuple.$Tuple(f(v1._1), v1._2))(v(s))}); +const execStateT = dictFunctor => v => s => dictFunctor.map(Data$dTuple.snd)(v(s)); +const evalStateT = dictFunctor => v => s => dictFunctor.map(Data$dTuple.fst)(v(s)); +const monadStateT = dictMonad => ({Applicative0: () => applicativeStateT(dictMonad), Bind1: () => bindStateT(dictMonad)}); +const bindStateT = dictMonad => { + const bind = dictMonad.Bind1().bind; + return {bind: v => f => s => bind(v(s))(v1 => f(v1._1)(v1._2)), Apply0: () => applyStateT(dictMonad)}; +}; +const applyStateT = dictMonad => { + const functorStateT1 = functorStateT(dictMonad.Bind1().Apply0().Functor0()); + return { + apply: (() => { + const bind = bindStateT(dictMonad).bind; + const pure = applicativeStateT(dictMonad).pure; + return f => a => bind(f)(f$p => bind(a)(a$p => pure(f$p(a$p)))); + })(), + Functor0: () => functorStateT1 + }; +}; +const applicativeStateT = dictMonad => { + const pure = dictMonad.Applicative0().pure; + return {pure: a => s => pure(Data$dTuple.$Tuple(a, s)), Apply0: () => applyStateT(dictMonad)}; +}; +const semigroupStateT = dictMonad => { + const $1 = applyStateT(dictMonad); + const map = $1.Functor0().map; + return dictSemigroup => ({append: a => b => $1.apply(map(dictSemigroup.append)(a))(b)}); +}; +const monadAskStateT = dictMonadAsk => { + const Monad0 = dictMonadAsk.Monad0(); + const monadStateT1 = {Applicative0: () => applicativeStateT(Monad0), Bind1: () => bindStateT(Monad0)}; + return {ask: monadTransStateT.lift(Monad0)(dictMonadAsk.ask), Monad0: () => monadStateT1}; +}; +const monadReaderStateT = dictMonadReader => { + const monadAskStateT1 = monadAskStateT(dictMonadReader.MonadAsk0()); + return { + local: x => { + const $3 = dictMonadReader.local(x); + return v => x$1 => $3(v(x$1)); + }, + MonadAsk0: () => monadAskStateT1 + }; +}; +const monadContStateT = dictMonadCont => { + const $1 = dictMonadCont.Monad0(); + const monadStateT1 = {Applicative0: () => applicativeStateT($1), Bind1: () => bindStateT($1)}; + return {callCC: f => s => dictMonadCont.callCC(c => f(a => s$p => c(Data$dTuple.$Tuple(a, s$p)))(s)), Monad0: () => monadStateT1}; +}; +const monadEffectState = dictMonadEffect => { + const Monad0 = dictMonadEffect.Monad0(); + const monadStateT1 = {Applicative0: () => applicativeStateT(Monad0), Bind1: () => bindStateT(Monad0)}; + return { + liftEffect: (() => { + const $3 = monadTransStateT.lift(Monad0); + return x => $3(dictMonadEffect.liftEffect(x)); + })(), + Monad0: () => monadStateT1 + }; +}; +const monadRecStateT = dictMonadRec => { + const Monad0 = dictMonadRec.Monad0(); + const bind = Monad0.Bind1().bind; + const pure = Monad0.Applicative0().pure; + const monadStateT1 = {Applicative0: () => applicativeStateT(Monad0), Bind1: () => bindStateT(Monad0)}; + return { + tailRecM: f => a => s => dictMonadRec.tailRecM(v => bind(f(v._1)(v._2))(v2 => pure((() => { + if (v2._1.tag === "Loop") { return Control$dMonad$dRec$dClass.$Step("Loop", Data$dTuple.$Tuple(v2._1._1, v2._2)); } + if (v2._1.tag === "Done") { return Control$dMonad$dRec$dClass.$Step("Done", Data$dTuple.$Tuple(v2._1._1, v2._2)); } + $runtime.fail(); + })())))(Data$dTuple.$Tuple(a, s)), + Monad0: () => monadStateT1 + }; +}; +const monadStateStateT = dictMonad => { + const pure = dictMonad.Applicative0().pure; + const monadStateT1 = {Applicative0: () => applicativeStateT(dictMonad), Bind1: () => bindStateT(dictMonad)}; + return {state: f => x => pure(f(x)), Monad0: () => monadStateT1}; +}; +const monadTellStateT = dictMonadTell => { + const Monad1 = dictMonadTell.Monad1(); + const Semigroup0 = dictMonadTell.Semigroup0(); + const monadStateT1 = {Applicative0: () => applicativeStateT(Monad1), Bind1: () => bindStateT(Monad1)}; + return { + tell: (() => { + const $4 = monadTransStateT.lift(Monad1); + return x => $4(dictMonadTell.tell(x)); + })(), + Semigroup0: () => Semigroup0, + Monad1: () => monadStateT1 + }; +}; +const monadWriterStateT = dictMonadWriter => { + const MonadTell1 = dictMonadWriter.MonadTell1(); + const Monad1 = MonadTell1.Monad1(); + const bind = Monad1.Bind1().bind; + const pure = Monad1.Applicative0().pure; + const Monoid0 = dictMonadWriter.Monoid0(); + const monadTellStateT1 = monadTellStateT(MonadTell1); + return { + listen: m => s => bind(dictMonadWriter.listen(m(s)))(v => pure(Data$dTuple.$Tuple(Data$dTuple.$Tuple(v._1._1, v._2), v._1._2))), + pass: m => s => dictMonadWriter.pass(bind(m(s))(v => pure(Data$dTuple.$Tuple(Data$dTuple.$Tuple(v._1._1, v._2), v._1._2)))), + Monoid0: () => Monoid0, + MonadTell1: () => monadTellStateT1 + }; +}; +const monadThrowStateT = dictMonadThrow => { + const Monad0 = dictMonadThrow.Monad0(); + const lift1 = monadTransStateT.lift(Monad0); + const monadStateT1 = {Applicative0: () => applicativeStateT(Monad0), Bind1: () => bindStateT(Monad0)}; + return {throwError: e => lift1(dictMonadThrow.throwError(e)), Monad0: () => monadStateT1}; +}; +const monadErrorStateT = dictMonadError => { + const monadThrowStateT1 = monadThrowStateT(dictMonadError.MonadThrow0()); + return {catchError: v => h => s => dictMonadError.catchError(v(s))(e => h(e)(s)), MonadThrow0: () => monadThrowStateT1}; +}; +const monoidStateT = dictMonad => { + const pure = applicativeStateT(dictMonad).pure; + const semigroupStateT1 = semigroupStateT(dictMonad); + return dictMonoid => { + const semigroupStateT2 = semigroupStateT1(dictMonoid.Semigroup0()); + return {mempty: pure(dictMonoid.mempty), Semigroup0: () => semigroupStateT2}; + }; +}; +const altStateT = dictMonad => dictAlt => { + const functorStateT1 = functorStateT(dictAlt.Functor0()); + return {alt: v => v1 => s => dictAlt.alt(v(s))(v1(s)), Functor0: () => functorStateT1}; +}; +const plusStateT = dictMonad => dictPlus => { + const altStateT2 = altStateT(dictMonad)(dictPlus.Alt0()); + return {empty: v => dictPlus.empty, Alt0: () => altStateT2}; +}; +const alternativeStateT = dictMonad => { + const applicativeStateT1 = applicativeStateT(dictMonad); + return dictAlternative => { + const plusStateT2 = plusStateT(dictMonad)(dictAlternative.Plus1()); + return {Applicative0: () => applicativeStateT1, Plus1: () => plusStateT2}; + }; +}; +const monadPlusStateT = dictMonadPlus => { + const Monad0 = dictMonadPlus.Monad0(); + const monadStateT1 = {Applicative0: () => applicativeStateT(Monad0), Bind1: () => bindStateT(Monad0)}; + const alternativeStateT1 = alternativeStateT(Monad0)(dictMonadPlus.Alternative1()); + return {Monad0: () => monadStateT1, Alternative1: () => alternativeStateT1}; +}; +export { + StateT, + altStateT, + alternativeStateT, + applicativeStateT, + applyStateT, + bindStateT, + evalStateT, + execStateT, + functorStateT, + lazyStateT, + mapStateT, + monadAskStateT, + monadContStateT, + monadEffectState, + monadErrorStateT, + monadPlusStateT, + monadReaderStateT, + monadRecStateT, + monadStateStateT, + monadStateT, + monadTellStateT, + monadThrowStateT, + monadTransStateT, + monadWriterStateT, + monoidStateT, + newtypeStateT, + plusStateT, + runStateT, + semigroupStateT, + withStateT +}; diff --git a/.storybook/purescript-indexer/output-es/Control.Monad.State/index.js b/.storybook/purescript-indexer/output-es/Control.Monad.State/index.js new file mode 100644 index 0000000..3c3ce60 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Monad.State/index.js @@ -0,0 +1,9 @@ +// | This module defines the `State` monad. +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dState$dTrans from "../Control.Monad.State.Trans/index.js"; +const withState = Control$dMonad$dState$dTrans.withStateT; +const runState = v => x => v(x); +const mapState = f => v => x => f(v(x)); +const execState = v => s => v(s)._2; +const evalState = v => s => v(s)._1; +export {evalState, execState, mapState, runState, withState}; diff --git a/.storybook/purescript-indexer/output-es/Control.Monad.Trampoline/index.js b/.storybook/purescript-indexer/output-es/Control.Monad.Trampoline/index.js new file mode 100644 index 0000000..4cfb659 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Monad.Trampoline/index.js @@ -0,0 +1,11 @@ +// | A _trampoline_ monad, which can be used at the bottom of +// | a monad transformer stack to avoid stack overflows in large +// | monadic computations. +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dFree from "../Control.Monad.Free/index.js"; +import * as Data$dFunctor from "../Data.Functor/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +const runTrampoline = /* #__PURE__ */ Control$dMonad$dFree.runFree(Data$dFunctor.functorFn)(v => v(Data$dUnit.unit)); +const done = /* #__PURE__ */ (() => Control$dMonad$dFree.freeApplicative.pure)(); +const delay = Control$dMonad$dFree.liftF; +export {delay, done, runTrampoline}; diff --git a/.storybook/purescript-indexer/output-es/Control.Monad.Trans.Class/index.js b/.storybook/purescript-indexer/output-es/Control.Monad.Trans.Class/index.js new file mode 100644 index 0000000..c09d8e9 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Monad.Trans.Class/index.js @@ -0,0 +1,4 @@ +// | This module defines the `MonadTrans` type class of _monad transformers_. +import * as $runtime from "../runtime.js"; +const lift = dict => dict.lift; +export {lift}; diff --git a/.storybook/purescript-indexer/output-es/Control.Monad.Writer.Class/index.js b/.storybook/purescript-indexer/output-es/Control.Monad.Writer.Class/index.js new file mode 100644 index 0000000..590026a --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Monad.Writer.Class/index.js @@ -0,0 +1,19 @@ +// | This module defines the `MonadWriter` type class and its instances. +import * as $runtime from "../runtime.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +const tell = dict => dict.tell; +const pass = dict => dict.pass; +const listen = dict => dict.listen; +const listens = dictMonadWriter => { + const Monad1 = dictMonadWriter.MonadTell1().Monad1(); + const bind = Monad1.Bind1().bind; + const pure = Monad1.Applicative0().pure; + return f => m => bind(dictMonadWriter.listen(m))(v => pure(Data$dTuple.$Tuple(v._1, f(v._2)))); +}; +const censor = dictMonadWriter => { + const Monad1 = dictMonadWriter.MonadTell1().Monad1(); + const bind = Monad1.Bind1().bind; + const pure = Monad1.Applicative0().pure; + return f => m => dictMonadWriter.pass(bind(m)(a => pure(Data$dTuple.$Tuple(a, f)))); +}; +export {censor, listen, listens, pass, tell}; diff --git a/.storybook/purescript-indexer/output-es/Control.Monad.Writer.Trans/index.js b/.storybook/purescript-indexer/output-es/Control.Monad.Writer.Trans/index.js new file mode 100644 index 0000000..2f819a6 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Monad.Writer.Trans/index.js @@ -0,0 +1,231 @@ +// | This module defines the writer monad transformer, `WriterT`. +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dRec$dClass from "../Control.Monad.Rec.Class/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +const WriterT = x => x; +const runWriterT = v => v; +const newtypeWriterT = {Coercible0: () => undefined}; +const monadTransWriterT = dictMonoid => ( + { + lift: dictMonad => { + const bind = dictMonad.Bind1().bind; + const pure = dictMonad.Applicative0().pure; + return m => bind(m)(a => pure(Data$dTuple.$Tuple(a, dictMonoid.mempty))); + } + } +); +const mapWriterT = f => v => f(v); +const functorWriterT = dictFunctor => ({map: f => dictFunctor.map(v => Data$dTuple.$Tuple(f(v._1), v._2))}); +const execWriterT = dictFunctor => v => dictFunctor.map(Data$dTuple.snd)(v); +const applyWriterT = dictSemigroup => dictApply => { + const Functor0 = dictApply.Functor0(); + const functorWriterT1 = functorWriterT(Functor0); + return {apply: v => v1 => dictApply.apply(Functor0.map(v3 => v4 => Data$dTuple.$Tuple(v3._1(v4._1), dictSemigroup.append(v3._2)(v4._2)))(v))(v1), Functor0: () => functorWriterT1}; +}; +const bindWriterT = dictSemigroup => dictBind => { + const Apply0 = dictBind.Apply0(); + const map = Apply0.Functor0().map; + const applyWriterT2 = applyWriterT(dictSemigroup)(Apply0); + return {bind: v => k => dictBind.bind(v)(v1 => map(v3 => Data$dTuple.$Tuple(v3._1, dictSemigroup.append(v1._2)(v3._2)))(k(v1._1))), Apply0: () => applyWriterT2}; +}; +const semigroupWriterT = dictApply => dictSemigroup => { + const $2 = applyWriterT(dictSemigroup)(dictApply); + const map = $2.Functor0().map; + return dictSemigroup1 => ({append: a => b => $2.apply(map(dictSemigroup1.append)(a))(b)}); +}; +const applicativeWriterT = dictMonoid => { + const applyWriterT1 = applyWriterT(dictMonoid.Semigroup0()); + return dictApplicative => { + const applyWriterT2 = applyWriterT1(dictApplicative.Apply0()); + return {pure: a => dictApplicative.pure(Data$dTuple.$Tuple(a, dictMonoid.mempty)), Apply0: () => applyWriterT2}; + }; +}; +const monadWriterT = dictMonoid => { + const applicativeWriterT1 = applicativeWriterT(dictMonoid); + const bindWriterT1 = bindWriterT(dictMonoid.Semigroup0()); + return dictMonad => { + const applicativeWriterT2 = applicativeWriterT1(dictMonad.Applicative0()); + const bindWriterT2 = bindWriterT1(dictMonad.Bind1()); + return {Applicative0: () => applicativeWriterT2, Bind1: () => bindWriterT2}; + }; +}; +const monadAskWriterT = dictMonoid => { + const lift = monadTransWriterT(dictMonoid).lift; + const monadWriterT1 = monadWriterT(dictMonoid); + return dictMonadAsk => { + const Monad0 = dictMonadAsk.Monad0(); + const monadWriterT2 = monadWriterT1(Monad0); + return {ask: lift(Monad0)(dictMonadAsk.ask), Monad0: () => monadWriterT2}; + }; +}; +const monadReaderWriterT = dictMonoid => { + const monadAskWriterT1 = monadAskWriterT(dictMonoid); + return dictMonadReader => { + const monadAskWriterT2 = monadAskWriterT1(dictMonadReader.MonadAsk0()); + return {local: f => dictMonadReader.local(f), MonadAsk0: () => monadAskWriterT2}; + }; +}; +const monadContWriterT = dictMonoid => { + const monadWriterT1 = monadWriterT(dictMonoid); + return dictMonadCont => { + const monadWriterT2 = monadWriterT1(dictMonadCont.Monad0()); + return {callCC: f => dictMonadCont.callCC(c => f(a => c(Data$dTuple.$Tuple(a, dictMonoid.mempty)))), Monad0: () => monadWriterT2}; + }; +}; +const monadEffectWriter = dictMonoid => { + const lift = monadTransWriterT(dictMonoid).lift; + const monadWriterT1 = monadWriterT(dictMonoid); + return dictMonadEffect => { + const Monad0 = dictMonadEffect.Monad0(); + const monadWriterT2 = monadWriterT1(Monad0); + return { + liftEffect: (() => { + const $6 = lift(Monad0); + return x => $6(dictMonadEffect.liftEffect(x)); + })(), + Monad0: () => monadWriterT2 + }; + }; +}; +const monadRecWriterT = dictMonoid => { + const append = dictMonoid.Semigroup0().append; + const monadWriterT1 = monadWriterT(dictMonoid); + return dictMonadRec => { + const Monad0 = dictMonadRec.Monad0(); + const bind = Monad0.Bind1().bind; + const pure = Monad0.Applicative0().pure; + const monadWriterT2 = monadWriterT1(Monad0); + return { + tailRecM: f => a => dictMonadRec.tailRecM(v => bind(f(v._1))(v2 => pure((() => { + if (v2._1.tag === "Loop") { return Control$dMonad$dRec$dClass.$Step("Loop", Data$dTuple.$Tuple(v2._1._1, append(v._2)(v2._2))); } + if (v2._1.tag === "Done") { return Control$dMonad$dRec$dClass.$Step("Done", Data$dTuple.$Tuple(v2._1._1, append(v._2)(v2._2))); } + $runtime.fail(); + })())))(Data$dTuple.$Tuple(a, dictMonoid.mempty)), + Monad0: () => monadWriterT2 + }; + }; +}; +const monadStateWriterT = dictMonoid => { + const lift = monadTransWriterT(dictMonoid).lift; + const monadWriterT1 = monadWriterT(dictMonoid); + return dictMonadState => { + const Monad0 = dictMonadState.Monad0(); + const lift1 = lift(Monad0); + const monadWriterT2 = monadWriterT1(Monad0); + return {state: f => lift1(dictMonadState.state(f)), Monad0: () => monadWriterT2}; + }; +}; +const monadTellWriterT = dictMonoid => { + const Semigroup0 = dictMonoid.Semigroup0(); + const monadWriterT1 = monadWriterT(dictMonoid); + return dictMonad => { + const monadWriterT2 = monadWriterT1(dictMonad); + return { + tell: (() => { + const $5 = dictMonad.Applicative0().pure; + const $6 = Data$dTuple.Tuple(Data$dUnit.unit); + return x => $5($6(x)); + })(), + Semigroup0: () => Semigroup0, + Monad1: () => monadWriterT2 + }; + }; +}; +const monadWriterWriterT = dictMonoid => { + const monadTellWriterT1 = monadTellWriterT(dictMonoid); + return dictMonad => { + const bind = dictMonad.Bind1().bind; + const pure = dictMonad.Applicative0().pure; + const monadTellWriterT2 = monadTellWriterT1(dictMonad); + return { + listen: v => bind(v)(v1 => pure(Data$dTuple.$Tuple(Data$dTuple.$Tuple(v1._1, v1._2), v1._2))), + pass: v => bind(v)(v1 => pure(Data$dTuple.$Tuple(v1._1._1, v1._1._2(v1._2)))), + Monoid0: () => dictMonoid, + MonadTell1: () => monadTellWriterT2 + }; + }; +}; +const monadThrowWriterT = dictMonoid => { + const lift = monadTransWriterT(dictMonoid).lift; + const monadWriterT1 = monadWriterT(dictMonoid); + return dictMonadThrow => { + const Monad0 = dictMonadThrow.Monad0(); + const lift1 = lift(Monad0); + const monadWriterT2 = monadWriterT1(Monad0); + return {throwError: e => lift1(dictMonadThrow.throwError(e)), Monad0: () => monadWriterT2}; + }; +}; +const monadErrorWriterT = dictMonoid => { + const monadThrowWriterT1 = monadThrowWriterT(dictMonoid); + return dictMonadError => { + const monadThrowWriterT2 = monadThrowWriterT1(dictMonadError.MonadThrow0()); + return {catchError: v => h => dictMonadError.catchError(v)(e => h(e)), MonadThrow0: () => monadThrowWriterT2}; + }; +}; +const monoidWriterT = dictApplicative => { + const semigroupWriterT1 = semigroupWriterT(dictApplicative.Apply0()); + return dictMonoid => { + const pure = applicativeWriterT(dictMonoid)(dictApplicative).pure; + const semigroupWriterT2 = semigroupWriterT1(dictMonoid.Semigroup0()); + return dictMonoid1 => { + const semigroupWriterT3 = semigroupWriterT2(dictMonoid1.Semigroup0()); + return {mempty: pure(dictMonoid1.mempty), Semigroup0: () => semigroupWriterT3}; + }; + }; +}; +const altWriterT = dictAlt => { + const functorWriterT1 = functorWriterT(dictAlt.Functor0()); + return {alt: v => v1 => dictAlt.alt(v)(v1), Functor0: () => functorWriterT1}; +}; +const plusWriterT = dictPlus => { + const altWriterT1 = altWriterT(dictPlus.Alt0()); + return {empty: dictPlus.empty, Alt0: () => altWriterT1}; +}; +const alternativeWriterT = dictMonoid => { + const applicativeWriterT1 = applicativeWriterT(dictMonoid); + return dictAlternative => { + const applicativeWriterT2 = applicativeWriterT1(dictAlternative.Applicative0()); + const $4 = dictAlternative.Plus1(); + const altWriterT1 = altWriterT($4.Alt0()); + return {Applicative0: () => applicativeWriterT2, Plus1: () => ({empty: $4.empty, Alt0: () => altWriterT1})}; + }; +}; +const monadPlusWriterT = dictMonoid => { + const monadWriterT1 = monadWriterT(dictMonoid); + const alternativeWriterT1 = alternativeWriterT(dictMonoid); + return dictMonadPlus => { + const monadWriterT2 = monadWriterT1(dictMonadPlus.Monad0()); + const alternativeWriterT2 = alternativeWriterT1(dictMonadPlus.Alternative1()); + return {Monad0: () => monadWriterT2, Alternative1: () => alternativeWriterT2}; + }; +}; +export { + WriterT, + altWriterT, + alternativeWriterT, + applicativeWriterT, + applyWriterT, + bindWriterT, + execWriterT, + functorWriterT, + mapWriterT, + monadAskWriterT, + monadContWriterT, + monadEffectWriter, + monadErrorWriterT, + monadPlusWriterT, + monadReaderWriterT, + monadRecWriterT, + monadStateWriterT, + monadTellWriterT, + monadThrowWriterT, + monadTransWriterT, + monadWriterT, + monadWriterWriterT, + monoidWriterT, + newtypeWriterT, + plusWriterT, + runWriterT, + semigroupWriterT +}; diff --git a/.storybook/purescript-indexer/output-es/Control.Monad.Writer/index.js b/.storybook/purescript-indexer/output-es/Control.Monad.Writer/index.js new file mode 100644 index 0000000..64b9155 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Monad.Writer/index.js @@ -0,0 +1,7 @@ +// | This module defines the `Writer` monad. +import * as $runtime from "../runtime.js"; +const writer = x => x; +const runWriter = x => x; +const mapWriter = f => v => f(v); +const execWriter = m => m._2; +export {execWriter, mapWriter, runWriter, writer}; diff --git a/.storybook/purescript-indexer/output-es/Control.Monad/index.js b/.storybook/purescript-indexer/output-es/Control.Monad/index.js new file mode 100644 index 0000000..6caa336 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Monad/index.js @@ -0,0 +1,35 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dApplicative from "../Control.Applicative/index.js"; +import * as Control$dBind from "../Control.Bind/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +const whenM = dictMonad => { + const bind = dictMonad.Bind1().bind; + const $2 = dictMonad.Applicative0(); + return mb => m => bind(mb)(b => { + if (b) { return m; } + return $2.pure(Data$dUnit.unit); + }); +}; +const unlessM = dictMonad => { + const bind = dictMonad.Bind1().bind; + const $2 = dictMonad.Applicative0(); + return mb => m => bind(mb)(b => { + if (!b) { return m; } + if (b) { return $2.pure(Data$dUnit.unit); } + $runtime.fail(); + }); +}; +const monadProxy = {Applicative0: () => Control$dApplicative.applicativeProxy, Bind1: () => Control$dBind.bindProxy}; +const monadFn = {Applicative0: () => Control$dApplicative.applicativeFn, Bind1: () => Control$dBind.bindFn}; +const monadArray = {Applicative0: () => Control$dApplicative.applicativeArray, Bind1: () => Control$dBind.bindArray}; +const liftM1 = dictMonad => { + const bind = dictMonad.Bind1().bind; + const pure = dictMonad.Applicative0().pure; + return f => a => bind(a)(a$p => pure(f(a$p))); +}; +const ap = dictMonad => { + const bind = dictMonad.Bind1().bind; + const pure = dictMonad.Applicative0().pure; + return f => a => bind(f)(f$p => bind(a)(a$p => pure(f$p(a$p)))); +}; +export {ap, liftM1, monadArray, monadFn, monadProxy, unlessM, whenM}; diff --git a/.storybook/purescript-indexer/output-es/Control.MonadPlus/index.js b/.storybook/purescript-indexer/output-es/Control.MonadPlus/index.js new file mode 100644 index 0000000..5009094 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.MonadPlus/index.js @@ -0,0 +1,5 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dAlternative from "../Control.Alternative/index.js"; +import * as Control$dMonad from "../Control.Monad/index.js"; +const monadPlusArray = {Monad0: () => Control$dMonad.monadArray, Alternative1: () => Control$dAlternative.alternativeArray}; +export {monadPlusArray}; diff --git a/.storybook/purescript-indexer/output-es/Control.Parallel.Class/index.js b/.storybook/purescript-indexer/output-es/Control.Parallel.Class/index.js new file mode 100644 index 0000000..65f3864 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Parallel.Class/index.js @@ -0,0 +1,168 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dCont$dTrans from "../Control.Monad.Cont.Trans/index.js"; +import * as Control$dMonad$dExcept$dTrans from "../Control.Monad.Except.Trans/index.js"; +import * as Control$dMonad$dMaybe$dTrans from "../Control.Monad.Maybe.Trans/index.js"; +import * as Control$dMonad$dReader$dTrans from "../Control.Monad.Reader.Trans/index.js"; +import * as Control$dMonad$dWriter$dTrans from "../Control.Monad.Writer.Trans/index.js"; +import * as Data$dEither from "../Data.Either/index.js"; +import * as Data$dFunctor$dCompose from "../Data.Functor.Compose/index.js"; +import * as Data$dFunctor$dCostar from "../Data.Functor.Costar/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dProfunctor$dStar from "../Data.Profunctor.Star/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +const ParCont = x => x; +const sequential = dict => dict.sequential; +const parallel = dict => dict.parallel; +const newtypeParCont = {Coercible0: () => undefined}; +const monadParWriterT = dictMonoid => { + const monadWriterT = Control$dMonad$dWriter$dTrans.monadWriterT(dictMonoid); + const applicativeWriterT = Control$dMonad$dWriter$dTrans.applicativeWriterT(dictMonoid); + return dictParallel => { + const monadWriterT1 = monadWriterT(dictParallel.Monad0()); + const applicativeWriterT1 = applicativeWriterT(dictParallel.Applicative1()); + return {parallel: v => dictParallel.parallel(v), sequential: v => dictParallel.sequential(v), Monad0: () => monadWriterT1, Applicative1: () => applicativeWriterT1}; + }; +}; +const monadParStar = dictParallel => { + const monadStar = Data$dProfunctor$dStar.monadStar(dictParallel.Monad0()); + const $2 = dictParallel.Applicative1(); + const $3 = $2.Apply0(); + const $4 = $3.Functor0(); + const functorStar1 = { + map: f => v => { + const $7 = $4.map(f); + return x => $7(v(x)); + } + }; + const applyStar1 = {apply: v => v1 => a => $3.apply(v(a))(v1(a)), Functor0: () => functorStar1}; + const applicativeStar = {pure: a => v => $2.pure(a), Apply0: () => applyStar1}; + return {parallel: v => x => dictParallel.parallel(v(x)), sequential: v => x => dictParallel.sequential(v(x)), Monad0: () => monadStar, Applicative1: () => applicativeStar}; +}; +const monadParReaderT = dictParallel => { + const monadReaderT = Control$dMonad$dReader$dTrans.monadReaderT(dictParallel.Monad0()); + const $2 = dictParallel.Applicative1(); + const $3 = $2.Apply0(); + const $4 = $3.Functor0(); + const functorReaderT1 = { + map: x => { + const $6 = $4.map(x); + return v => x$1 => $6(v(x$1)); + } + }; + const applyReaderT1 = {apply: v => v1 => r => $3.apply(v(r))(v1(r)), Functor0: () => functorReaderT1}; + const applicativeReaderT = { + pure: x => { + const $8 = $2.pure(x); + return v => $8; + }, + Apply0: () => applyReaderT1 + }; + return {parallel: v => x => dictParallel.parallel(v(x)), sequential: v => x => dictParallel.sequential(v(x)), Monad0: () => monadReaderT, Applicative1: () => applicativeReaderT}; +}; +const monadParMaybeT = dictParallel => { + const $1 = dictParallel.Monad0(); + const monadMaybeT = {Applicative0: () => Control$dMonad$dMaybe$dTrans.applicativeMaybeT($1), Bind1: () => Control$dMonad$dMaybe$dTrans.bindMaybeT($1)}; + const applicativeCompose = Data$dFunctor$dCompose.applicativeCompose(dictParallel.Applicative1())(Data$dMaybe.applicativeMaybe); + return {parallel: v => dictParallel.parallel(v), sequential: v => dictParallel.sequential(v), Monad0: () => monadMaybeT, Applicative1: () => applicativeCompose}; +}; +const monadParExceptT = dictParallel => { + const $1 = dictParallel.Monad0(); + const monadExceptT = {Applicative0: () => Control$dMonad$dExcept$dTrans.applicativeExceptT($1), Bind1: () => Control$dMonad$dExcept$dTrans.bindExceptT($1)}; + const applicativeCompose = Data$dFunctor$dCompose.applicativeCompose(dictParallel.Applicative1())(Data$dEither.applicativeEither); + return {parallel: v => dictParallel.parallel(v), sequential: v => dictParallel.sequential(v), Monad0: () => monadExceptT, Applicative1: () => applicativeCompose}; +}; +const monadParCostar = dictParallel => ( + { + parallel: v => x => v(dictParallel.sequential(x)), + sequential: v => x => v(dictParallel.parallel(x)), + Monad0: () => Data$dFunctor$dCostar.monadCostar, + Applicative1: () => Data$dFunctor$dCostar.applicativeCostar + } +); +const monadParParCont = dictMonadEffect => { + const monadContT = Control$dMonad$dCont$dTrans.monadContT(dictMonadEffect.Monad0()); + return {parallel: ParCont, sequential: v => v, Monad0: () => monadContT, Applicative1: () => applicativeParCont(dictMonadEffect)}; +}; +const functorParCont = dictMonadEffect => ( + { + map: f => { + const $2 = monadParParCont(dictMonadEffect).parallel; + const $3 = monadParParCont(dictMonadEffect).sequential; + return x => $2((() => { + const $5 = $3(x); + return k => $5(a => k(f(a))); + })()); + } + } +); +const applyParCont = dictMonadEffect => { + const Bind1 = dictMonadEffect.Monad0().Bind1(); + return { + apply: v => v1 => k => Bind1.bind(dictMonadEffect.liftEffect(() => ({value: Data$dMaybe.Nothing})))(ra => Bind1.bind(dictMonadEffect.liftEffect(() => ( + {value: Data$dMaybe.Nothing} + )))(rb => Bind1.bind(v(a => Bind1.bind(dictMonadEffect.liftEffect(() => rb.value))(mb => { + if (mb.tag === "Nothing") { return dictMonadEffect.liftEffect(() => ra.value = Data$dMaybe.$Maybe("Just", a)); } + if (mb.tag === "Just") { return k(a(mb._1)); } + $runtime.fail(); + })))(() => v1(b => Bind1.bind(dictMonadEffect.liftEffect(() => ra.value))(ma => { + if (ma.tag === "Nothing") { return dictMonadEffect.liftEffect(() => rb.value = Data$dMaybe.$Maybe("Just", b)); } + if (ma.tag === "Just") { return k(ma._1(b)); } + $runtime.fail(); + }))))), + Functor0: () => functorParCont(dictMonadEffect) + }; +}; +const applicativeParCont = dictMonadEffect => ( + { + pure: (() => { + const $1 = monadParParCont(dictMonadEffect).parallel; + return x => $1(k => k(x)); + })(), + Apply0: () => applyParCont(dictMonadEffect) + } +); +const altParCont = dictMonadEffect => { + const Monad0 = dictMonadEffect.Monad0(); + const Bind1 = Monad0.Bind1(); + const pure = Monad0.Applicative0().pure; + const functorParCont1 = functorParCont(dictMonadEffect); + return { + alt: v => v1 => k => Bind1.bind(dictMonadEffect.liftEffect(() => ({value: false})))(done => Bind1.bind(v(a => Bind1.bind(dictMonadEffect.liftEffect(() => done.value))(b => { + if (b) { return pure(Data$dUnit.unit); } + return Bind1.bind(dictMonadEffect.liftEffect(() => done.value = true))(() => k(a)); + })))(() => v1(a => Bind1.bind(dictMonadEffect.liftEffect(() => done.value))(b => { + if (b) { return pure(Data$dUnit.unit); } + return Bind1.bind(dictMonadEffect.liftEffect(() => done.value = true))(() => k(a)); + })))), + Functor0: () => functorParCont1 + }; +}; +const plusParCont = dictMonadEffect => { + const pure = dictMonadEffect.Monad0().Applicative0().pure; + const altParCont1 = altParCont(dictMonadEffect); + return {empty: v => pure(Data$dUnit.unit), Alt0: () => altParCont1}; +}; +const alternativeParCont = dictMonadEffect => { + const applicativeParCont1 = applicativeParCont(dictMonadEffect); + const plusParCont1 = plusParCont(dictMonadEffect); + return {Applicative0: () => applicativeParCont1, Plus1: () => plusParCont1}; +}; +export { + ParCont, + altParCont, + alternativeParCont, + applicativeParCont, + applyParCont, + functorParCont, + monadParCostar, + monadParExceptT, + monadParMaybeT, + monadParParCont, + monadParReaderT, + monadParStar, + monadParWriterT, + newtypeParCont, + parallel, + plusParCont, + sequential +}; diff --git a/.storybook/purescript-indexer/output-es/Control.Parallel/index.js b/.storybook/purescript-indexer/output-es/Control.Parallel/index.js new file mode 100644 index 0000000..5fc7564 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Parallel/index.js @@ -0,0 +1,59 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dFoldable from "../Data.Foldable/index.js"; +const identity = x => x; +const parTraverse_ = dictParallel => { + const traverse_ = Data$dFoldable.traverse_(dictParallel.Applicative1()); + return dictFoldable => { + const traverse_1 = traverse_(dictFoldable); + return f => { + const $5 = traverse_1(x => dictParallel.parallel(f(x))); + return x => dictParallel.sequential($5(x)); + }; + }; +}; +const parTraverse = dictParallel => { + const Applicative1 = dictParallel.Applicative1(); + return dictTraversable => { + const traverse = dictTraversable.traverse(Applicative1); + return f => { + const $5 = traverse(x => dictParallel.parallel(f(x))); + return x => dictParallel.sequential($5(x)); + }; + }; +}; +const parSequence_ = dictParallel => { + const parTraverse_1 = parTraverse_(dictParallel); + return dictFoldable => parTraverse_1(dictFoldable)(identity); +}; +const parSequence = dictParallel => { + const Applicative1 = dictParallel.Applicative1(); + return dictTraversable => { + const $3 = dictTraversable.traverse(Applicative1)(x => dictParallel.parallel(x)); + return x => dictParallel.sequential($3(x)); + }; +}; +const parOneOfMap = dictParallel => dictAlternative => { + const Plus1 = dictAlternative.Plus1(); + return dictFoldable => { + const alt = Plus1.Alt0().alt; + return dictFunctor => f => { + const $7 = dictFoldable.foldr(x => alt(dictParallel.parallel(f(x))))(Plus1.empty); + return x => dictParallel.sequential($7(x)); + }; + }; +}; +const parOneOf = dictParallel => dictAlternative => { + const Plus1 = dictAlternative.Plus1(); + return dictFoldable => { + const alt = Plus1.Alt0().alt; + return dictFunctor => { + const $6 = dictFoldable.foldr(x => alt(dictParallel.parallel(x)))(Plus1.empty); + return x => dictParallel.sequential($6(x)); + }; + }; +}; +const parApply = dictParallel => { + const apply = dictParallel.Applicative1().Apply0().apply; + return mf => ma => dictParallel.sequential(apply(dictParallel.parallel(mf))(dictParallel.parallel(ma))); +}; +export {identity, parApply, parOneOf, parOneOfMap, parSequence, parSequence_, parTraverse, parTraverse_}; diff --git a/.storybook/purescript-indexer/output-es/Control.Plus/index.js b/.storybook/purescript-indexer/output-es/Control.Plus/index.js new file mode 100644 index 0000000..15745ec --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Plus/index.js @@ -0,0 +1,5 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dAlt from "../Control.Alt/index.js"; +const plusArray = {empty: [], Alt0: () => Control$dAlt.altArray}; +const empty = dict => dict.empty; +export {empty, plusArray}; diff --git a/.storybook/purescript-indexer/output-es/Control.Promise/foreign.js b/.storybook/purescript-indexer/output-es/Control.Promise/foreign.js new file mode 100644 index 0000000..f83f041 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Promise/foreign.js @@ -0,0 +1,24 @@ +export function promise(f) { + return function () { + return new Promise(function (success, error) { + var succF = function (s) { return function() { return success(s); } }; + var failF = function (s) { return function() { return error(s); } }; + + // This indicates the aff was wrong? + try { f(succF)(failF)(); } + catch (e) { + error(e); + } + }); + }; +} + +export function thenImpl(promise) { + return function(errCB) { + return function(succCB) { + return function() { + promise.then(succCB, errCB); + }; + }; + }; +} diff --git a/.storybook/purescript-indexer/output-es/Control.Promise/index.js b/.storybook/purescript-indexer/output-es/Control.Promise/index.js new file mode 100644 index 0000000..c54794a --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Promise/index.js @@ -0,0 +1,46 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dExcept$dTrans from "../Control.Monad.Except.Trans/index.js"; +import * as Data$dEither from "../Data.Either/index.js"; +import * as Data$dIdentity from "../Data.Identity/index.js"; +import * as Data$dList$dTypes from "../Data.List.Types/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +import * as Effect$dAff from "../Effect.Aff/index.js"; +import * as Effect$dException from "../Effect.Exception/index.js"; +import * as Foreign from "../Foreign/index.js"; +import {promise, thenImpl} from "./foreign.js"; +const alt = /* #__PURE__ */ (() => Control$dMonad$dExcept$dTrans.altExceptT(Data$dList$dTypes.semigroupNonEmptyList)(Data$dIdentity.monadIdentity).alt)(); +const unsafeReadTagged = /* #__PURE__ */ Foreign.unsafeReadTagged(Data$dIdentity.monadIdentity); +const readString = /* #__PURE__ */ Foreign.unsafeReadTagged(Data$dIdentity.monadIdentity)("String"); +const toAff$p = customCoerce => p => Effect$dAff.makeAff(cb => { + const $3 = thenImpl(p)($3 => cb(Data$dEither.$Either("Left", customCoerce($3)))())(x => cb(Data$dEither.$Either("Right", x))()); + return () => { + $3(); + return Effect$dAff.nonCanceler; + }; +}); +const fromAff = aff => promise(succ => err => { + const $3 = Effect$dAff.runAff(v2 => { + if (v2.tag === "Left") { return err(v2._1); } + if (v2.tag === "Right") { return succ(v2._1); } + $runtime.fail(); + })(aff); + return () => { + $3(); + return Data$dUnit.unit; + }; +}); +const coerce = fn => { + const $1 = alt(unsafeReadTagged("Error")(fn))((() => { + const $1 = readString(fn); + if ($1.tag === "Left") { return Data$dEither.$Either("Left", $1._1); } + if ($1.tag === "Right") { return Data$dEither.$Either("Right", Effect$dException.error($1._1)); } + $runtime.fail(); + })()); + if ($1.tag === "Left") { return Effect$dException.error("Promise failed, couldn't extract JS Error or String"); } + if ($1.tag === "Right") { return $1._1; } + $runtime.fail(); +}; +const toAff = /* #__PURE__ */ toAff$p(coerce); +const toAffE = f => Effect$dAff._bind(Effect$dAff._liftEffect(f))(toAff$p(coerce)); +export {alt, coerce, fromAff, readString, toAff, toAff$p, toAffE, unsafeReadTagged}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Control.Semigroupoid/index.js b/.storybook/purescript-indexer/output-es/Control.Semigroupoid/index.js new file mode 100644 index 0000000..1086d8e --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Control.Semigroupoid/index.js @@ -0,0 +1,5 @@ +import * as $runtime from "../runtime.js"; +const semigroupoidFn = {compose: f => g => x => f(g(x))}; +const compose = dict => dict.compose; +const composeFlipped = dictSemigroupoid => f => g => dictSemigroupoid.compose(g)(f); +export {compose, composeFlipped, semigroupoidFn}; diff --git a/.storybook/purescript-indexer/output-es/Data.Array.NonEmpty.Internal/foreign.js b/.storybook/purescript-indexer/output-es/Data.Array.NonEmpty.Internal/foreign.js new file mode 100644 index 0000000..97b620e --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Array.NonEmpty.Internal/foreign.js @@ -0,0 +1,85 @@ +export const 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; + }; +}; + +export const foldl1Impl = function (f) { + return function (xs) { + var acc = xs[0]; + var len = xs.length; + for (var i = 1; i < len; i++) { + acc = f(acc)(xs[i]); + } + return acc; + }; +}; + +export const traverse1Impl = function () { + function Cont(fn) { + this.fn = fn; + } + + var emptyList = {}; + + var ConsCell = function (head, tail) { + this.head = head; + this.tail = tail; + }; + + function finalCell(head) { + return new ConsCell(head, emptyList); + } + + function consList(x) { + return function (xs) { + return new ConsCell(x, xs); + }; + } + + function listToArray(list) { + var arr = []; + var xs = list; + while (xs !== emptyList) { + arr.push(xs.head); + xs = xs.tail; + } + return arr; + } + + return function (apply) { + return function (map) { + return function (f) { + var buildFrom = function (x, ys) { + return apply(map(consList)(f(x)))(ys); + }; + + var go = function (acc, currentLen, xs) { + if (currentLen === 0) { + return acc; + } else { + var last = xs[currentLen - 1]; + return new Cont(function () { + var built = go(buildFrom(last, acc), currentLen - 1, xs); + return built; + }); + } + }; + + return function (array) { + var acc = map(finalCell)(f(array[array.length - 1])); + var result = go(acc, array.length - 1, array); + while (result instanceof Cont) { + result = result.fn(); + } + + return map(listToArray)(result); + }; + }; + }; + }; +}(); diff --git a/.storybook/purescript-indexer/output-es/Data.Array.NonEmpty.Internal/index.js b/.storybook/purescript-indexer/output-es/Data.Array.NonEmpty.Internal/index.js new file mode 100644 index 0000000..ba5bbeb --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Array.NonEmpty.Internal/index.js @@ -0,0 +1,87 @@ +// | This module exports the `NonEmptyArray` constructor. +// | +// | It is **NOT** intended for public use and is **NOT** versioned. +// | +// | Its content may change **in any way**, **at any time** and +// | **without notice**. +import * as $runtime from "../runtime.js"; +import * as Control$dAlt from "../Control.Alt/index.js"; +import * as Control$dApplicative from "../Control.Applicative/index.js"; +import * as Control$dApply from "../Control.Apply/index.js"; +import * as Control$dBind from "../Control.Bind/index.js"; +import * as Control$dMonad from "../Control.Monad/index.js"; +import * as Data$dEq from "../Data.Eq/index.js"; +import * as Data$dFoldable from "../Data.Foldable/index.js"; +import * as Data$dFoldableWithIndex from "../Data.FoldableWithIndex/index.js"; +import * as Data$dFunctor from "../Data.Functor/index.js"; +import * as Data$dFunctorWithIndex from "../Data.FunctorWithIndex/index.js"; +import * as Data$dOrd from "../Data.Ord/index.js"; +import * as Data$dSemigroup from "../Data.Semigroup/index.js"; +import * as Data$dSemigroup$dTraversable from "../Data.Semigroup.Traversable/index.js"; +import * as Data$dShow from "../Data.Show/index.js"; +import * as Data$dTraversable from "../Data.Traversable/index.js"; +import * as Data$dTraversableWithIndex from "../Data.TraversableWithIndex/index.js"; +import * as Data$dUnfoldable1 from "../Data.Unfoldable1/index.js"; +import {foldl1Impl, foldr1Impl, traverse1Impl} from "./foreign.js"; +const NonEmptyArray = x => x; +const unfoldable1NonEmptyArray = Data$dUnfoldable1.unfoldable1Array; +const traversableWithIndexNonEmptyArray = Data$dTraversableWithIndex.traversableWithIndexArray; +const traversableNonEmptyArray = Data$dTraversable.traversableArray; +const showNonEmptyArray = dictShow => { + const show = Data$dShow.showArrayImpl(dictShow.show); + return {show: v => "(NonEmptyArray " + (show(v) + ")")}; +}; +const semigroupNonEmptyArray = Data$dSemigroup.semigroupArray; +const ordNonEmptyArray = dictOrd => Data$dOrd.ordArray(dictOrd); +const ord1NonEmptyArray = Data$dOrd.ord1Array; +const monadNonEmptyArray = Control$dMonad.monadArray; +const functorWithIndexNonEmptyArray = Data$dFunctorWithIndex.functorWithIndexArray; +const functorNonEmptyArray = Data$dFunctor.functorArray; +const foldableWithIndexNonEmptyArray = Data$dFoldableWithIndex.foldableWithIndexArray; +const foldableNonEmptyArray = Data$dFoldable.foldableArray; +const foldable1NonEmptyArray = { + foldMap1: dictSemigroup => f => { + const $2 = Data$dFunctor.arrayMap(f); + const $3 = foldable1NonEmptyArray.foldl1(dictSemigroup.append); + return x => $3($2(x)); + }, + foldr1: foldr1Impl, + foldl1: foldl1Impl, + Foldable0: () => Data$dFoldable.foldableArray +}; +const traversable1NonEmptyArray = { + traverse1: dictApply => traverse1Impl(dictApply.apply)(dictApply.Functor0().map), + sequence1: dictApply => traversable1NonEmptyArray.traverse1(dictApply)(Data$dSemigroup$dTraversable.identity), + Foldable10: () => foldable1NonEmptyArray, + Traversable1: () => Data$dTraversable.traversableArray +}; +const eqNonEmptyArray = dictEq => ({eq: Data$dEq.eqArrayImpl(dictEq.eq)}); +const eq1NonEmptyArray = Data$dEq.eq1Array; +const bindNonEmptyArray = Control$dBind.bindArray; +const applyNonEmptyArray = Control$dApply.applyArray; +const applicativeNonEmptyArray = Control$dApplicative.applicativeArray; +const altNonEmptyArray = Control$dAlt.altArray; +export { + NonEmptyArray, + altNonEmptyArray, + applicativeNonEmptyArray, + applyNonEmptyArray, + bindNonEmptyArray, + eq1NonEmptyArray, + eqNonEmptyArray, + foldable1NonEmptyArray, + foldableNonEmptyArray, + foldableWithIndexNonEmptyArray, + functorNonEmptyArray, + functorWithIndexNonEmptyArray, + monadNonEmptyArray, + ord1NonEmptyArray, + ordNonEmptyArray, + semigroupNonEmptyArray, + showNonEmptyArray, + traversable1NonEmptyArray, + traversableNonEmptyArray, + traversableWithIndexNonEmptyArray, + unfoldable1NonEmptyArray +}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Data.Array.NonEmpty/index.js b/.storybook/purescript-indexer/output-es/Data.Array.NonEmpty/index.js new file mode 100644 index 0000000..1ffe5dc --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Array.NonEmpty/index.js @@ -0,0 +1,303 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dBind from "../Control.Bind/index.js"; +import * as Control$dMonad$dST$dInternal from "../Control.Monad.ST.Internal/index.js"; +import * as Data$dArray from "../Data.Array/index.js"; +import * as Data$dArray$dNonEmpty$dInternal from "../Data.Array.NonEmpty.Internal/index.js"; +import * as Data$dArray$dST from "../Data.Array.ST/index.js"; +import * as Data$dFoldable from "../Data.Foldable/index.js"; +import * as Data$dFunctor from "../Data.Functor/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dNonEmpty from "../Data.NonEmpty/index.js"; +import * as Data$dOrd from "../Data.Ord/index.js"; +import * as Data$dSemigroup from "../Data.Semigroup/index.js"; +import * as Data$dSemigroup$dFoldable from "../Data.Semigroup.Foldable/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +const max = x => y => { + const v = Data$dOrd.ordInt.compare(x)(y); + if (v.tag === "LT") { return y; } + if (v.tag === "EQ") { return x; } + if (v.tag === "GT") { return x; } + $runtime.fail(); +}; +const intercalate1 = dictSemigroup => { + const foldMap12 = Data$dArray$dNonEmpty$dInternal.foldable1NonEmptyArray.foldMap1({append: v => v1 => j => dictSemigroup.append(v(j))(dictSemigroup.append(j)(v1(j)))}); + return a => foldable => foldMap12(x => v => x)(foldable)(a); +}; +const transpose = x => Data$dArray.transpose(x); +const toArray = v => v; +const unionBy$p = eq => xs => x => Data$dArray.unionBy(eq)(xs)(x); +const union$p = dictEq => unionBy$p(dictEq.eq); +const unionBy = eq => xs => x => Data$dArray.unionBy(eq)(xs)(x); +const union = dictEq => unionBy(dictEq.eq); +const unzip = x => { + const $1 = Data$dArray.unzip(x); + return Data$dTuple.$Tuple($1._1, $1._2); +}; +const updateAt = i => x => Data$dArray.updateAt(i)(x); +const zip = xs => ys => Data$dArray.zip(xs)(ys); +const zipWith = f => xs => ys => Data$dArray.zipWith(f)(xs)(ys); +const zipWithA = dictApplicative => Data$dArray.zipWithA(dictApplicative); +const splitAt = i => xs => Data$dArray.splitAt(i)(xs); +const some = dictAlternative => Data$dArray.some(dictAlternative); +const snoc$p = xs => x => Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([x]))(xs)); +const snoc = xs => x => Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([x]))(xs)); +const singleton = x => [x]; +const replicate = i => x => Data$dArray.replicate(max(1)(i))(x); +const range = x => y => Data$dArray.range(x)(y); +const modifyAt = i => f => x => Data$dArray.modifyAt(i)(f)(x); +const intersectBy$p = eq => xs => Data$dArray.intersectBy(eq)(xs); +const intersectBy = eq => xs => x => Data$dArray.intersectBy(eq)(xs)(x); +const intersect$p = dictEq => intersectBy$p(dictEq.eq); +const intersect = dictEq => intersectBy(dictEq.eq); +const intercalate = dictSemigroup => intercalate1(dictSemigroup); +const insertAt = i => x => Data$dArray.insertAt(i)(x); +const fromFoldable1 = dictFoldable1 => Data$dArray.fromFoldableImpl(dictFoldable1.Foldable0().foldr); +const fromArray = xs => { + if (xs.length > 0) { return Data$dMaybe.$Maybe("Just", xs); } + return Data$dMaybe.Nothing; +}; +const fromFoldable = dictFoldable => { + const $1 = Data$dArray.fromFoldableImpl(dictFoldable.foldr); + return x => { + const $3 = $1(x); + if ($3.length > 0) { return Data$dMaybe.$Maybe("Just", $3); } + return Data$dMaybe.Nothing; + }; +}; +const transpose$p = x => { + const $1 = Data$dArray.transpose(x); + if ($1.length > 0) { return Data$dMaybe.$Maybe("Just", $1); } + return Data$dMaybe.Nothing; +}; +const foldr1 = Data$dArray$dNonEmpty$dInternal.foldr1Impl; +const foldl1 = Data$dArray$dNonEmpty$dInternal.foldl1Impl; +const foldMap1 = dictSemigroup => Data$dArray$dNonEmpty$dInternal.foldable1NonEmptyArray.foldMap1(dictSemigroup); +const fold1 = dictSemigroup => Data$dArray$dNonEmpty$dInternal.foldable1NonEmptyArray.foldMap1(dictSemigroup)(Data$dSemigroup$dFoldable.identity); +const difference$p = dictEq => Data$dFoldable.foldrArray(Data$dArray.delete(dictEq)); +const cons$p = x => xs => Data$dSemigroup.concatArray([x])(xs); +const fromNonEmpty = v => Data$dSemigroup.concatArray([v._1])(v._2); +const concatMap = b => a => Control$dBind.arrayBind(a)(b); +const concat = /* #__PURE__ */ (() => { + const $0 = Data$dFunctor.arrayMap(toArray); + return x => Data$dArray.concat($0(x)); +})(); +const appendArray = xs => ys => Data$dSemigroup.concatArray(xs)(ys); +const alterAt = i => f => x => Data$dArray.alterAt(i)(f)(x); +const head = x => { + const $1 = Data$dArray.index(x)(0); + if ($1.tag === "Just") { return $1._1; } + $runtime.fail(); +}; +const init = x => { + const $1 = Data$dArray.init(x); + if ($1.tag === "Just") { return $1._1; } + $runtime.fail(); +}; +const last = x => { + const $1 = Data$dArray.index(x)(x.length - 1 | 0); + if ($1.tag === "Just") { return $1._1; } + $runtime.fail(); +}; +const tail = x => { + const $1 = Data$dArray.tail(x); + if ($1.tag === "Just") { return $1._1; } + $runtime.fail(); +}; +const uncons = x => { + const $1 = Data$dArray.uncons(x); + if ($1.tag === "Just") { return $1._1; } + $runtime.fail(); +}; +const toNonEmpty = x => { + const $1 = Data$dArray.uncons(x); + const $2 = (() => { + if ($1.tag === "Just") { return $1._1; } + $runtime.fail(); + })(); + return Data$dNonEmpty.$NonEmpty($2.head, $2.tail); +}; +const unsnoc = x => { + const $1 = Data$dArray.unsnoc(x); + if ($1.tag === "Just") { return $1._1; } + $runtime.fail(); +}; +const all = p => Data$dArray.all(p); +const any = p => Data$dArray.any(p); +const catMaybes = x => Data$dArray.mapMaybe(x$1 => x$1)(x); +const $$delete = dictEq => x => x$1 => Data$dArray.deleteBy(dictEq.eq)(x)(x$1); +const deleteAt = i => Data$dArray.deleteAt(i); +const deleteBy = f => x => x$1 => Data$dArray.deleteBy(f)(x)(x$1); +const difference = dictEq => Data$dFoldable.foldrArray(Data$dArray.delete(dictEq)); +const drop = i => x => { + if (i < 1) { return x; } + return Data$dArray.slice(i)(x.length)(x); +}; +const dropEnd = i => x => Data$dArray.dropEnd(i)(x); +const dropWhile = f => x => Data$dArray.span(f)(x).rest; +const elem = dictEq => x => x$1 => Data$dArray.elem(dictEq)(x)(x$1); +const elemIndex = dictEq => x => Data$dArray.findIndex(v => dictEq.eq(v)(x)); +const elemLastIndex = dictEq => x => Data$dArray.findLastIndex(v => dictEq.eq(v)(x)); +const filter = f => Data$dArray.filter(f); +const filterA = dictApplicative => Data$dArray.filterA(dictApplicative); +const find = p => x => { + const $2 = Data$dArray.findIndex(p)(x); + if ($2.tag === "Just") { return Data$dMaybe.$Maybe("Just", x[$2._1]); } + return Data$dMaybe.Nothing; +}; +const findIndex = p => Data$dArray.findIndex(p); +const findLastIndex = x => Data$dArray.findLastIndex(x); +const findMap = p => Data$dArray.findMap(p); +const foldM = dictMonad => Data$dArray.foldM(dictMonad); +const foldRecM = dictMonadRec => Data$dArray.foldRecM(dictMonadRec); +const index = x => Data$dArray.index(x); +const length = x => x.length; +const mapMaybe = f => x => Data$dArray.mapMaybe(f)(x); +const notElem = dictEq => x => x$1 => Data$dArray.notElem(dictEq)(x)(x$1); +const partition = f => Data$dArray.partition(f); +const slice = start => end => Data$dArray.slice(start)(end); +const span = f => x => Data$dArray.span(f)(x); +const take = i => x => { + if (i < 1) { return []; } + return Data$dArray.slice(0)(i)(x); +}; +const takeEnd = i => x => Data$dArray.takeEnd(i)(x); +const takeWhile = f => x => Data$dArray.span(f)(x).init; +const toUnfoldable = dictUnfoldable => x => Data$dArray.toUnfoldable(dictUnfoldable)(x); +const cons = x => x$1 => Data$dSemigroup.concatArray([x])(x$1); +const group = dictEq => x => Data$dArray.groupBy(dictEq.eq)(x); +const groupAllBy = op => Data$dArray.groupAllBy(op); +const groupAll = dictOrd => Data$dArray.groupAllBy(dictOrd.compare); +const groupBy = op => x => Data$dArray.groupBy(op)(x); +const insert = dictOrd => x => x$1 => Data$dArray.insertBy(dictOrd.compare)(x)(x$1); +const insertBy = f => x => x$1 => Data$dArray.insertBy(f)(x)(x$1); +const intersperse = x => x$1 => Data$dArray.intersperse(x)(x$1); +const mapWithIndex = f => x => Data$dArray.zipWith(f)(Data$dArray.range(0)(x.length - 1 | 0))(x); +const modifyAtIndices = dictFoldable => Data$dArray.modifyAtIndices(dictFoldable); +const nub = dictOrd => x => Data$dArray.nubBy(dictOrd.compare)(x); +const nubBy = f => x => Data$dArray.nubBy(f)(x); +const nubByEq = f => x => Data$dArray.nubByEq(f)(x); +const nubEq = dictEq => x => Data$dArray.nubByEq(dictEq.eq)(x); +const reverse = x => Data$dArray.reverse(x); +const scanl = f => x => Data$dArray.scanl(f)(x); +const scanr = f => x => Data$dArray.scanr(f)(x); +const sort = dictOrd => x => Data$dArray.sortBy(dictOrd.compare)(x); +const sortBy = f => Data$dArray.sortBy(f); +const sortWith = dictOrd => f => Data$dArray.sortWith(dictOrd)(f); +const updateAtIndices = dictFoldable => Data$dArray.updateAtIndices(dictFoldable); +const unsafeIndex = () => x => $2 => x[$2]; +const toUnfoldable1 = dictUnfoldable1 => xs => { + const len = xs.length; + return dictUnfoldable1.unfoldr1(i => Data$dTuple.$Tuple( + xs[i], + (() => { + if (i < (len - 1 | 0)) { return Data$dMaybe.$Maybe("Just", i + 1 | 0); } + return Data$dMaybe.Nothing; + })() + ))(0); +}; +export { + all, + alterAt, + any, + appendArray, + catMaybes, + concat, + concatMap, + cons, + cons$p, + $$delete as delete, + deleteAt, + deleteBy, + difference, + difference$p, + drop, + dropEnd, + dropWhile, + elem, + elemIndex, + elemLastIndex, + filter, + filterA, + find, + findIndex, + findLastIndex, + findMap, + fold1, + foldM, + foldMap1, + foldRecM, + foldl1, + foldr1, + fromArray, + fromFoldable, + fromFoldable1, + fromNonEmpty, + group, + groupAll, + groupAllBy, + groupBy, + head, + index, + init, + insert, + insertAt, + insertBy, + intercalate, + intercalate1, + intersect, + intersect$p, + intersectBy, + intersectBy$p, + intersperse, + last, + length, + mapMaybe, + mapWithIndex, + max, + modifyAt, + modifyAtIndices, + notElem, + nub, + nubBy, + nubByEq, + nubEq, + partition, + range, + replicate, + reverse, + scanl, + scanr, + singleton, + slice, + snoc, + snoc$p, + some, + sort, + sortBy, + sortWith, + span, + splitAt, + tail, + take, + takeEnd, + takeWhile, + toArray, + toNonEmpty, + toUnfoldable, + toUnfoldable1, + transpose, + transpose$p, + uncons, + union, + union$p, + unionBy, + unionBy$p, + unsafeIndex, + unsnoc, + unzip, + updateAt, + updateAtIndices, + zip, + zipWith, + zipWithA +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Array.Partial/index.js b/.storybook/purescript-indexer/output-es/Data.Array.Partial/index.js new file mode 100644 index 0000000..8e90fe0 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Array.Partial/index.js @@ -0,0 +1,8 @@ +// | Partial helper functions for working with immutable arrays. +import * as $runtime from "../runtime.js"; +import * as Data$dArray from "../Data.Array/index.js"; +const tail = () => xs => Data$dArray.slice(1)(xs.length)(xs); +const last = () => xs => xs[(xs.length - 1 | 0)]; +const init = () => xs => Data$dArray.slice(0)(xs.length - 1 | 0)(xs); +const head = () => xs => xs[0]; +export {head, init, last, tail}; diff --git a/.storybook/purescript-indexer/output-es/Data.Array.ST.Iterator/index.js b/.storybook/purescript-indexer/output-es/Data.Array.ST.Iterator/index.js new file mode 100644 index 0000000..425af0e --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Array.ST.Iterator/index.js @@ -0,0 +1,74 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dST$dInternal from "../Control.Monad.ST.Internal/index.js"; +import * as Data$dArray$dST from "../Data.Array.ST/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +const $Iterator = (_1, _2) => ({tag: "Iterator", _1, _2}); +const Iterator = value0 => value1 => $Iterator(value0, value1); +const peek = v => () => { + const i = v._2.value; + return v._1(i); +}; +const next = v => () => { + const i = v._2.value; + const $2 = v._2.value; + v._2.value = $2 + 1 | 0; + return v._1(i); +}; +const pushWhile = p => iter => array => () => { + const $$break = {value: false}; + return Control$dMonad$dST$dInternal.while(() => { + const $4 = $$break.value; + return !$4; + })(() => { + const i = iter._2.value; + const mx = iter._1(i); + if (mx.tag === "Just") { + if (p(mx._1)) { + Data$dArray$dST.pushAll([mx._1])(array)(); + iter._2.value; + const $8 = iter._2.value; + iter._2.value = $8 + 1 | 0; + return Data$dUnit.unit; + } + $$break.value = true; + return Data$dUnit.unit; + } + $$break.value = true; + return Data$dUnit.unit; + })(); +}; +const pushAll = /* #__PURE__ */ pushWhile(v => true); +const iterator = f => { + const $1 = Iterator(f); + return () => { + const $2 = {value: 0}; + return $1($2); + }; +}; +const iterate = iter => f => () => { + const $$break = {value: false}; + return Control$dMonad$dST$dInternal.while(() => { + const $3 = $$break.value; + return !$3; + })(() => { + const i = iter._2.value; + const $4 = iter._2.value; + iter._2.value = $4 + 1 | 0; + const mx = iter._1(i); + if (mx.tag === "Just") { return f(mx._1)(); } + if (mx.tag === "Nothing") { + $$break.value = true; + return Data$dUnit.unit; + } + $runtime.fail(); + })(); +}; +const exhausted = /* #__PURE__ */ (() => { + const $0 = Control$dMonad$dST$dInternal.map_(Data$dMaybe.isNothing); + return x => $0(() => { + const i = x._2.value; + return x._1(i); + }); +})(); +export {$Iterator, Iterator, exhausted, iterate, iterator, next, peek, pushAll, pushWhile}; diff --git a/.storybook/purescript-indexer/output-es/Data.Array.ST.Partial/foreign.js b/.storybook/purescript-indexer/output-es/Data.Array.ST.Partial/foreign.js new file mode 100644 index 0000000..b289097 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Array.ST.Partial/foreign.js @@ -0,0 +1,17 @@ +export const peekImpl = function (i) { + return function (xs) { + return function () { + return xs[i]; + }; + }; +}; + +export const pokeImpl = function (i) { + return function (a) { + return function (xs) { + return function () { + xs[i] = a; + }; + }; + }; +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Array.ST.Partial/index.js b/.storybook/purescript-indexer/output-es/Data.Array.ST.Partial/index.js new file mode 100644 index 0000000..0d09cf2 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Array.ST.Partial/index.js @@ -0,0 +1,9 @@ +// | Partial functions for working with mutable arrays using the `ST` effect. +// | +// | This module is particularly helpful when performance is very important. +import * as $runtime from "../runtime.js"; +import {peekImpl, pokeImpl} from "./foreign.js"; +const poke = () => pokeImpl; +const peek = () => peekImpl; +export {peek, poke}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Data.Array.ST/foreign.js b/.storybook/purescript-indexer/output-es/Data.Array.ST/foreign.js new file mode 100644 index 0000000..57709b7 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Array.ST/foreign.js @@ -0,0 +1,160 @@ +function newSTArray () { + return []; +} +export { newSTArray as new }; + +export const peekImpl = function (just) { + return function (nothing) { + return function (i) { + return function (xs) { + return function () { + return i >= 0 && i < xs.length ? just(xs[i]) : nothing; + }; + }; + }; + }; +}; + +export const poke = function (i) { + return function (a) { + return function (xs) { + return function () { + var ret = i >= 0 && i < xs.length; + if (ret) xs[i] = a; + return ret; + }; + }; + }; +}; + +export const popImpl = function (just) { + return function (nothing) { + return function (xs) { + return function () { + return xs.length > 0 ? just(xs.pop()) : nothing; + }; + }; + }; +}; + +export const pushAll = function (as) { + return function (xs) { + return function () { + return xs.push.apply(xs, as); + }; + }; +}; + +export const shiftImpl = function (just) { + return function (nothing) { + return function (xs) { + return function () { + return xs.length > 0 ? just(xs.shift()) : nothing; + }; + }; + }; +}; + +export const unshiftAll = function (as) { + return function (xs) { + return function () { + return xs.unshift.apply(xs, as); + }; + }; +}; + +export const splice = function (i) { + return function (howMany) { + return function (bs) { + return function (xs) { + return function () { + return xs.splice.apply(xs, [i, howMany].concat(bs)); + }; + }; + }; + }; +}; + +export const unsafeFreeze = function (xs) { + return function () { + return xs; + }; +}; + +export const unsafeThaw = function (xs) { + return function () { + return xs; + }; +}; + +function copyImpl(xs) { + return function () { + return xs.slice(); + }; +} + +export const freeze = copyImpl; + +export const thaw = copyImpl; + +export const sortByImpl = (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) { + return function (fromOrdering) { + return function (xs) { + return function () { + if (xs.length < 2) return xs; + + mergeFromTo(compare, fromOrdering, xs, xs.slice(0), 0, xs.length); + + return xs; + }; + }; + }; + }; +})(); + +export const toAssocArray = function (xs) { + return function () { + var n = xs.length; + var as = new Array(n); + for (var i = 0; i < n; i++) as[i] = { value: xs[i], index: i }; + return as; + }; +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Array.ST/index.js b/.storybook/purescript-indexer/output-es/Data.Array.ST/index.js new file mode 100644 index 0000000..60b97a9 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Array.ST/index.js @@ -0,0 +1,40 @@ +// | Helper functions for working with mutable arrays using the `ST` effect. +// | +// | This module can be used when performance is important and mutation is a local effect. +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dST$dInternal from "../Control.Monad.ST.Internal/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import {freeze, new as $$new, peekImpl, poke, popImpl, pushAll, shiftImpl, sortByImpl, splice, thaw, toAssocArray, unsafeFreeze, unsafeThaw, unshiftAll} from "./foreign.js"; +const withArray = f => xs => { + const $2 = thaw(xs); + return () => { + const result = $2(); + f(result)(); + return unsafeFreeze(result)(); + }; +}; +const unshift = a => unshiftAll([a]); +const sortBy = comp => sortByImpl(comp)(v => { + if (v.tag === "GT") { return 1; } + if (v.tag === "EQ") { return 0; } + if (v.tag === "LT") { return -1; } + $runtime.fail(); +}); +const sortWith = dictOrd => f => sortBy(x => y => dictOrd.compare(f(x))(f(y))); +const sort = dictOrd => sortBy(dictOrd.compare); +const shift = /* #__PURE__ */ shiftImpl(Data$dMaybe.Just)(Data$dMaybe.Nothing); +const run = st => Control$dMonad$dST$dInternal.run(Control$dMonad$dST$dInternal.bind_(st)(unsafeFreeze)); +const push = a => pushAll([a]); +const pop = /* #__PURE__ */ popImpl(Data$dMaybe.Just)(Data$dMaybe.Nothing); +const peek = /* #__PURE__ */ peekImpl(Data$dMaybe.Just)(Data$dMaybe.Nothing); +const modify = i => f => xs => { + const $3 = peek(i)(xs); + return () => { + const entry = $3(); + if (entry.tag === "Just") { return poke(i)(f(entry._1))(xs)(); } + if (entry.tag === "Nothing") { return false; } + $runtime.fail(); + }; +}; +export {modify, peek, pop, push, run, shift, sort, sortBy, sortWith, unshift, withArray}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Data.Array/foreign.js b/.storybook/purescript-indexer/output-es/Data.Array/foreign.js new file mode 100644 index 0000000..490c53f --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Array/foreign.js @@ -0,0 +1,386 @@ +//------------------------------------------------------------------------------ +// Array creation -------------------------------------------------------------- +//------------------------------------------------------------------------------ + +export const range = 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; + }; +}; + +// In browsers that have Array.prototype.fill we use it, as it's faster. +export const replicate = typeof Array.prototype.fill === "function" ? replicateFill : replicatePolyfill; + +export const fromFoldableImpl = (function () { + function Cons(head, tail) { + this.head = head; + this.tail = tail; + } + var emptyList = {}; + + function curryCons(head) { + return function (tail) { + return new Cons(head, tail); + }; + } + + 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)); + }; + }; +})(); + +//------------------------------------------------------------------------------ +// Array size ------------------------------------------------------------------ +//------------------------------------------------------------------------------ + +export const length = function (xs) { + return xs.length; +}; + +//------------------------------------------------------------------------------ +// Non-indexed reads ----------------------------------------------------------- +//------------------------------------------------------------------------------ + +export const unconsImpl = function (empty) { + return function (next) { + return function (xs) { + return xs.length === 0 ? empty({}) : next(xs[0])(xs.slice(1)); + }; + }; +}; + +//------------------------------------------------------------------------------ +// Indexed operations ---------------------------------------------------------- +//------------------------------------------------------------------------------ + +export const indexImpl = function (just) { + return function (nothing) { + return function (xs) { + return function (i) { + return i < 0 || i >= xs.length ? nothing : just(xs[i]); + }; + }; + }; +}; + +export const findMapImpl = function (nothing) { + return function (isJust) { + return function (f) { + return function (xs) { + for (var i = 0; i < xs.length; i++) { + var result = f(xs[i]); + if (isJust(result)) return result; + } + return nothing; + }; + }; + }; +}; + +export const 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; + }; + }; + }; +}; + +export const findLastIndexImpl = function (just) { + return function (nothing) { + return function (f) { + return function (xs) { + for (var i = xs.length - 1; i >= 0; i--) { + if (f(xs[i])) return just(i); + } + return nothing; + }; + }; + }; +}; + +export const _insertAt = function (just) { + return function (nothing) { + return function (i) { + return function (a) { + return function (l) { + if (i < 0 || i > l.length) return nothing; + var l1 = l.slice(); + l1.splice(i, 0, a); + return just(l1); + }; + }; + }; + }; +}; + +export const _deleteAt = function (just) { + return function (nothing) { + return function (i) { + return function (l) { + if (i < 0 || i >= l.length) return nothing; + var l1 = l.slice(); + l1.splice(i, 1); + return just(l1); + }; + }; + }; +}; + +export const _updateAt = function (just) { + return function (nothing) { + return function (i) { + return function (a) { + return function (l) { + if (i < 0 || i >= l.length) return nothing; + var l1 = l.slice(); + l1[i] = a; + return just(l1); + }; + }; + }; + }; +}; + +//------------------------------------------------------------------------------ +// Transformations ------------------------------------------------------------- +//------------------------------------------------------------------------------ + +export const reverse = function (l) { + return l.slice().reverse(); +}; + +export const concat = function (xss) { + if (xss.length <= 10000) { + // This method is faster, but it crashes on big arrays. + // So we use it when can and fallback to simple variant otherwise. + 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; +}; + +export const filter = function (f) { + return function (xs) { + return xs.filter(f); + }; +}; + +export const 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: yes, no: no }; + }; +}; + +export const scanl = function (f) { + return function (b) { + return function (xs) { + var len = xs.length; + var acc = b; + var out = new Array(len); + for (var i = 0; i < len; i++) { + acc = f(acc)(xs[i]); + out[i] = acc; + } + return out; + }; + }; +}; + +export const scanr = function (f) { + return function (b) { + return function (xs) { + var len = xs.length; + var acc = b; + var out = new Array(len); + for (var i = len - 1; i >= 0; i--) { + acc = f(xs[i])(acc); + out[i] = acc; + } + return out; + }; + }; +}; + +//------------------------------------------------------------------------------ +// Sorting --------------------------------------------------------------------- +//------------------------------------------------------------------------------ + +export const sortByImpl = (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) { + return function (fromOrdering) { + return function (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; + }; + }; + }; +})(); + +//------------------------------------------------------------------------------ +// Subarrays ------------------------------------------------------------------- +//------------------------------------------------------------------------------ + +export const slice = function (s) { + return function (e) { + return function (l) { + return l.slice(s, e); + }; + }; +}; + +//------------------------------------------------------------------------------ +// Zipping --------------------------------------------------------------------- +//------------------------------------------------------------------------------ + +export const 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; + }; + }; +}; + +//------------------------------------------------------------------------------ +// Folding --------------------------------------------------------------------- +//------------------------------------------------------------------------------ + +export const any = function (p) { + return function (xs) { + var len = xs.length; + for (var i = 0; i < len; i++) { + if (p(xs[i])) return true; + } + return false; + }; +}; + +export const 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; + }; +}; + +//------------------------------------------------------------------------------ +// Partial --------------------------------------------------------------------- +//------------------------------------------------------------------------------ + +export const unsafeIndexImpl = function (xs) { + return function (n) { + return xs[n]; + }; +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Array/index.js b/.storybook/purescript-indexer/output-es/Data.Array/index.js new file mode 100644 index 0000000..35cb466 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Array/index.js @@ -0,0 +1,519 @@ +// | Helper functions for working with immutable Javascript arrays. +// | +// | _Note_: Depending on your use-case, you may prefer to use `Data.List` or +// | `Data.Sequence` instead, which might give better performance for certain +// | use cases. This module is useful when integrating with JavaScript libraries +// | which use arrays, but immutable arrays are not a practical data structure +// | for many use cases due to their poor asymptotics. +// | +// | In addition to the functions in this module, Arrays have a number of +// | useful instances: +// | +// | * `Functor`, which provides `map :: forall a b. (a -> b) -> Array a -> +// | Array b` +// | * `Apply`, which provides `(<*>) :: forall a b. Array (a -> b) -> Array a +// | -> Array b`. This function works a bit like a Cartesian product; the +// | result array is constructed by applying each function in the first +// | array to each value in the second, so that the result array ends up with +// | a length equal to the product of the two arguments' lengths. +// | * `Bind`, which provides `(>>=) :: forall a b. (a -> Array b) -> Array a +// | -> Array b` (this is the same as `concatMap`). +// | * `Semigroup`, which provides `(<>) :: forall a. Array a -> Array a -> +// | Array a`, for concatenating arrays. +// | * `Foldable`, which provides a slew of functions for *folding* (also known +// | as *reducing*) arrays down to one value. For example, +// | `Data.Foldable.or` tests whether an array of `Boolean` values contains +// | at least one `true` value. +// | * `Traversable`, which provides the PureScript version of a for-loop, +// | allowing you to STAI.iterate over an array and accumulate effects. +// | +import * as $runtime from "../runtime.js"; +import * as Control$dBind from "../Control.Bind/index.js"; +import * as Control$dMonad$dRec$dClass from "../Control.Monad.Rec.Class/index.js"; +import * as Control$dMonad$dST$dInternal from "../Control.Monad.ST.Internal/index.js"; +import * as Data$dArray$dST from "../Data.Array.ST/index.js"; +import * as Data$dArray$dST$dIterator from "../Data.Array.ST.Iterator/index.js"; +import * as Data$dFoldable from "../Data.Foldable/index.js"; +import * as Data$dFunctor from "../Data.Functor/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dOrd from "../Data.Ord/index.js"; +import * as Data$dSemigroup from "../Data.Semigroup/index.js"; +import * as Data$dTraversable from "../Data.Traversable/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +import { + _deleteAt, + _insertAt, + _updateAt, + all, + any, + concat, + filter, + findIndexImpl, + findLastIndexImpl, + findMapImpl, + fromFoldableImpl, + indexImpl, + length, + partition, + range, + replicate, + reverse, + scanl, + scanr, + slice, + sortByImpl, + unconsImpl, + unsafeIndexImpl, + zipWith +} from "./foreign.js"; +const traverse_ = /* #__PURE__ */ Data$dFoldable.traverse_(Control$dMonad$dST$dInternal.applicativeST); +const intercalate1 = dictMonoid => { + const append = dictMonoid.Semigroup0().append; + return sep => xs => Data$dFoldable.foldlArray(v => v1 => { + if (v.init) { return {init: false, acc: v1}; } + return {init: false, acc: append(v.acc)(append(sep)(v1))}; + })({init: true, acc: dictMonoid.mempty})(xs).acc; +}; +const zipWithA = dictApplicative => { + const sequence1 = Data$dTraversable.traversableArray.traverse(dictApplicative)(Data$dTraversable.identity); + return f => xs => ys => sequence1(zipWith(f)(xs)(ys)); +}; +const zip = /* #__PURE__ */ zipWith(Data$dTuple.Tuple); +const updateAtIndices = dictFoldable => { + const traverse_1 = traverse_(dictFoldable); + return us => xs => Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(res => traverse_1(v => Data$dArray$dST.poke(v._1)(v._2)(res))(us))(xs)); +}; +const updateAt = /* #__PURE__ */ _updateAt(Data$dMaybe.Just)(Data$dMaybe.Nothing); +const unsafeIndex = () => unsafeIndexImpl; +const uncons = /* #__PURE__ */ unconsImpl(v => Data$dMaybe.Nothing)(x => xs => Data$dMaybe.$Maybe("Just", {head: x, tail: xs})); +const toUnfoldable = dictUnfoldable => xs => { + const len = xs.length; + return dictUnfoldable.unfoldr(i => { + if (i < len) { return Data$dMaybe.$Maybe("Just", Data$dTuple.$Tuple(xs[i], i + 1 | 0)); } + return Data$dMaybe.Nothing; + })(0); +}; +const take = n => xs => { + if (n < 1) { return []; } + return slice(0)(n)(xs); +}; +const tail = /* #__PURE__ */ unconsImpl(v => Data$dMaybe.Nothing)(v => xs => Data$dMaybe.$Maybe("Just", xs)); +const splitAt = v => v1 => { + if (v <= 0) { return {before: [], after: v1}; } + return {before: slice(0)(v)(v1), after: slice(v)(v1.length)(v1)}; +}; +const sortBy = comp => sortByImpl(comp)(v => { + if (v.tag === "GT") { return 1; } + if (v.tag === "EQ") { return 0; } + if (v.tag === "LT") { return -1; } + $runtime.fail(); +}); +const sortWith = dictOrd => f => sortBy(x => y => dictOrd.compare(f(x))(f(y))); +const sort = dictOrd => xs => sortBy(dictOrd.compare)(xs); +const snoc = xs => x => Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([x]))(xs)); +const singleton = a => [a]; +const $$null = xs => xs.length === 0; +const nubByEq = eq2 => xs => Control$dMonad$dST$dInternal.run(() => { + const arr = Data$dArray$dST.new(); + Control$dMonad$dST$dInternal.foreach(xs)(x => { + const $4 = any(v => eq2(v)(x)); + return () => { + const $5 = Data$dArray$dST.unsafeFreeze(arr)(); + if (!$4($5)) { + Data$dArray$dST.pushAll([x])(arr)(); + return Data$dUnit.unit; + } + return Data$dUnit.unit; + }; + })(); + return Data$dArray$dST.unsafeFreeze(arr)(); +}); +const nubEq = dictEq => nubByEq(dictEq.eq); +const modifyAtIndices = dictFoldable => { + const traverse_1 = traverse_(dictFoldable); + return is => f => xs => Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(res => traverse_1(i => Data$dArray$dST.modify(i)(f)(res))(is))(xs)); +}; +const mapWithIndex = f => xs => zipWith(f)(range(0)(xs.length - 1 | 0))(xs); +const intersperse = a => arr => { + const v = arr.length; + if (v < 2) { return arr; } + return Control$dMonad$dST$dInternal.run(Control$dMonad$dST$dInternal.bind_(() => { + const out = Data$dArray$dST.new(); + Data$dArray$dST.pushAll([arr[0]])(out)(); + Control$dMonad$dST$dInternal.for(1)(v)(idx => { + const $6 = Data$dArray$dST.pushAll([a])(out); + return () => { + $6(); + Data$dArray$dST.pushAll([arr[idx]])(out)(); + return Data$dUnit.unit; + }; + })(); + return out; + })(Data$dArray$dST.unsafeFreeze)); +}; +const intercalate = dictMonoid => intercalate1(dictMonoid); +const insertAt = /* #__PURE__ */ _insertAt(Data$dMaybe.Just)(Data$dMaybe.Nothing); +const init = xs => { + if (xs.length === 0) { return Data$dMaybe.Nothing; } + return Data$dMaybe.$Maybe("Just", slice(0)(xs.length - 1 | 0)(xs)); +}; +const index = /* #__PURE__ */ indexImpl(Data$dMaybe.Just)(Data$dMaybe.Nothing); +const last = xs => index(xs)(xs.length - 1 | 0); +const unsnoc = xs => Data$dMaybe.applyMaybe.apply((() => { + const $1 = init(xs); + if ($1.tag === "Just") { return Data$dMaybe.$Maybe("Just", v1 => ({init: $1._1, last: v1})); } + return Data$dMaybe.Nothing; +})())(index(xs)(xs.length - 1 | 0)); +const modifyAt = i => f => xs => { + const $3 = index(xs)(i); + if ($3.tag === "Nothing") { return Data$dMaybe.Nothing; } + if ($3.tag === "Just") { return updateAt(i)(f($3._1))(xs); } + $runtime.fail(); +}; +const span = p => arr => { + const go = go$a0$copy => { + let go$a0 = go$a0$copy, go$c = true, go$r; + while (go$c) { + const i = go$a0; + const v = index(arr)(i); + if (v.tag === "Just") { + if (p(v._1)) { + go$a0 = i + 1 | 0; + continue; + } + go$c = false; + go$r = Data$dMaybe.$Maybe("Just", i); + continue; + } + if (v.tag === "Nothing") { + go$c = false; + go$r = Data$dMaybe.Nothing; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + const breakIndex = go(0); + if (breakIndex.tag === "Just") { + if (breakIndex._1 === 0) { return {init: [], rest: arr}; } + return {init: slice(0)(breakIndex._1)(arr), rest: slice(breakIndex._1)(arr.length)(arr)}; + } + if (breakIndex.tag === "Nothing") { return {init: arr, rest: []}; } + $runtime.fail(); +}; +const takeWhile = p => xs => span(p)(xs).init; +const unzip = xs => Control$dMonad$dST$dInternal.run(() => { + const fsts = Data$dArray$dST.new(); + const snds = Data$dArray$dST.new(); + const $3 = {value: 0}; + Data$dArray$dST$dIterator.iterate(Data$dArray$dST$dIterator.$Iterator(v => index(xs)(v), $3))(v => () => { + Data$dArray$dST.pushAll([v._1])(fsts)(); + Data$dArray$dST.pushAll([v._2])(snds)(); + return Data$dUnit.unit; + })(); + const fsts$p = Data$dArray$dST.unsafeFreeze(fsts)(); + const snds$p = Data$dArray$dST.unsafeFreeze(snds)(); + return Data$dTuple.$Tuple(fsts$p, snds$p); +}); +const head = xs => index(xs)(0); +const nubBy = comp => xs => { + const indexedAndSorted = sortBy(x => y => comp(x._2)(y._2))(zipWith(Data$dTuple.Tuple)(range(0)(xs.length - 1 | 0))(xs)); + const v = index(indexedAndSorted)(0); + if (v.tag === "Nothing") { return []; } + if (v.tag === "Just") { + return Data$dFunctor.arrayMap(Data$dTuple.snd)(sortWith(Data$dOrd.ordInt)(Data$dTuple.fst)(Control$dMonad$dST$dInternal.run((() => { + const $4 = Data$dArray$dST.unsafeThaw([v._1]); + return () => { + const result = $4(); + Control$dMonad$dST$dInternal.foreach(indexedAndSorted)(v1 => () => { + const $7 = Data$dArray$dST.unsafeFreeze(result)(); + const $8 = index($7)($7.length - 1 | 0); + const $9 = comp((() => { + if ($8.tag === "Just") { return $8._1._2; } + $runtime.fail(); + })())(v1._2); + if ($9.tag === "LT" || ($9.tag === "GT" || !($9.tag === "EQ"))) { + Data$dArray$dST.pushAll([v1])(result)(); + return Data$dUnit.unit; + } + return Data$dUnit.unit; + })(); + return Data$dArray$dST.unsafeFreeze(result)(); + }; + })()))); + } + $runtime.fail(); +}; +const nub = dictOrd => nubBy(dictOrd.compare); +const groupBy = op => xs => Control$dMonad$dST$dInternal.run(() => { + const result = Data$dArray$dST.new(); + const $3 = {value: 0}; + const iter = Data$dArray$dST$dIterator.$Iterator(v => index(xs)(v), $3); + Data$dArray$dST$dIterator.iterate(iter)(x => () => { + const sub1 = Data$dArray$dST.new(); + Data$dArray$dST.pushAll([x])(sub1)(); + Data$dArray$dST$dIterator.pushWhile(op(x))(iter)(sub1)(); + const grp = Data$dArray$dST.unsafeFreeze(sub1)(); + Data$dArray$dST.pushAll([grp])(result)(); + return Data$dUnit.unit; + })(); + return Data$dArray$dST.unsafeFreeze(result)(); +}); +const groupAllBy = cmp => { + const $1 = groupBy(x => y => cmp(x)(y).tag === "EQ"); + const $2 = sortBy(cmp); + return x => $1($2(x)); +}; +const groupAll = dictOrd => groupAllBy(dictOrd.compare); +const group = dictEq => xs => groupBy(dictEq.eq)(xs); +const fromFoldable = dictFoldable => fromFoldableImpl(dictFoldable.foldr); +const foldr = Data$dFoldable.foldrArray; +const foldl = Data$dFoldable.foldlArray; +const transpose = xs => { + 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 idx = go$a0, allArrays = go$a1; + const v = Data$dFoldable.foldlArray(acc => nextArr => { + const $6 = index(nextArr)(idx); + if ($6.tag === "Nothing") { return acc; } + if ($6.tag === "Just") { + return Data$dMaybe.$Maybe( + "Just", + (() => { + if (acc.tag === "Nothing") { return [$6._1]; } + if (acc.tag === "Just") { return Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([$6._1]))(acc._1)); } + $runtime.fail(); + })() + ); + } + $runtime.fail(); + })(Data$dMaybe.Nothing)(xs); + if (v.tag === "Nothing") { + go$c = false; + go$r = allArrays; + continue; + } + if (v.tag === "Just") { + go$a0 = idx + 1 | 0; + go$a1 = Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([v._1]))(allArrays)); + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go(0)([]); +}; +const foldRecM = dictMonadRec => { + const Monad0 = dictMonadRec.Monad0(); + const pure1 = Monad0.Applicative0().pure; + const bind1 = Monad0.Bind1().bind; + return f => b => array => dictMonadRec.tailRecM(o => { + if (o.b >= array.length) { return pure1(Control$dMonad$dRec$dClass.$Step("Done", o.a)); } + return bind1(f(o.a)(array[o.b]))(res$p => pure1(Control$dMonad$dRec$dClass.$Step("Loop", {a: res$p, b: o.b + 1 | 0}))); + })({a: b, b: 0}); +}; +const foldMap = dictMonoid => Data$dFoldable.foldableArray.foldMap(dictMonoid); +const foldM = dictMonad => { + const pure1 = dictMonad.Applicative0().pure; + const bind1 = dictMonad.Bind1().bind; + return f => b => unconsImpl(v => pure1(b))(a => as => bind1(f(b)(a))(b$p => foldM(dictMonad)(f)(b$p)(as))); +}; +const fold = dictMonoid => Data$dFoldable.foldableArray.foldMap(dictMonoid)(Data$dFoldable.identity); +const findMap = /* #__PURE__ */ findMapImpl(Data$dMaybe.Nothing)(Data$dMaybe.isJust); +const findLastIndex = /* #__PURE__ */ findLastIndexImpl(Data$dMaybe.Just)(Data$dMaybe.Nothing); +const insertBy = cmp => x => ys => { + const $3 = insertAt((() => { + const $3 = findLastIndex(y => cmp(x)(y).tag === "GT")(ys); + if ($3.tag === "Nothing") { return 0; } + if ($3.tag === "Just") { return $3._1 + 1 | 0; } + $runtime.fail(); + })())(x)(ys); + if ($3.tag === "Just") { return $3._1; } + $runtime.fail(); +}; +const insert = dictOrd => insertBy(dictOrd.compare); +const findIndex = /* #__PURE__ */ findIndexImpl(Data$dMaybe.Just)(Data$dMaybe.Nothing); +const intersectBy = eq2 => xs => ys => filter(x => { + const $4 = findIndex(eq2(x))(ys); + if ($4.tag === "Nothing") { return false; } + if ($4.tag === "Just") { return true; } + $runtime.fail(); +})(xs); +const intersect = dictEq => intersectBy(dictEq.eq); +const find = f => xs => { + const $2 = findIndex(f)(xs); + if ($2.tag === "Just") { return Data$dMaybe.$Maybe("Just", xs[$2._1]); } + return Data$dMaybe.Nothing; +}; +const elemLastIndex = dictEq => x => findLastIndex(v => dictEq.eq(v)(x)); +const elemIndex = dictEq => x => findIndex(v => dictEq.eq(v)(x)); +const notElem = dictEq => a => arr => { + const $3 = findIndex(v => dictEq.eq(v)(a))(arr); + if ($3.tag === "Nothing") { return true; } + if ($3.tag === "Just") { return false; } + $runtime.fail(); +}; +const elem = dictEq => a => arr => { + const $3 = findIndex(v => dictEq.eq(v)(a))(arr); + if ($3.tag === "Nothing") { return false; } + if ($3.tag === "Just") { return true; } + $runtime.fail(); +}; +const dropWhile = p => xs => span(p)(xs).rest; +const dropEnd = n => xs => { + const $2 = xs.length - n | 0; + if ($2 < 1) { return []; } + return slice(0)($2)(xs); +}; +const drop = n => xs => { + if (n < 1) { return xs; } + return slice(n)(xs.length)(xs); +}; +const takeEnd = n => xs => { + const $2 = xs.length - n | 0; + if ($2 < 1) { return xs; } + return slice($2)(xs.length)(xs); +}; +const deleteAt = /* #__PURE__ */ _deleteAt(Data$dMaybe.Just)(Data$dMaybe.Nothing); +const deleteBy = v => v1 => v2 => { + if (v2.length === 0) { return []; } + const $3 = findIndex(v(v1))(v2); + if ($3.tag === "Nothing") { return v2; } + if ($3.tag === "Just") { + const $4 = deleteAt($3._1)(v2); + if ($4.tag === "Just") { return $4._1; } + $runtime.fail(); + } + $runtime.fail(); +}; +const unionBy = eq2 => xs => ys => Data$dSemigroup.concatArray(xs)(Data$dFoldable.foldlArray(b => a => deleteBy(eq2)(a)(b))(nubByEq(eq2)(ys))(xs)); +const union = dictEq => unionBy(dictEq.eq); +const $$delete = dictEq => deleteBy(dictEq.eq); +const difference = dictEq => Data$dFoldable.foldrArray($$delete(dictEq)); +const cons = x => xs => Data$dSemigroup.concatArray([x])(xs); +const some = dictAlternative => { + const apply1 = dictAlternative.Applicative0().Apply0().apply; + const map3 = dictAlternative.Plus1().Alt0().Functor0().map; + return dictLazy => v => apply1(map3(cons)(v))(dictLazy.defer(v1 => many(dictAlternative)(dictLazy)(v))); +}; +const many = dictAlternative => { + const alt = dictAlternative.Plus1().Alt0().alt; + const pure1 = dictAlternative.Applicative0().pure; + return dictLazy => v => alt(some(dictAlternative)(dictLazy)(v))(pure1([])); +}; +const concatMap = b => a => Control$dBind.arrayBind(a)(b); +const mapMaybe = f => concatMap(x => { + const $2 = f(x); + if ($2.tag === "Nothing") { return []; } + if ($2.tag === "Just") { return [$2._1]; } + $runtime.fail(); +}); +const filterA = dictApplicative => { + const traverse1 = Data$dTraversable.traversableArray.traverse(dictApplicative); + const map3 = dictApplicative.Apply0().Functor0().map; + return p => { + const $4 = traverse1(x => map3(Data$dTuple.Tuple(x))(p(x))); + const $5 = map3(mapMaybe(v => { + if (v._2) { return Data$dMaybe.$Maybe("Just", v._1); } + return Data$dMaybe.Nothing; + })); + return x => $5($4(x)); + }; +}; +const catMaybes = /* #__PURE__ */ mapMaybe(x => x); +const alterAt = i => f => xs => { + const $3 = index(xs)(i); + if ($3.tag === "Nothing") { return Data$dMaybe.Nothing; } + if ($3.tag === "Just") { + const v = f($3._1); + if (v.tag === "Nothing") { return deleteAt(i)(xs); } + if (v.tag === "Just") { return updateAt(i)(v._1)(xs); } + $runtime.fail(); + } + $runtime.fail(); +}; +export { + alterAt, + catMaybes, + concatMap, + cons, + $$delete as delete, + deleteAt, + deleteBy, + difference, + drop, + dropEnd, + dropWhile, + elem, + elemIndex, + elemLastIndex, + filterA, + find, + findIndex, + findLastIndex, + findMap, + fold, + foldM, + foldMap, + foldRecM, + foldl, + foldr, + fromFoldable, + group, + groupAll, + groupAllBy, + groupBy, + head, + index, + init, + insert, + insertAt, + insertBy, + intercalate, + intercalate1, + intersect, + intersectBy, + intersperse, + last, + many, + mapMaybe, + mapWithIndex, + modifyAt, + modifyAtIndices, + notElem, + nub, + nubBy, + nubByEq, + nubEq, + $$null as null, + singleton, + snoc, + some, + sort, + sortBy, + sortWith, + span, + splitAt, + tail, + take, + takeEnd, + takeWhile, + toUnfoldable, + transpose, + traverse_, + uncons, + union, + unionBy, + unsafeIndex, + unsnoc, + unzip, + updateAt, + updateAtIndices, + zip, + zipWithA +}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Data.ArrayBuffer.Types/index.js b/.storybook/purescript-indexer/output-es/Data.ArrayBuffer.Types/index.js new file mode 100644 index 0000000..2d3a7c9 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.ArrayBuffer.Types/index.js @@ -0,0 +1,2 @@ +import * as $runtime from "../runtime.js"; +export {}; diff --git a/.storybook/purescript-indexer/output-es/Data.Bifoldable/index.js b/.storybook/purescript-indexer/output-es/Data.Bifoldable/index.js new file mode 100644 index 0000000..42b401c --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Bifoldable/index.js @@ -0,0 +1,158 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dApply from "../Control.Apply/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +const identity = x => x; +const monoidEndo = /* #__PURE__ */ (() => { + const semigroupEndo1 = {append: v => v1 => x => v(v1(x))}; + return {mempty: x => x, Semigroup0: () => semigroupEndo1}; +})(); +const monoidDual = /* #__PURE__ */ (() => { + const $0 = monoidEndo.Semigroup0(); + const semigroupDual1 = {append: v => v1 => $0.append(v1)(v)}; + return {mempty: monoidEndo.mempty, Semigroup0: () => semigroupDual1}; +})(); +const bifoldr = dict => dict.bifoldr; +const bitraverse_ = dictBifoldable => dictApplicative => { + const $2 = dictApplicative.Apply0(); + const map = $2.Functor0().map; + return f => g => dictBifoldable.bifoldr(x => { + const $7 = f(x); + return b => $2.apply(map(v => Control$dApply.identity)($7))(b); + })(x => { + const $7 = g(x); + return b => $2.apply(map(v => Control$dApply.identity)($7))(b); + })(dictApplicative.pure(Data$dUnit.unit)); +}; +const bifor_ = dictBifoldable => dictApplicative => { + const bitraverse_2 = bitraverse_(dictBifoldable)(dictApplicative); + return t => f => g => bitraverse_2(f)(g)(t); +}; +const bisequence_ = dictBifoldable => dictApplicative => bitraverse_(dictBifoldable)(dictApplicative)(identity)(identity); +const bifoldl = dict => dict.bifoldl; +const bifoldableTuple = { + bifoldMap: dictMonoid => { + const append = dictMonoid.Semigroup0().append; + return f => g => v => append(f(v._1))(g(v._2)); + }, + bifoldr: f => g => z => v => f(v._1)(g(v._2)(z)), + bifoldl: f => g => z => v => g(f(z)(v._1))(v._2) +}; +const bifoldableJoker = dictFoldable => ( + { + bifoldr: v => r => u => v1 => dictFoldable.foldr(r)(u)(v1), + bifoldl: v => r => u => v1 => dictFoldable.foldl(r)(u)(v1), + bifoldMap: dictMonoid => { + const foldMap1 = dictFoldable.foldMap(dictMonoid); + return v => r => v1 => foldMap1(r)(v1); + } + } +); +const bifoldableEither = { + bifoldr: v => v1 => v2 => v3 => { + if (v3.tag === "Left") { return v(v3._1)(v2); } + if (v3.tag === "Right") { return v1(v3._1)(v2); } + $runtime.fail(); + }, + bifoldl: v => v1 => v2 => v3 => { + if (v3.tag === "Left") { return v(v2)(v3._1); } + if (v3.tag === "Right") { return v1(v2)(v3._1); } + $runtime.fail(); + }, + bifoldMap: dictMonoid => v => v1 => v2 => { + if (v2.tag === "Left") { return v(v2._1); } + if (v2.tag === "Right") { return v1(v2._1); } + $runtime.fail(); + } +}; +const bifoldableConst = {bifoldr: f => v => z => v1 => f(v1)(z), bifoldl: f => v => z => v1 => f(z)(v1), bifoldMap: dictMonoid => f => v => v1 => f(v1)}; +const bifoldableClown = dictFoldable => ( + { + bifoldr: l => v => u => v1 => dictFoldable.foldr(l)(u)(v1), + bifoldl: l => v => u => v1 => dictFoldable.foldl(l)(u)(v1), + bifoldMap: dictMonoid => { + const foldMap1 = dictFoldable.foldMap(dictMonoid); + return l => v => v1 => foldMap1(l)(v1); + } + } +); +const bifoldMapDefaultR = dictBifoldable => dictMonoid => { + const append = dictMonoid.Semigroup0().append; + return f => g => dictBifoldable.bifoldr(x => append(f(x)))(x => append(g(x)))(dictMonoid.mempty); +}; +const bifoldMapDefaultL = dictBifoldable => dictMonoid => { + const append = dictMonoid.Semigroup0().append; + return f => g => dictBifoldable.bifoldl(m => a => append(m)(f(a)))(m => b => append(m)(g(b)))(dictMonoid.mempty); +}; +const bifoldMap = dict => dict.bifoldMap; +const bifoldableFlip = dictBifoldable => ( + { + bifoldr: r => l => u => v => dictBifoldable.bifoldr(l)(r)(u)(v), + bifoldl: r => l => u => v => dictBifoldable.bifoldl(l)(r)(u)(v), + bifoldMap: dictMonoid => { + const bifoldMap2 = dictBifoldable.bifoldMap(dictMonoid); + return r => l => v => bifoldMap2(l)(r)(v); + } + } +); +const bifoldlDefault = dictBifoldable => { + const bifoldMap1 = dictBifoldable.bifoldMap(monoidDual); + return f => g => z => p => bifoldMap1(x => a => f(a)(x))(x => a => g(a)(x))(p)(z); +}; +const bifoldrDefault = dictBifoldable => { + const bifoldMap1 = dictBifoldable.bifoldMap(monoidEndo); + return f => g => z => p => bifoldMap1(x => f(x))(x => g(x))(p)(z); +}; +const bifoldableProduct2 = dictBifoldable => dictBifoldable1 => ( + { + bifoldr: l => r => u => m => bifoldrDefault(bifoldableProduct2(dictBifoldable)(dictBifoldable1))(l)(r)(u)(m), + bifoldl: l => r => u => m => bifoldlDefault(bifoldableProduct2(dictBifoldable)(dictBifoldable1))(l)(r)(u)(m), + bifoldMap: dictMonoid => { + const append = dictMonoid.Semigroup0().append; + const bifoldMap3 = dictBifoldable.bifoldMap(dictMonoid); + const bifoldMap4 = dictBifoldable1.bifoldMap(dictMonoid); + return l => r => v => append(bifoldMap3(l)(r)(v._1))(bifoldMap4(l)(r)(v._2)); + } + } +); +const bifold = dictBifoldable => dictMonoid => dictBifoldable.bifoldMap(dictMonoid)(identity)(identity); +const biany = dictBifoldable => dictBooleanAlgebra => { + const bifoldMap2 = dictBifoldable.bifoldMap((() => { + const $2 = dictBooleanAlgebra.HeytingAlgebra0(); + const semigroupDisj1 = {append: v => v1 => $2.disj(v)(v1)}; + return {mempty: $2.ff, Semigroup0: () => semigroupDisj1}; + })()); + return p => q => bifoldMap2(x => p(x))(x => q(x)); +}; +const biall = dictBifoldable => dictBooleanAlgebra => { + const bifoldMap2 = dictBifoldable.bifoldMap((() => { + const $2 = dictBooleanAlgebra.HeytingAlgebra0(); + const semigroupConj1 = {append: v => v1 => $2.conj(v)(v1)}; + return {mempty: $2.tt, Semigroup0: () => semigroupConj1}; + })()); + return p => q => bifoldMap2(x => p(x))(x => q(x)); +}; +export { + biall, + biany, + bifold, + bifoldMap, + bifoldMapDefaultL, + bifoldMapDefaultR, + bifoldableClown, + bifoldableConst, + bifoldableEither, + bifoldableFlip, + bifoldableJoker, + bifoldableProduct2, + bifoldableTuple, + bifoldl, + bifoldlDefault, + bifoldr, + bifoldrDefault, + bifor_, + bisequence_, + bitraverse_, + identity, + monoidDual, + monoidEndo +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Bifunctor.Join/index.js b/.storybook/purescript-indexer/output-es/Data.Bifunctor.Join/index.js new file mode 100644 index 0000000..6cb8e3d --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Bifunctor.Join/index.js @@ -0,0 +1,20 @@ +import * as $runtime from "../runtime.js"; +const Join = x => x; +const showJoin = dictShow => ({show: v => "(Join " + (dictShow.show(v) + ")")}); +const ordJoin = dictOrd => dictOrd; +const newtypeJoin = {Coercible0: () => undefined}; +const eqJoin = dictEq => dictEq; +const bifunctorJoin = dictBifunctor => ({map: f => v => dictBifunctor.bimap(f)(f)(v)}); +const biapplyJoin = dictBiapply => { + const $1 = dictBiapply.Bifunctor0(); + const bifunctorJoin1 = {map: f => v => $1.bimap(f)(f)(v)}; + return {apply: v => v1 => dictBiapply.biapply(v)(v1), Functor0: () => bifunctorJoin1}; +}; +const biapplicativeJoin = dictBiapplicative => { + const $1 = dictBiapplicative.Biapply0(); + const $2 = $1.Bifunctor0(); + const bifunctorJoin1 = {map: f => v => $2.bimap(f)(f)(v)}; + const biapplyJoin1 = {apply: v => v1 => $1.biapply(v)(v1), Functor0: () => bifunctorJoin1}; + return {pure: a => dictBiapplicative.bipure(a)(a), Apply0: () => biapplyJoin1}; +}; +export {Join, biapplicativeJoin, biapplyJoin, bifunctorJoin, eqJoin, newtypeJoin, ordJoin, showJoin}; diff --git a/.storybook/purescript-indexer/output-es/Data.Bifunctor/index.js b/.storybook/purescript-indexer/output-es/Data.Bifunctor/index.js new file mode 100644 index 0000000..c4f8b81 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Bifunctor/index.js @@ -0,0 +1,17 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dEither from "../Data.Either/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +const identity = x => x; +const bimap = dict => dict.bimap; +const lmap = dictBifunctor => f => dictBifunctor.bimap(f)(identity); +const rmap = dictBifunctor => dictBifunctor.bimap(identity); +const bifunctorTuple = {bimap: f => g => v => Data$dTuple.$Tuple(f(v._1), g(v._2))}; +const bifunctorEither = { + bimap: v => v1 => v2 => { + if (v2.tag === "Left") { return Data$dEither.$Either("Left", v(v2._1)); } + if (v2.tag === "Right") { return Data$dEither.$Either("Right", v1(v2._1)); } + $runtime.fail(); + } +}; +const bifunctorConst = {bimap: f => v => v1 => f(v1)}; +export {bifunctorConst, bifunctorEither, bifunctorTuple, bimap, identity, lmap, rmap}; diff --git a/.storybook/purescript-indexer/output-es/Data.Bitraversable/index.js b/.storybook/purescript-indexer/output-es/Data.Bitraversable/index.js new file mode 100644 index 0000000..dbedc34 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Bitraversable/index.js @@ -0,0 +1,210 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dBifoldable from "../Data.Bifoldable/index.js"; +import * as Data$dBifunctor from "../Data.Bifunctor/index.js"; +import * as Data$dConst from "../Data.Const/index.js"; +import * as Data$dEither from "../Data.Either/index.js"; +import * as Data$dFunctor$dClown from "../Data.Functor.Clown/index.js"; +import * as Data$dFunctor$dFlip from "../Data.Functor.Flip/index.js"; +import * as Data$dFunctor$dJoker from "../Data.Functor.Joker/index.js"; +import * as Data$dFunctor$dProduct2 from "../Data.Functor.Product2/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +const identity = x => x; +const bitraverse = dict => dict.bitraverse; +const lfor = dictBitraversable => dictApplicative => { + const bitraverse2 = dictBitraversable.bitraverse(dictApplicative); + return t => f => bitraverse2(f)(dictApplicative.pure)(t); +}; +const ltraverse = dictBitraversable => dictApplicative => { + const bitraverse2 = dictBitraversable.bitraverse(dictApplicative); + return f => bitraverse2(f)(dictApplicative.pure); +}; +const rfor = dictBitraversable => dictApplicative => { + const bitraverse2 = dictBitraversable.bitraverse(dictApplicative); + return t => f => bitraverse2(dictApplicative.pure)(f)(t); +}; +const rtraverse = dictBitraversable => dictApplicative => dictBitraversable.bitraverse(dictApplicative)(dictApplicative.pure); +const bitraversableTuple = { + bitraverse: dictApplicative => { + const Apply0 = dictApplicative.Apply0(); + const map = Apply0.Functor0().map; + return f => g => v => Apply0.apply(map(Data$dTuple.Tuple)(f(v._1)))(g(v._2)); + }, + bisequence: dictApplicative => { + const Apply0 = dictApplicative.Apply0(); + const map = Apply0.Functor0().map; + return v => Apply0.apply(map(Data$dTuple.Tuple)(v._1))(v._2); + }, + Bifunctor0: () => Data$dBifunctor.bifunctorTuple, + Bifoldable1: () => Data$dBifoldable.bifoldableTuple +}; +const bitraversableJoker = dictTraversable => { + const $1 = dictTraversable.Functor0(); + const bifunctorJoker = {bimap: v => g => v1 => $1.map(g)(v1)}; + const $3 = dictTraversable.Foldable1(); + const bifoldableJoker = { + bifoldr: v => r => u => v1 => $3.foldr(r)(u)(v1), + bifoldl: v => r => u => v1 => $3.foldl(r)(u)(v1), + bifoldMap: dictMonoid => { + const foldMap1 = $3.foldMap(dictMonoid); + return v => r => v1 => foldMap1(r)(v1); + } + }; + return { + bitraverse: dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + const traverse1 = dictTraversable.traverse(dictApplicative); + return v => r => v1 => map(Data$dFunctor$dJoker.Joker)(traverse1(r)(v1)); + }, + bisequence: dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + const sequence1 = dictTraversable.sequence(dictApplicative); + return v => map(Data$dFunctor$dJoker.Joker)(sequence1(v)); + }, + Bifunctor0: () => bifunctorJoker, + Bifoldable1: () => bifoldableJoker + }; +}; +const bitraversableEither = { + bitraverse: dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + return v => v1 => v2 => { + if (v2.tag === "Left") { return map(Data$dEither.Left)(v(v2._1)); } + if (v2.tag === "Right") { return map(Data$dEither.Right)(v1(v2._1)); } + $runtime.fail(); + }; + }, + bisequence: dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + return v => { + if (v.tag === "Left") { return map(Data$dEither.Left)(v._1); } + if (v.tag === "Right") { return map(Data$dEither.Right)(v._1); } + $runtime.fail(); + }; + }, + Bifunctor0: () => Data$dBifunctor.bifunctorEither, + Bifoldable1: () => Data$dBifoldable.bifoldableEither +}; +const bitraversableConst = { + bitraverse: dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + return f => v => v1 => map(Data$dConst.Const)(f(v1)); + }, + bisequence: dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + return v => map(Data$dConst.Const)(v); + }, + Bifunctor0: () => Data$dBifunctor.bifunctorConst, + Bifoldable1: () => Data$dBifoldable.bifoldableConst +}; +const bitraversableClown = dictTraversable => { + const $1 = dictTraversable.Functor0(); + const bifunctorClown = {bimap: f => v => v1 => $1.map(f)(v1)}; + const $3 = dictTraversable.Foldable1(); + const bifoldableClown = { + bifoldr: l => v => u => v1 => $3.foldr(l)(u)(v1), + bifoldl: l => v => u => v1 => $3.foldl(l)(u)(v1), + bifoldMap: dictMonoid => { + const foldMap1 = $3.foldMap(dictMonoid); + return l => v => v1 => foldMap1(l)(v1); + } + }; + return { + bitraverse: dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + const traverse1 = dictTraversable.traverse(dictApplicative); + return l => v => v1 => map(Data$dFunctor$dClown.Clown)(traverse1(l)(v1)); + }, + bisequence: dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + const sequence1 = dictTraversable.sequence(dictApplicative); + return v => map(Data$dFunctor$dClown.Clown)(sequence1(v)); + }, + Bifunctor0: () => bifunctorClown, + Bifoldable1: () => bifoldableClown + }; +}; +const bisequenceDefault = dictBitraversable => dictApplicative => dictBitraversable.bitraverse(dictApplicative)(identity)(identity); +const bisequence = dict => dict.bisequence; +const bitraversableFlip = dictBitraversable => { + const $1 = dictBitraversable.Bifunctor0(); + const bifunctorFlip = {bimap: f => g => v => $1.bimap(g)(f)(v)}; + const $3 = dictBitraversable.Bifoldable1(); + const bifoldableFlip = { + bifoldr: r => l => u => v => $3.bifoldr(l)(r)(u)(v), + bifoldl: r => l => u => v => $3.bifoldl(l)(r)(u)(v), + bifoldMap: dictMonoid => { + const bifoldMap2 = $3.bifoldMap(dictMonoid); + return r => l => v => bifoldMap2(l)(r)(v); + } + }; + return { + bitraverse: dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + const bitraverse2 = dictBitraversable.bitraverse(dictApplicative); + return r => l => v => map(Data$dFunctor$dFlip.Flip)(bitraverse2(l)(r)(v)); + }, + bisequence: dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + const bisequence2 = dictBitraversable.bisequence(dictApplicative); + return v => map(Data$dFunctor$dFlip.Flip)(bisequence2(v)); + }, + Bifunctor0: () => bifunctorFlip, + Bifoldable1: () => bifoldableFlip + }; +}; +const bitraversableProduct2 = dictBitraversable => { + const bifunctorProduct2 = Data$dFunctor$dProduct2.bifunctorProduct2(dictBitraversable.Bifunctor0()); + const bifoldableProduct2 = Data$dBifoldable.bifoldableProduct2(dictBitraversable.Bifoldable1()); + return dictBitraversable1 => { + const bifunctorProduct21 = bifunctorProduct2(dictBitraversable1.Bifunctor0()); + const bifoldableProduct21 = bifoldableProduct2(dictBitraversable1.Bifoldable1()); + return { + bitraverse: dictApplicative => { + const Apply0 = dictApplicative.Apply0(); + const map = Apply0.Functor0().map; + const bitraverse3 = dictBitraversable.bitraverse(dictApplicative); + const bitraverse4 = dictBitraversable1.bitraverse(dictApplicative); + return l => r => v => Apply0.apply(map(Data$dFunctor$dProduct2.Product2)(bitraverse3(l)(r)(v._1)))(bitraverse4(l)(r)(v._2)); + }, + bisequence: dictApplicative => { + const Apply0 = dictApplicative.Apply0(); + const map = Apply0.Functor0().map; + const bisequence3 = dictBitraversable.bisequence(dictApplicative); + const bisequence4 = dictBitraversable1.bisequence(dictApplicative); + return v => Apply0.apply(map(Data$dFunctor$dProduct2.Product2)(bisequence3(v._1)))(bisequence4(v._2)); + }, + Bifunctor0: () => bifunctorProduct21, + Bifoldable1: () => bifoldableProduct21 + }; + }; +}; +const bitraverseDefault = dictBitraversable => { + const bimap = dictBitraversable.Bifunctor0().bimap; + return dictApplicative => { + const bisequence2 = dictBitraversable.bisequence(dictApplicative); + return f => g => t => bisequence2(bimap(f)(g)(t)); + }; +}; +const bifor = dictBitraversable => dictApplicative => { + const bitraverse2 = dictBitraversable.bitraverse(dictApplicative); + return t => f => g => bitraverse2(f)(g)(t); +}; +export { + bifor, + bisequence, + bisequenceDefault, + bitraversableClown, + bitraversableConst, + bitraversableEither, + bitraversableFlip, + bitraversableJoker, + bitraversableProduct2, + bitraversableTuple, + bitraverse, + bitraverseDefault, + identity, + lfor, + ltraverse, + rfor, + rtraverse +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Boolean/index.js b/.storybook/purescript-indexer/output-es/Data.Boolean/index.js new file mode 100644 index 0000000..625b9f1 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Boolean/index.js @@ -0,0 +1,3 @@ +import * as $runtime from "../runtime.js"; +const otherwise = true; +export {otherwise}; diff --git a/.storybook/purescript-indexer/output-es/Data.BooleanAlgebra/index.js b/.storybook/purescript-indexer/output-es/Data.BooleanAlgebra/index.js new file mode 100644 index 0000000..3914a1f --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.BooleanAlgebra/index.js @@ -0,0 +1,39 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dHeytingAlgebra from "../Data.HeytingAlgebra/index.js"; +import * as Type$dProxy from "../Type.Proxy/index.js"; +const booleanAlgebraUnit = {HeytingAlgebra0: () => Data$dHeytingAlgebra.heytingAlgebraUnit}; +const booleanAlgebraRecordNil = {HeytingAlgebraRecord0: () => Data$dHeytingAlgebra.heytingAlgebraRecordNil}; +const booleanAlgebraRecordCons = dictIsSymbol => () => dictBooleanAlgebraRecord => { + const heytingAlgebraRecordCons1 = Data$dHeytingAlgebra.heytingAlgebraRecordCons(dictIsSymbol)()(dictBooleanAlgebraRecord.HeytingAlgebraRecord0()); + return dictBooleanAlgebra => { + const heytingAlgebraRecordCons2 = heytingAlgebraRecordCons1(dictBooleanAlgebra.HeytingAlgebra0()); + return {HeytingAlgebraRecord0: () => heytingAlgebraRecordCons2}; + }; +}; +const booleanAlgebraRecord = () => dictBooleanAlgebraRecord => { + const $2 = dictBooleanAlgebraRecord.HeytingAlgebraRecord0(); + const heytingAlgebraRecord1 = { + ff: $2.ffRecord(Type$dProxy.Proxy)(Type$dProxy.Proxy), + tt: $2.ttRecord(Type$dProxy.Proxy)(Type$dProxy.Proxy), + conj: $2.conjRecord(Type$dProxy.Proxy), + disj: $2.disjRecord(Type$dProxy.Proxy), + implies: $2.impliesRecord(Type$dProxy.Proxy), + not: $2.notRecord(Type$dProxy.Proxy) + }; + return {HeytingAlgebra0: () => heytingAlgebraRecord1}; +}; +const booleanAlgebraProxy = {HeytingAlgebra0: () => Data$dHeytingAlgebra.heytingAlgebraProxy}; +const booleanAlgebraFn = dictBooleanAlgebra => { + const $1 = dictBooleanAlgebra.HeytingAlgebra0(); + const heytingAlgebraFunction = { + ff: v => $1.ff, + tt: v => $1.tt, + implies: f => g => a => $1.implies(f(a))(g(a)), + conj: f => g => a => $1.conj(f(a))(g(a)), + disj: f => g => a => $1.disj(f(a))(g(a)), + not: f => a => $1.not(f(a)) + }; + return {HeytingAlgebra0: () => heytingAlgebraFunction}; +}; +const booleanAlgebraBoolean = {HeytingAlgebra0: () => Data$dHeytingAlgebra.heytingAlgebraBoolean}; +export {booleanAlgebraBoolean, booleanAlgebraFn, booleanAlgebraProxy, booleanAlgebraRecord, booleanAlgebraRecordCons, booleanAlgebraRecordNil, booleanAlgebraUnit}; diff --git a/.storybook/purescript-indexer/output-es/Data.Bounded.Generic/index.js b/.storybook/purescript-indexer/output-es/Data.Bounded.Generic/index.js new file mode 100644 index 0000000..bb3ca1c --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Bounded.Generic/index.js @@ -0,0 +1,34 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dGeneric$dRep from "../Data.Generic.Rep/index.js"; +const genericTopNoArguments = {"genericTop'": Data$dGeneric$dRep.NoArguments}; +const genericTopArgument = dictBounded => ({"genericTop'": dictBounded.top}); +const genericTop$p = dict => dict["genericTop'"]; +const genericTopConstructor = dictGenericTop => ({"genericTop'": dictGenericTop["genericTop'"]}); +const genericTopProduct = dictGenericTop => dictGenericTop1 => ({"genericTop'": Data$dGeneric$dRep.$Product(dictGenericTop["genericTop'"], dictGenericTop1["genericTop'"])}); +const genericTopSum = dictGenericTop => ({"genericTop'": Data$dGeneric$dRep.$Sum("Inr", dictGenericTop["genericTop'"])}); +const genericTop = dictGeneric => dictGenericTop => dictGeneric.to(dictGenericTop["genericTop'"]); +const genericBottomNoArguments = {"genericBottom'": Data$dGeneric$dRep.NoArguments}; +const genericBottomArgument = dictBounded => ({"genericBottom'": dictBounded.bottom}); +const genericBottom$p = dict => dict["genericBottom'"]; +const genericBottomConstructor = dictGenericBottom => ({"genericBottom'": dictGenericBottom["genericBottom'"]}); +const genericBottomProduct = dictGenericBottom => dictGenericBottom1 => ( + {"genericBottom'": Data$dGeneric$dRep.$Product(dictGenericBottom["genericBottom'"], dictGenericBottom1["genericBottom'"])} +); +const genericBottomSum = dictGenericBottom => ({"genericBottom'": Data$dGeneric$dRep.$Sum("Inl", dictGenericBottom["genericBottom'"])}); +const genericBottom = dictGeneric => dictGenericBottom => dictGeneric.to(dictGenericBottom["genericBottom'"]); +export { + genericBottom, + genericBottom$p, + genericBottomArgument, + genericBottomConstructor, + genericBottomNoArguments, + genericBottomProduct, + genericBottomSum, + genericTop, + genericTop$p, + genericTopArgument, + genericTopConstructor, + genericTopNoArguments, + genericTopProduct, + genericTopSum +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Bounded/foreign.js b/.storybook/purescript-indexer/output-es/Data.Bounded/foreign.js new file mode 100644 index 0000000..094350b --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Bounded/foreign.js @@ -0,0 +1,8 @@ +export const topInt = 2147483647; +export const bottomInt = -2147483648; + +export const topChar = String.fromCharCode(65535); +export const bottomChar = String.fromCharCode(0); + +export const topNumber = Number.POSITIVE_INFINITY; +export const bottomNumber = Number.NEGATIVE_INFINITY; diff --git a/.storybook/purescript-indexer/output-es/Data.Bounded/index.js b/.storybook/purescript-indexer/output-es/Data.Bounded/index.js new file mode 100644 index 0000000..9be272f --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Bounded/index.js @@ -0,0 +1,72 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dOrd from "../Data.Ord/index.js"; +import * as Data$dOrdering from "../Data.Ordering/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +import * as Record$dUnsafe from "../Record.Unsafe/index.js"; +import * as Type$dProxy from "../Type.Proxy/index.js"; +import {bottomChar, bottomInt, bottomNumber, topChar, topInt, topNumber} from "./foreign.js"; +const topRecord = dict => dict.topRecord; +const top = dict => dict.top; +const boundedUnit = {top: Data$dUnit.unit, bottom: Data$dUnit.unit, Ord0: () => Data$dOrd.ordUnit}; +const boundedRecordNil = {topRecord: v => v1 => ({}), bottomRecord: v => v1 => ({}), OrdRecord0: () => Data$dOrd.ordRecordNil}; +const boundedProxy = {bottom: Type$dProxy.Proxy, top: Type$dProxy.Proxy, Ord0: () => Data$dOrd.ordProxy}; +const boundedOrdering = {top: Data$dOrdering.GT, bottom: Data$dOrdering.LT, Ord0: () => Data$dOrd.ordOrdering}; +const boundedNumber = {top: topNumber, bottom: bottomNumber, Ord0: () => Data$dOrd.ordNumber}; +const boundedInt = {top: 2147483647, bottom: -2147483648, Ord0: () => Data$dOrd.ordInt}; +const boundedChar = {top: "￿", bottom: "\u0000", Ord0: () => Data$dOrd.ordChar}; +const boundedBoolean = {top: true, bottom: false, Ord0: () => Data$dOrd.ordBoolean}; +const bottomRecord = dict => dict.bottomRecord; +const boundedRecord = () => dictBoundedRecord => { + const ordRecord1 = Data$dOrd.ordRecord()(dictBoundedRecord.OrdRecord0()); + return { + top: dictBoundedRecord.topRecord(Type$dProxy.Proxy)(Type$dProxy.Proxy), + bottom: dictBoundedRecord.bottomRecord(Type$dProxy.Proxy)(Type$dProxy.Proxy), + Ord0: () => ordRecord1 + }; +}; +const bottom = dict => dict.bottom; +const boundedRecordCons = dictIsSymbol => dictBounded => { + const Ord0 = dictBounded.Ord0(); + return () => () => dictBoundedRecord => { + const $6 = dictBoundedRecord.OrdRecord0(); + const $7 = $6.EqRecord0(); + const $8 = Ord0.Eq0(); + const eqRowCons2 = { + eqRecord: v => ra => rb => { + const $$get = Record$dUnsafe.unsafeGet(dictIsSymbol.reflectSymbol(Type$dProxy.Proxy)); + return $8.eq($$get(ra))($$get(rb)) && $7.eqRecord(Type$dProxy.Proxy)(ra)(rb); + } + }; + const ordRecordCons = { + compareRecord: v => ra => rb => { + const key = dictIsSymbol.reflectSymbol(Type$dProxy.Proxy); + const left = Ord0.compare(Record$dUnsafe.unsafeGet(key)(ra))(Record$dUnsafe.unsafeGet(key)(rb)); + if (left.tag === "LT" || (left.tag === "GT" || !(left.tag === "EQ"))) { return left; } + return $6.compareRecord(Type$dProxy.Proxy)(ra)(rb); + }, + EqRecord0: () => eqRowCons2 + }; + return { + topRecord: v => rowProxy => Record$dUnsafe.unsafeSet(dictIsSymbol.reflectSymbol(Type$dProxy.Proxy))(dictBounded.top)(dictBoundedRecord.topRecord(Type$dProxy.Proxy)(rowProxy)), + bottomRecord: v => rowProxy => Record$dUnsafe.unsafeSet(dictIsSymbol.reflectSymbol(Type$dProxy.Proxy))(dictBounded.bottom)(dictBoundedRecord.bottomRecord(Type$dProxy.Proxy)(rowProxy)), + OrdRecord0: () => ordRecordCons + }; + }; +}; +export { + bottom, + bottomRecord, + boundedBoolean, + boundedChar, + boundedInt, + boundedNumber, + boundedOrdering, + boundedProxy, + boundedRecord, + boundedRecordCons, + boundedRecordNil, + boundedUnit, + top, + topRecord +}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Data.CatList/index.js b/.storybook/purescript-indexer/output-es/Data.CatList/index.js new file mode 100644 index 0000000..af277dd --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.CatList/index.js @@ -0,0 +1,322 @@ +// | This module defines a strict catenable list. +// | +// | The implementation is based on a queue where all operations require +// | `O(1)` amortized time. +// | +// | However, any single `uncons` operation may run in `O(n)` time. +// | +// | See [Purely Functional Data Structures](http://www.cs.cmu.edu/~rwh/theses/okasaki.pdf) (Okasaki 1996) +import * as $runtime from "../runtime.js"; +import * as Data$dCatQueue from "../Data.CatQueue/index.js"; +import * as Data$dFoldable from "../Data.Foldable/index.js"; +import * as Data$dList$dTypes from "../Data.List.Types/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +const $CatList = (tag, _1, _2) => ({tag, _1, _2}); +const CatNil = /* #__PURE__ */ $CatList("CatNil"); +const CatCons = value0 => value1 => $CatList("CatCons", value0, value1); +const showCatList = dictShow => ( + { + show: v => { + if (v.tag === "CatNil") { return "CatNil"; } + if (v.tag === "CatCons") { return "(CatList " + (dictShow.show(v._1) + (" " + (Data$dCatQueue.showCatQueue(showCatList(dictShow)).show(v._2) + ")"))); } + $runtime.fail(); + } + } +); +const $$null = v => v.tag === "CatNil"; +const link = v => v1 => { + if (v.tag === "CatNil") { return v1; } + if (v1.tag === "CatNil") { return v; } + if (v.tag === "CatCons") { return $CatList("CatCons", v._1, Data$dCatQueue.$CatQueue(v._2._1, Data$dList$dTypes.$List("Cons", v1, v._2._2))); } + $runtime.fail(); +}; +const foldr = k => b => q => { + const foldl = foldl$a0$copy => foldl$a1$copy => foldl$a2$copy => { + let foldl$a0 = foldl$a0$copy, foldl$a1 = foldl$a1$copy, foldl$a2 = foldl$a2$copy, foldl$c = true, foldl$r; + while (foldl$c) { + const v = foldl$a0, v1 = foldl$a1, v2 = foldl$a2; + if (v2.tag === "Nil") { + foldl$c = false; + foldl$r = v1; + continue; + } + if (v2.tag === "Cons") { + foldl$a0 = v; + foldl$a1 = v(v1)(v2._1); + foldl$a2 = v2._2; + continue; + } + $runtime.fail(); + }; + return foldl$r; + }; + 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 xs = go$a0, ys = go$a1; + const v = Data$dCatQueue.uncons(xs); + if (v.tag === "Nothing") { + go$c = false; + go$r = foldl(x => i => i(x))(b)(ys); + continue; + } + if (v.tag === "Just") { + go$a0 = v._1._2; + go$a1 = Data$dList$dTypes.$List("Cons", k(v._1._1), ys); + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go(q)(Data$dList$dTypes.Nil); +}; +const uncons = v => { + if (v.tag === "CatNil") { return Data$dMaybe.Nothing; } + if (v.tag === "CatCons") { + return Data$dMaybe.$Maybe( + "Just", + Data$dTuple.$Tuple( + v._1, + (() => { + if ( + (() => { + if (v._2._1.tag === "Nil") { return v._2._2.tag === "Nil"; } + return false; + })() + ) { + return CatNil; + } + return foldr(link)(CatNil)(v._2); + })() + ) + ); + } + $runtime.fail(); +}; +const foldableCatList = { + foldMap: dictMonoid => { + const append$1 = dictMonoid.Semigroup0().append; + return f => foldableCatList.foldl(acc => x => append$1(acc)(f(x)))(dictMonoid.mempty); + }, + foldr: f => s => l => Data$dFoldable.foldrDefault(foldableCatList)(f)(s)(l), + 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 acc = go$a0, q = go$a1; + const v = uncons(q); + if (v.tag === "Just") { + go$a0 = f(acc)(v._1._1); + go$a1 = v._1._2; + continue; + } + if (v.tag === "Nothing") { + go$c = false; + go$r = acc; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go; + } +}; +const length = /* #__PURE__ */ (() => foldableCatList.foldl(c => v => 1 + c | 0)(0))(); +const foldMap = dictMonoid => { + const append2 = dictMonoid.Semigroup0().append; + return v => v1 => { + if (v1.tag === "CatNil") { return dictMonoid.mempty; } + if (v1.tag === "CatCons") { + return append2(v(v1._1))(foldMap(dictMonoid)(v)((() => { + if ( + (() => { + if (v1._2._1.tag === "Nil") { return v1._2._2.tag === "Nil"; } + return false; + })() + ) { + return CatNil; + } + return foldr(link)(CatNil)(v1._2); + })())); + } + $runtime.fail(); + }; +}; +const empty = CatNil; +const append = link; +const cons = a => cat => link($CatList("CatCons", a, Data$dCatQueue.$CatQueue(Data$dList$dTypes.Nil, Data$dList$dTypes.Nil)))(cat); +const functorCatList = { + map: v => v1 => { + if (v1.tag === "CatNil") { return CatNil; } + if (v1.tag === "CatCons") { + return link($CatList("CatCons", v(v1._1), Data$dCatQueue.$CatQueue(Data$dList$dTypes.Nil, Data$dList$dTypes.Nil)))(functorCatList.map(v)((() => { + if ( + (() => { + if (v1._2._1.tag === "Nil") { return v1._2._2.tag === "Nil"; } + return false; + })() + ) { + return CatNil; + } + return foldr(link)(CatNil)(v1._2); + })())); + } + $runtime.fail(); + } +}; +const singleton = a => link($CatList("CatCons", a, Data$dCatQueue.$CatQueue(Data$dList$dTypes.Nil, Data$dList$dTypes.Nil)))(CatNil); +const traversableCatList = { + traverse: dictApplicative => { + const Apply0 = dictApplicative.Apply0(); + const map = Apply0.Functor0().map; + return v => v1 => { + if (v1.tag === "CatNil") { return dictApplicative.pure(CatNil); } + if (v1.tag === "CatCons") { + return Apply0.apply(map(cons)(v(v1._1)))(traversableCatList.traverse(dictApplicative)(v)((() => { + if ( + (() => { + if (v1._2._1.tag === "Nil") { return v1._2._2.tag === "Nil"; } + return false; + })() + ) { + return CatNil; + } + return foldr(link)(CatNil)(v1._2); + })())); + } + $runtime.fail(); + }; + }, + sequence: dictApplicative => { + const Apply0 = dictApplicative.Apply0(); + const map = Apply0.Functor0().map; + return v => { + if (v.tag === "CatNil") { return dictApplicative.pure(CatNil); } + if (v.tag === "CatCons") { + return Apply0.apply(map(cons)(v._1))(traversableCatList.sequence(dictApplicative)((() => { + if ( + (() => { + if (v._2._1.tag === "Nil") { return v._2._2.tag === "Nil"; } + return false; + })() + ) { + return CatNil; + } + return foldr(link)(CatNil)(v._2); + })())); + } + $runtime.fail(); + }; + }, + Functor0: () => functorCatList, + Foldable1: () => foldableCatList +}; +const semigroupCatList = {append: link}; +const monoidCatList = {mempty: CatNil, Semigroup0: () => semigroupCatList}; +const monadCatList = {Applicative0: () => applicativeCatList, Bind1: () => bindCatList$lazy()}; +const applyCatList = {apply: f => a => bindCatList$lazy().bind(f)(f$p => bindCatList$lazy().bind(a)(a$p => applicativeCatList.pure(f$p(a$p)))), Functor0: () => functorCatList}; +const applicativeCatList = {pure: singleton, Apply0: () => applyCatList}; +const bindCatList$lazy = /* #__PURE__ */ $runtime.binding(() => ( + { + bind: (() => { + const $0 = foldMap(monoidCatList); + return b => a => $0(a)(b); + })(), + Apply0: () => applyCatList + } +)); +const bindCatList = /* #__PURE__ */ bindCatList$lazy(); +const fromFoldable = dictFoldable => { + const foldMap1 = dictFoldable.foldMap(monoidCatList); + return f => foldMap1(singleton)(f); +}; +const snoc = cat => a => link(cat)($CatList("CatCons", a, Data$dCatQueue.$CatQueue(Data$dList$dTypes.Nil, Data$dList$dTypes.Nil))); +const unfoldable1CatList = { + unfoldr1: f => 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 source = go$a0, memo = go$a1; + const v = f(source); + if (v._2.tag === "Nothing") { + go$c = false; + go$r = link(memo)($CatList("CatCons", v._1, Data$dCatQueue.$CatQueue(Data$dList$dTypes.Nil, Data$dList$dTypes.Nil))); + continue; + } + if (v._2.tag === "Just") { + go$a0 = v._2._1; + go$a1 = link(memo)($CatList("CatCons", v._1, Data$dCatQueue.$CatQueue(Data$dList$dTypes.Nil, Data$dList$dTypes.Nil))); + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go(b)(CatNil); + } +}; +const unfoldableCatList = { + unfoldr: f => 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 source = go$a0, memo = go$a1; + const v = f(source); + if (v.tag === "Nothing") { + go$c = false; + go$r = memo; + continue; + } + if (v.tag === "Just") { + go$a0 = v._1._2; + go$a1 = link(memo)($CatList("CatCons", v._1._1, Data$dCatQueue.$CatQueue(Data$dList$dTypes.Nil, Data$dList$dTypes.Nil))); + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go(b)(CatNil); + }, + Unfoldable10: () => unfoldable1CatList +}; +const altCatList = {alt: link, Functor0: () => functorCatList}; +const plusCatList = {empty: CatNil, Alt0: () => altCatList}; +const alternativeCatList = {Applicative0: () => applicativeCatList, Plus1: () => plusCatList}; +const monadPlusCatList = {Monad0: () => monadCatList, Alternative1: () => alternativeCatList}; +export { + $CatList, + CatCons, + CatNil, + altCatList, + alternativeCatList, + append, + applicativeCatList, + applyCatList, + bindCatList, + cons, + empty, + foldMap, + foldableCatList, + foldr, + fromFoldable, + functorCatList, + length, + link, + monadCatList, + monadPlusCatList, + monoidCatList, + $$null as null, + plusCatList, + semigroupCatList, + showCatList, + singleton, + snoc, + traversableCatList, + uncons, + unfoldable1CatList, + unfoldableCatList +}; diff --git a/.storybook/purescript-indexer/output-es/Data.CatQueue/index.js b/.storybook/purescript-indexer/output-es/Data.CatQueue/index.js new file mode 100644 index 0000000..e187584 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.CatQueue/index.js @@ -0,0 +1,352 @@ +// | This module defines a strict double-ended queue. +// | +// | The queue implementation is based on a pair of lists where all +// | operations require `O(1)` amortized time. +// | +// | However, any single `uncons` operation may run in `O(n)` time. +// | +// | See [Simple and Efficient Purely Functional Queues and Dequeues](http://www.westpoint.edu/eecs/SiteAssets/SitePages/Faculty%20Publication%20Documents/Okasaki/jfp95queue.pdf) (Okasaki 1995) +import * as $runtime from "../runtime.js"; +import * as Data$dFoldable from "../Data.Foldable/index.js"; +import * as Data$dList from "../Data.List/index.js"; +import * as Data$dList$dTypes from "../Data.List.Types/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dOrdering from "../Data.Ordering/index.js"; +import * as Data$dTraversable from "../Data.Traversable/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +const $CatQueue = (_1, _2) => ({tag: "CatQueue", _1, _2}); +const CatQueue = value0 => value1 => $CatQueue(value0, value1); +const unsnoc = unsnoc$a0$copy => { + let unsnoc$a0 = unsnoc$a0$copy, unsnoc$c = true, unsnoc$r; + while (unsnoc$c) { + const v = unsnoc$a0; + if (v._2.tag === "Cons") { + unsnoc$c = false; + unsnoc$r = Data$dMaybe.$Maybe("Just", Data$dTuple.$Tuple(v._2._1, $CatQueue(v._1, v._2._2))); + continue; + } + if (v._2.tag === "Nil") { + if (v._1.tag === "Nil") { + unsnoc$c = false; + unsnoc$r = Data$dMaybe.Nothing; + continue; + } + unsnoc$a0 = $CatQueue(Data$dList$dTypes.Nil, Data$dList.reverse(v._1)); + continue; + } + $runtime.fail(); + }; + return unsnoc$r; +}; +const uncons = uncons$a0$copy => { + let uncons$a0 = uncons$a0$copy, uncons$c = true, uncons$r; + while (uncons$c) { + const v = uncons$a0; + if (v._1.tag === "Nil") { + if (v._2.tag === "Nil") { + uncons$c = false; + uncons$r = Data$dMaybe.Nothing; + continue; + } + uncons$a0 = $CatQueue(Data$dList.reverse(v._2), Data$dList$dTypes.Nil); + continue; + } + if (v._1.tag === "Cons") { + uncons$c = false; + uncons$r = Data$dMaybe.$Maybe("Just", Data$dTuple.$Tuple(v._1._1, $CatQueue(v._1._2, v._2))); + continue; + } + $runtime.fail(); + }; + return uncons$r; +}; +const snoc = v => a => $CatQueue(v._1, Data$dList$dTypes.$List("Cons", a, v._2)); +const showCatQueue = dictShow => { + const show = Data$dList$dTypes.showList(dictShow).show; + return {show: v => "(CatQueue " + (show(v._1) + (" " + (show(v._2) + ")")))}; +}; +const $$null = v => { + if (v._1.tag === "Nil") { return v._2.tag === "Nil"; } + return false; +}; +const length = 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 = go$a0, v$1 = go$a1; + if (v$1.tag === "Nil") { + go$c = false; + go$r = b; + continue; + } + if (v$1.tag === "Cons") { + go$a0 = b + 1 | 0; + go$a1 = v$1._2; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + const go$1 = go$1$a0$copy => go$1$a1$copy => { + let go$1$a0 = go$1$a0$copy, go$1$a1 = go$1$a1$copy, go$1$c = true, go$1$r; + while (go$1$c) { + const b = go$1$a0, v$1 = go$1$a1; + if (v$1.tag === "Nil") { + go$1$c = false; + go$1$r = b; + continue; + } + if (v$1.tag === "Cons") { + go$1$a0 = b + 1 | 0; + go$1$a1 = v$1._2; + continue; + } + $runtime.fail(); + }; + return go$1$r; + }; + return go(0)(v._1) + go$1(0)(v._2) | 0; +}; +const functorCatQueue = {map: f => v => $CatQueue(Data$dList$dTypes.listMap(f)(v._1), Data$dList$dTypes.listMap(f)(v._2))}; +const foldableCatQueue = { + foldMap: dictMonoid => { + const append = dictMonoid.Semigroup0().append; + return f => foldableCatQueue.foldl(acc => x => append(acc)(f(x)))(dictMonoid.mempty); + }, + foldr: f => Data$dFoldable.foldrDefault(foldableCatQueue)(f), + 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 acc = go$a0, q = go$a1; + const v = uncons(q); + if (v.tag === "Just") { + go$a0 = f(acc)(v._1._1); + go$a1 = v._1._2; + continue; + } + if (v.tag === "Nothing") { + go$c = false; + go$r = acc; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go; + } +}; +const semigroupCatQueue = /* #__PURE__ */ (() => ({append: foldableCatQueue.foldl(snoc)}))(); +const empty = /* #__PURE__ */ $CatQueue(Data$dList$dTypes.Nil, Data$dList$dTypes.Nil); +const monoidCatQueue = {mempty: /* #__PURE__ */ $CatQueue(Data$dList$dTypes.Nil, Data$dList$dTypes.Nil), Semigroup0: () => semigroupCatQueue}; +const singleton = /* #__PURE__ */ snoc(/* #__PURE__ */ $CatQueue(Data$dList$dTypes.Nil, Data$dList$dTypes.Nil)); +const fromFoldable = dictFoldable => { + const foldMap = dictFoldable.foldMap(monoidCatQueue); + return f => foldMap(snoc($CatQueue(Data$dList$dTypes.Nil, Data$dList$dTypes.Nil)))(f); +}; +const traversableCatQueue = { + traverse: dictApplicative => { + const Apply0 = dictApplicative.Apply0(); + const map1 = Apply0.Functor0().map; + const map = Apply0.Functor0().map; + return f => { + const $5 = map1(foldableCatQueue.foldl(snoc)($CatQueue(Data$dList$dTypes.Nil, Data$dList$dTypes.Nil))); + const $6 = foldableCatQueue.foldl(acc => x => Apply0.apply(map(snoc)(acc))(f(x)))(dictApplicative.pure($CatQueue(Data$dList$dTypes.Nil, Data$dList$dTypes.Nil))); + return x => $5($6(x)); + }; + }, + sequence: dictApplicative => traversableCatQueue.traverse(dictApplicative)(Data$dTraversable.identity), + Functor0: () => functorCatQueue, + Foldable1: () => foldableCatQueue +}; +const unfoldable1CatQueue = { + unfoldr1: f => 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 source = go$a0, memo = go$a1; + const v = f(source); + if (v._2.tag === "Nothing") { + go$c = false; + go$r = $CatQueue(memo._1, Data$dList$dTypes.$List("Cons", v._1, memo._2)); + continue; + } + if (v._2.tag === "Just") { + go$a0 = v._2._1; + go$a1 = $CatQueue(memo._1, Data$dList$dTypes.$List("Cons", v._1, memo._2)); + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go(b)($CatQueue(Data$dList$dTypes.Nil, Data$dList$dTypes.Nil)); + } +}; +const unfoldableCatQueue = { + unfoldr: f => 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 source = go$a0, memo = go$a1; + const v = f(source); + if (v.tag === "Nothing") { + go$c = false; + go$r = memo; + continue; + } + if (v.tag === "Just") { + go$a0 = v._1._2; + go$a1 = $CatQueue(memo._1, Data$dList$dTypes.$List("Cons", v._1._1, memo._2)); + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go(b)($CatQueue(Data$dList$dTypes.Nil, Data$dList$dTypes.Nil)); + }, + Unfoldable10: () => unfoldable1CatQueue +}; +const cqEq = dictEq => { + 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 xs = go$a0, ys = go$a1; + const v = uncons(ys); + const v1 = uncons(xs); + if (v1.tag === "Just") { + if (v.tag === "Just") { + if (dictEq.eq(v1._1._1)(v._1._1)) { + go$a0 = v1._1._2; + go$a1 = v._1._2; + continue; + } + go$c = false; + go$r = false; + continue; + } + go$c = false; + go$r = false; + continue; + } + if (v1.tag === "Nothing") { + go$c = false; + go$r = v.tag === "Nothing"; + continue; + } + go$c = false; + go$r = false; + continue; + }; + return go$r; + }; + return go; +}; +const eqCatQueue = dictEq => ({eq: cqEq(dictEq)}); +const cqCompare = dictOrd => { + 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 xs = go$a0, ys = go$a1; + const v = uncons(ys); + const v1 = uncons(xs); + if (v1.tag === "Just") { + if (v.tag === "Just") { + const v2 = dictOrd.compare(v1._1._1)(v._1._1); + if (v2.tag === "EQ") { + go$a0 = v1._1._2; + go$a1 = v._1._2; + continue; + } + go$c = false; + go$r = v2; + continue; + } + if (v.tag === "Nothing") { + go$c = false; + go$r = Data$dOrdering.GT; + continue; + } + $runtime.fail(); + } + if (v1.tag === "Nothing") { + if (v.tag === "Just") { + go$c = false; + go$r = Data$dOrdering.LT; + continue; + } + if (v.tag === "Nothing") { + go$c = false; + go$r = Data$dOrdering.EQ; + continue; + } + $runtime.fail(); + } + $runtime.fail(); + }; + return go$r; + }; + return go; +}; +const ordCatQueue = dictOrd => { + const eqCatQueue1 = {eq: cqEq(dictOrd.Eq0())}; + return {compare: cqCompare(dictOrd), Eq0: () => eqCatQueue1}; +}; +const cons = a => v => $CatQueue(Data$dList$dTypes.$List("Cons", a, v._1), v._2); +const monadCatQueue = {Applicative0: () => applicativeCatQueue$lazy(), Bind1: () => bindCatQueue$lazy()}; +const applyCatQueue = { + apply: f => a => bindCatQueue$lazy().bind(f)(f$p => bindCatQueue$lazy().bind(a)(a$p => applicativeCatQueue$lazy().pure(f$p(a$p)))), + Functor0: () => functorCatQueue +}; +const bindCatQueue$lazy = /* #__PURE__ */ $runtime.binding(() => ( + { + bind: (() => { + const $0 = foldableCatQueue.foldMap(monoidCatQueue); + return b => a => $0(a)(b); + })(), + Apply0: () => applyCatQueue + } +)); +const applicativeCatQueue$lazy = /* #__PURE__ */ $runtime.binding(() => ({pure: snoc($CatQueue(Data$dList$dTypes.Nil, Data$dList$dTypes.Nil)), Apply0: () => applyCatQueue})); +const bindCatQueue = /* #__PURE__ */ bindCatQueue$lazy(); +const applicativeCatQueue = /* #__PURE__ */ applicativeCatQueue$lazy(); +const altCatQueue = /* #__PURE__ */ (() => ({alt: semigroupCatQueue.append, Functor0: () => functorCatQueue}))(); +const plusCatQueue = {empty: /* #__PURE__ */ $CatQueue(Data$dList$dTypes.Nil, Data$dList$dTypes.Nil), Alt0: () => altCatQueue}; +const alternativeCatQueue = {Applicative0: () => applicativeCatQueue, Plus1: () => plusCatQueue}; +const monadPlusCatQueue = {Monad0: () => monadCatQueue, Alternative1: () => alternativeCatQueue}; +export { + $CatQueue, + CatQueue, + altCatQueue, + alternativeCatQueue, + applicativeCatQueue, + applyCatQueue, + bindCatQueue, + cons, + cqCompare, + cqEq, + empty, + eqCatQueue, + foldableCatQueue, + fromFoldable, + functorCatQueue, + length, + monadCatQueue, + monadPlusCatQueue, + monoidCatQueue, + $$null as null, + ordCatQueue, + plusCatQueue, + semigroupCatQueue, + showCatQueue, + singleton, + snoc, + traversableCatQueue, + uncons, + unfoldable1CatQueue, + unfoldableCatQueue, + unsnoc +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Char.Gen/index.js b/.storybook/purescript-indexer/output-es/Data.Char.Gen/index.js new file mode 100644 index 0000000..16bda1e --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Char.Gen/index.js @@ -0,0 +1,22 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dGen from "../Control.Monad.Gen/index.js"; +import * as Data$dEnum from "../Data.Enum/index.js"; +import * as Data$dFoldable from "../Data.Foldable/index.js"; +import * as Data$dNonEmpty from "../Data.NonEmpty/index.js"; +const toEnumWithDefaults = low => high => x => { + if (x >= 0 && x <= 65535) { return Data$dEnum.fromCharCode(x); } + if (x < 0) { return low; } + return high; +}; +const foldable1NonEmpty = /* #__PURE__ */ Data$dNonEmpty.foldable1NonEmpty(Data$dFoldable.foldableArray); +const genUnicodeChar = dictMonadGen => dictMonadGen.Monad0().Bind1().Apply0().Functor0().map(toEnumWithDefaults("\u0000")("￿"))(dictMonadGen.chooseInt(0)(65536)); +const genDigitChar = dictMonadGen => dictMonadGen.Monad0().Bind1().Apply0().Functor0().map(toEnumWithDefaults("\u0000")("￿"))(dictMonadGen.chooseInt(48)(57)); +const genAsciiChar$p = dictMonadGen => dictMonadGen.Monad0().Bind1().Apply0().Functor0().map(toEnumWithDefaults("\u0000")("￿"))(dictMonadGen.chooseInt(0)(127)); +const genAsciiChar = dictMonadGen => dictMonadGen.Monad0().Bind1().Apply0().Functor0().map(toEnumWithDefaults("\u0000")("￿"))(dictMonadGen.chooseInt(32)(127)); +const genAlphaUppercase = dictMonadGen => dictMonadGen.Monad0().Bind1().Apply0().Functor0().map(toEnumWithDefaults("\u0000")("￿"))(dictMonadGen.chooseInt(65)(90)); +const genAlphaLowercase = dictMonadGen => dictMonadGen.Monad0().Bind1().Apply0().Functor0().map(toEnumWithDefaults("\u0000")("￿"))(dictMonadGen.chooseInt(97)(122)); +const genAlpha = dictMonadGen => Control$dMonad$dGen.oneOf(dictMonadGen)(foldable1NonEmpty)(Data$dNonEmpty.$NonEmpty( + genAlphaLowercase(dictMonadGen), + [genAlphaUppercase(dictMonadGen)] +)); +export {foldable1NonEmpty, genAlpha, genAlphaLowercase, genAlphaUppercase, genAsciiChar, genAsciiChar$p, genDigitChar, genUnicodeChar, toEnumWithDefaults}; diff --git a/.storybook/purescript-indexer/output-es/Data.Char/index.js b/.storybook/purescript-indexer/output-es/Data.Char/index.js new file mode 100644 index 0000000..9173cf2 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Char/index.js @@ -0,0 +1,6 @@ +// | A type and functions for single characters. +import * as $runtime from "../runtime.js"; +import * as Data$dEnum from "../Data.Enum/index.js"; +const toCharCode = Data$dEnum.toCharCode; +const fromCharCode = Data$dEnum.charToEnum; +export {fromCharCode, toCharCode}; diff --git a/.storybook/purescript-indexer/output-es/Data.CommutativeRing/index.js b/.storybook/purescript-indexer/output-es/Data.CommutativeRing/index.js new file mode 100644 index 0000000..664b1cf --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.CommutativeRing/index.js @@ -0,0 +1,35 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dRing from "../Data.Ring/index.js"; +const commutativeRingUnit = {Ring0: () => Data$dRing.ringUnit}; +const commutativeRingRecordNil = {RingRecord0: () => Data$dRing.ringRecordNil}; +const commutativeRingRecordCons = dictIsSymbol => () => dictCommutativeRingRecord => { + const ringRecordCons1 = Data$dRing.ringRecordCons(dictIsSymbol)()(dictCommutativeRingRecord.RingRecord0()); + return dictCommutativeRing => { + const ringRecordCons2 = ringRecordCons1(dictCommutativeRing.Ring0()); + return {RingRecord0: () => ringRecordCons2}; + }; +}; +const commutativeRingRecord = () => dictCommutativeRingRecord => { + const ringRecord1 = Data$dRing.ringRecord()(dictCommutativeRingRecord.RingRecord0()); + return {Ring0: () => ringRecord1}; +}; +const commutativeRingProxy = {Ring0: () => Data$dRing.ringProxy}; +const commutativeRingNumber = {Ring0: () => Data$dRing.ringNumber}; +const commutativeRingInt = {Ring0: () => Data$dRing.ringInt}; +const commutativeRingFn = dictCommutativeRing => { + const $1 = dictCommutativeRing.Ring0(); + const $2 = $1.Semiring0(); + const semiringFn = {add: f => g => x => $2.add(f(x))(g(x)), zero: v => $2.zero, mul: f => g => x => $2.mul(f(x))(g(x)), one: v => $2.one}; + const ringFn = {sub: f => g => x => $1.sub(f(x))(g(x)), Semiring0: () => semiringFn}; + return {Ring0: () => ringFn}; +}; +export { + commutativeRingFn, + commutativeRingInt, + commutativeRingNumber, + commutativeRingProxy, + commutativeRingRecord, + commutativeRingRecordCons, + commutativeRingRecordNil, + commutativeRingUnit +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Comparison/index.js b/.storybook/purescript-indexer/output-es/Data.Comparison/index.js new file mode 100644 index 0000000..91dc076 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Comparison/index.js @@ -0,0 +1,21 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dOrdering from "../Data.Ordering/index.js"; +const append = f => g => x => { + const $3 = f(x); + const $4 = g(x); + return x$1 => { + const $6 = $3(x$1); + const $7 = $4(x$1); + if ($6.tag === "LT") { return Data$dOrdering.LT; } + if ($6.tag === "GT") { return Data$dOrdering.GT; } + if ($6.tag === "EQ") { return $7; } + $runtime.fail(); + }; +}; +const Comparison = x => x; +const semigroupComparison = {append: v => v1 => append(v)(v1)}; +const newtypeComparison = {Coercible0: () => undefined}; +const monoidComparison = {mempty: v => v1 => Data$dOrdering.EQ, Semigroup0: () => semigroupComparison}; +const defaultComparison = dictOrd => dictOrd.compare; +const contravariantComparison = {cmap: f => v => x => y => v(f(x))(f(y))}; +export {Comparison, append, contravariantComparison, defaultComparison, monoidComparison, newtypeComparison, semigroupComparison}; diff --git a/.storybook/purescript-indexer/output-es/Data.Const/index.js b/.storybook/purescript-indexer/output-es/Data.Const/index.js new file mode 100644 index 0000000..f449d42 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Const/index.js @@ -0,0 +1,52 @@ +import * as $runtime from "../runtime.js"; +const Const = x => x; +const showConst = dictShow => ({show: v => "(Const " + (dictShow.show(v) + ")")}); +const semiringConst = dictSemiring => dictSemiring; +const semigroupoidConst = {compose: v => v1 => v1}; +const semigroupConst = dictSemigroup => dictSemigroup; +const ringConst = dictRing => dictRing; +const ordConst = dictOrd => dictOrd; +const newtypeConst = {Coercible0: () => undefined}; +const monoidConst = dictMonoid => dictMonoid; +const heytingAlgebraConst = dictHeytingAlgebra => dictHeytingAlgebra; +const functorConst = {map: f => m => m}; +const invariantConst = {imap: f => v => m => m}; +const euclideanRingConst = dictEuclideanRing => dictEuclideanRing; +const eqConst = dictEq => dictEq; +const eq1Const = dictEq => ({eq1: dictEq1 => dictEq.eq}); +const ord1Const = dictOrd => { + const $1 = dictOrd.Eq0(); + return {compare1: dictOrd1 => dictOrd.compare, Eq10: () => ({eq1: dictEq1 => $1.eq})}; +}; +const commutativeRingConst = dictCommutativeRing => dictCommutativeRing; +const boundedConst = dictBounded => dictBounded; +const booleanAlgebraConst = dictBooleanAlgebra => dictBooleanAlgebra; +const applyConst = dictSemigroup => ({apply: v => v1 => dictSemigroup.append(v)(v1), Functor0: () => functorConst}); +const applicativeConst = dictMonoid => { + const $1 = dictMonoid.Semigroup0(); + const applyConst1 = {apply: v => v1 => $1.append(v)(v1), Functor0: () => functorConst}; + return {pure: v => dictMonoid.mempty, Apply0: () => applyConst1}; +}; +export { + Const, + applicativeConst, + applyConst, + booleanAlgebraConst, + boundedConst, + commutativeRingConst, + eq1Const, + eqConst, + euclideanRingConst, + functorConst, + heytingAlgebraConst, + invariantConst, + monoidConst, + newtypeConst, + ord1Const, + ordConst, + ringConst, + semigroupConst, + semigroupoidConst, + semiringConst, + showConst +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Coyoneda/index.js b/.storybook/purescript-indexer/output-es/Data.Coyoneda/index.js new file mode 100644 index 0000000..ad728e3 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Coyoneda/index.js @@ -0,0 +1,210 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dSemigroup$dFoldable from "../Data.Semigroup.Foldable/index.js"; +const $CoyonedaF = (_1, _2) => ({tag: "CoyonedaF", _1, _2}); +const CoyonedaF = value0 => value1 => $CoyonedaF(value0, value1); +const Coyoneda = x => x; +const unCoyoneda = f => v => f(v._1)(v._2); +const lowerCoyoneda = dictFunctor => v => dictFunctor.map(v._1)(v._2); +const foldableCoyoneda = dictFoldable => ( + { + foldr: f => z => v => dictFoldable.foldr(x => f(v._1(x)))(z)(v._2), + foldl: f => z => v => dictFoldable.foldl(x => { + const $5 = f(x); + return x$1 => $5(v._1(x$1)); + })(z)(v._2), + foldMap: dictMonoid => { + const foldMap1 = dictFoldable.foldMap(dictMonoid); + return f => v => foldMap1(x => f(v._1(x)))(v._2); + } + } +); +const foldable1Coyoneda = dictFoldable1 => { + const foldableCoyoneda1 = foldableCoyoneda(dictFoldable1.Foldable0()); + return { + foldMap1: dictSemigroup => { + const foldMap11 = dictFoldable1.foldMap1(dictSemigroup); + return f => v => foldMap11(x => f(v._1(x)))(v._2); + }, + foldr1: Data$dSemigroup$dFoldable.foldr1Default(foldable1Coyoneda(dictFoldable1)), + foldl1: Data$dSemigroup$dFoldable.foldl1Default(foldable1Coyoneda(dictFoldable1)), + Foldable0: () => foldableCoyoneda1 + }; +}; +const eqCoyoneda = dictFunctor => dictEq1 => dictEq => { + const eq11 = dictEq1.eq1(dictEq); + return {eq: x => y => eq11(dictFunctor.map(x._1)(x._2))(dictFunctor.map(y._1)(y._2))}; +}; +const ordCoyoneda = dictFunctor => dictOrd1 => { + const $2 = dictOrd1.Eq10(); + return dictOrd => { + const compare11 = dictOrd1.compare1(dictOrd); + const eq11 = $2.eq1(dictOrd.Eq0()); + const eqCoyoneda3 = {eq: x => y => eq11(dictFunctor.map(x._1)(x._2))(dictFunctor.map(y._1)(y._2))}; + return {compare: x => y => compare11(dictFunctor.map(x._1)(x._2))(dictFunctor.map(y._1)(y._2)), Eq0: () => eqCoyoneda3}; + }; +}; +const eq1Coyoneda = dictFunctor => dictEq1 => ( + { + eq1: dictEq => { + const eq11 = dictEq1.eq1(dictEq); + return x => y => eq11(dictFunctor.map(x._1)(x._2))(dictFunctor.map(y._1)(y._2)); + } + } +); +const ord1Coyoneda = dictFunctor => dictOrd1 => { + const ordCoyoneda2 = ordCoyoneda(dictFunctor)(dictOrd1); + const $3 = dictOrd1.Eq10(); + const eq1Coyoneda2 = { + eq1: dictEq => { + const eq11 = $3.eq1(dictEq); + return x => y => eq11(dictFunctor.map(x._1)(x._2))(dictFunctor.map(y._1)(y._2)); + } + }; + return {compare1: dictOrd => ordCoyoneda2(dictOrd).compare, Eq10: () => eq1Coyoneda2}; +}; +const coyoneda = k => fi => $CoyonedaF(k, fi); +const functorCoyoneda = {map: f => v => $CoyonedaF(x => f(v._1(x)), v._2)}; +const invatiantCoyoneda = {imap: f => v => functorCoyoneda.map(f)}; +const hoistCoyoneda = nat => v => $CoyonedaF(v._1, nat(v._2)); +const liftCoyoneda = /* #__PURE__ */ coyoneda(x => x); +const distributiveCoyoneda = dictDistributive => { + const $1 = dictDistributive.Functor0(); + return { + collect: dictFunctor => { + const collect1 = dictDistributive.collect(dictFunctor); + return f => { + const $5 = collect1(x => { + const $6 = f(x); + return $1.map($6._1)($6._2); + }); + return x => $CoyonedaF(x$1 => x$1, $5(x)); + }; + }, + distribute: dictFunctor => { + const $3 = dictDistributive.collect(dictFunctor)(v => $1.map(v._1)(v._2)); + return x => $CoyonedaF(x$1 => x$1, $3(x)); + }, + Functor0: () => functorCoyoneda + }; +}; +const extendCoyoneda = dictExtend => ({extend: f => v => $CoyonedaF(x => x, dictExtend.extend(x => f($CoyonedaF(v._1, x)))(v._2)), Functor0: () => functorCoyoneda}); +const monadTransCoyoneda = {lift: dictMonad => liftCoyoneda}; +const traversableCoyoneda = dictTraversable => { + const foldableCoyoneda1 = foldableCoyoneda(dictTraversable.Foldable1()); + return { + traverse: dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + const traverse1 = dictTraversable.traverse(dictApplicative); + return f => v => map(liftCoyoneda)(traverse1(x => f(v._1(x)))(v._2)); + }, + sequence: dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + const traverse1 = dictTraversable.traverse(dictApplicative); + return v => map(liftCoyoneda)(traverse1(v._1)(v._2)); + }, + Functor0: () => functorCoyoneda, + Foldable1: () => foldableCoyoneda1 + }; +}; +const traversable1Coyoneda = dictTraversable1 => { + const Traversable1 = dictTraversable1.Traversable1(); + const map = Traversable1.Functor0().map; + const foldable1Coyoneda1 = foldable1Coyoneda(dictTraversable1.Foldable10()); + const traversableCoyoneda1 = traversableCoyoneda(Traversable1); + return { + traverse1: dictApply => { + const map1 = dictApply.Functor0().map; + const traverse11 = dictTraversable1.traverse1(dictApply); + return f => v => map1(liftCoyoneda)(traverse11(x => f(v._1(x)))(v._2)); + }, + sequence1: dictApply => { + const map1 = dictApply.Functor0().map; + const sequence11 = dictTraversable1.sequence1(dictApply); + return v => map1(liftCoyoneda)(sequence11(map(v._1)(v._2))); + }, + Foldable10: () => foldable1Coyoneda1, + Traversable1: () => traversableCoyoneda1 + }; +}; +const comonadCoyoneda = dictComonad => { + const extendCoyoneda1 = extendCoyoneda(dictComonad.Extend0()); + return {extract: v => v._1(dictComonad.extract(v._2)), Extend0: () => extendCoyoneda1}; +}; +const applyCoyoneda = dictApply => { + const $1 = dictApply.Functor0(); + return {apply: f => g => $CoyonedaF(x => x, dictApply.apply($1.map(f._1)(f._2))($1.map(g._1)(g._2))), Functor0: () => functorCoyoneda}; +}; +const bindCoyoneda = dictBind => { + const Apply0 = dictBind.Apply0(); + const $2 = Apply0.Functor0(); + const applyCoyoneda1 = applyCoyoneda(Apply0); + return { + bind: v => f => $CoyonedaF( + x => x, + dictBind.bind(v._2)(x => { + const $7 = f(v._1(x)); + return $2.map($7._1)($7._2); + }) + ), + Apply0: () => applyCoyoneda1 + }; +}; +const applicativeCoyoneda = dictApplicative => { + const applyCoyoneda1 = applyCoyoneda(dictApplicative.Apply0()); + return {pure: x => $CoyonedaF(x$1 => x$1, dictApplicative.pure(x)), Apply0: () => applyCoyoneda1}; +}; +const monadCoyoneda = dictMonad => { + const applicativeCoyoneda1 = applicativeCoyoneda(dictMonad.Applicative0()); + const bindCoyoneda1 = bindCoyoneda(dictMonad.Bind1()); + return {Applicative0: () => applicativeCoyoneda1, Bind1: () => bindCoyoneda1}; +}; +const altCoyoneda = dictAlt => { + const $1 = dictAlt.Functor0(); + return {alt: x => y => $CoyonedaF(x$1 => x$1, dictAlt.alt($1.map(x._1)(x._2))($1.map(y._1)(y._2))), Functor0: () => functorCoyoneda}; +}; +const plusCoyoneda = dictPlus => { + const altCoyoneda1 = altCoyoneda(dictPlus.Alt0()); + return {empty: $CoyonedaF(x => x, dictPlus.empty), Alt0: () => altCoyoneda1}; +}; +const alternativeCoyoneda = dictAlternative => { + const applicativeCoyoneda1 = applicativeCoyoneda(dictAlternative.Applicative0()); + const plusCoyoneda1 = plusCoyoneda(dictAlternative.Plus1()); + return {Applicative0: () => applicativeCoyoneda1, Plus1: () => plusCoyoneda1}; +}; +const monadPlusCoyoneda = dictMonadPlus => { + const monadCoyoneda1 = monadCoyoneda(dictMonadPlus.Monad0()); + const alternativeCoyoneda1 = alternativeCoyoneda(dictMonadPlus.Alternative1()); + return {Monad0: () => monadCoyoneda1, Alternative1: () => alternativeCoyoneda1}; +}; +export { + $CoyonedaF, + Coyoneda, + CoyonedaF, + altCoyoneda, + alternativeCoyoneda, + applicativeCoyoneda, + applyCoyoneda, + bindCoyoneda, + comonadCoyoneda, + coyoneda, + distributiveCoyoneda, + eq1Coyoneda, + eqCoyoneda, + extendCoyoneda, + foldable1Coyoneda, + foldableCoyoneda, + functorCoyoneda, + hoistCoyoneda, + invatiantCoyoneda, + liftCoyoneda, + lowerCoyoneda, + monadCoyoneda, + monadPlusCoyoneda, + monadTransCoyoneda, + ord1Coyoneda, + ordCoyoneda, + plusCoyoneda, + traversable1Coyoneda, + traversableCoyoneda, + unCoyoneda +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Date.Component.Gen/index.js b/.storybook/purescript-indexer/output-es/Data.Date.Component.Gen/index.js new file mode 100644 index 0000000..baaa4ee --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Date.Component.Gen/index.js @@ -0,0 +1,11 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dDate$dComponent from "../Data.Date.Component/index.js"; +import * as Data$dEnum$dGen from "../Data.Enum.Gen/index.js"; +const genYear = dictMonadGen => dictMonadGen.Monad0().Bind1().Apply0().Functor0().map(x => { + if (x >= -271820 && x <= 275759) { return x; } + $runtime.fail(); +})(dictMonadGen.chooseInt(1900)(2100)); +const genWeekday = dictMonadGen => Data$dEnum$dGen.genBoundedEnum(dictMonadGen)(Data$dDate$dComponent.boundedEnumWeekday); +const genMonth = dictMonadGen => Data$dEnum$dGen.genBoundedEnum(dictMonadGen)(Data$dDate$dComponent.boundedEnumMonth); +const genDay = dictMonadGen => Data$dEnum$dGen.genBoundedEnum(dictMonadGen)(Data$dDate$dComponent.boundedEnumDay); +export {genDay, genMonth, genWeekday, genYear}; diff --git a/.storybook/purescript-indexer/output-es/Data.Date.Component/index.js b/.storybook/purescript-indexer/output-es/Data.Date.Component/index.js new file mode 100644 index 0000000..105b499 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Date.Component/index.js @@ -0,0 +1,409 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dEq from "../Data.Eq/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dOrd from "../Data.Ord/index.js"; +import * as Data$dOrdering from "../Data.Ordering/index.js"; +import * as Data$dShow from "../Data.Show/index.js"; +const $Month = tag => ({tag}); +const $Weekday = tag => ({tag}); +const Monday = /* #__PURE__ */ $Weekday("Monday"); +const Tuesday = /* #__PURE__ */ $Weekday("Tuesday"); +const Wednesday = /* #__PURE__ */ $Weekday("Wednesday"); +const Thursday = /* #__PURE__ */ $Weekday("Thursday"); +const Friday = /* #__PURE__ */ $Weekday("Friday"); +const Saturday = /* #__PURE__ */ $Weekday("Saturday"); +const Sunday = /* #__PURE__ */ $Weekday("Sunday"); +const January = /* #__PURE__ */ $Month("January"); +const February = /* #__PURE__ */ $Month("February"); +const March = /* #__PURE__ */ $Month("March"); +const April = /* #__PURE__ */ $Month("April"); +const May = /* #__PURE__ */ $Month("May"); +const June = /* #__PURE__ */ $Month("June"); +const July = /* #__PURE__ */ $Month("July"); +const August = /* #__PURE__ */ $Month("August"); +const September = /* #__PURE__ */ $Month("September"); +const October = /* #__PURE__ */ $Month("October"); +const November = /* #__PURE__ */ $Month("November"); +const December = /* #__PURE__ */ $Month("December"); +const showYear = {show: v => "(Year " + (Data$dShow.showIntImpl(v) + ")")}; +const showWeekday = { + show: v => { + if (v.tag === "Monday") { return "Monday"; } + if (v.tag === "Tuesday") { return "Tuesday"; } + if (v.tag === "Wednesday") { return "Wednesday"; } + if (v.tag === "Thursday") { return "Thursday"; } + if (v.tag === "Friday") { return "Friday"; } + if (v.tag === "Saturday") { return "Saturday"; } + if (v.tag === "Sunday") { return "Sunday"; } + $runtime.fail(); + } +}; +const showMonth = { + show: v => { + if (v.tag === "January") { return "January"; } + if (v.tag === "February") { return "February"; } + if (v.tag === "March") { return "March"; } + if (v.tag === "April") { return "April"; } + if (v.tag === "May") { return "May"; } + if (v.tag === "June") { return "June"; } + if (v.tag === "July") { return "July"; } + if (v.tag === "August") { return "August"; } + if (v.tag === "September") { return "September"; } + if (v.tag === "October") { return "October"; } + if (v.tag === "November") { return "November"; } + if (v.tag === "December") { return "December"; } + $runtime.fail(); + } +}; +const showDay = {show: v => "(Day " + (Data$dShow.showIntImpl(v) + ")")}; +const ordYear = Data$dOrd.ordInt; +const ordDay = Data$dOrd.ordInt; +const eqYear = Data$dEq.eqInt; +const eqWeekday = { + eq: x => y => { + if (x.tag === "Monday") { return y.tag === "Monday"; } + if (x.tag === "Tuesday") { return y.tag === "Tuesday"; } + if (x.tag === "Wednesday") { return y.tag === "Wednesday"; } + if (x.tag === "Thursday") { return y.tag === "Thursday"; } + if (x.tag === "Friday") { return y.tag === "Friday"; } + if (x.tag === "Saturday") { return y.tag === "Saturday"; } + if (x.tag === "Sunday") { return y.tag === "Sunday"; } + return false; + } +}; +const ordWeekday = { + compare: x => y => { + if (x.tag === "Monday") { + if (y.tag === "Monday") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "Monday") { return Data$dOrdering.GT; } + if (x.tag === "Tuesday") { + if (y.tag === "Tuesday") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "Tuesday") { return Data$dOrdering.GT; } + if (x.tag === "Wednesday") { + if (y.tag === "Wednesday") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "Wednesday") { return Data$dOrdering.GT; } + if (x.tag === "Thursday") { + if (y.tag === "Thursday") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "Thursday") { return Data$dOrdering.GT; } + if (x.tag === "Friday") { + if (y.tag === "Friday") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "Friday") { return Data$dOrdering.GT; } + if (x.tag === "Saturday") { + if (y.tag === "Saturday") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "Saturday") { return Data$dOrdering.GT; } + if (x.tag === "Sunday") { + if (y.tag === "Sunday") { return Data$dOrdering.EQ; } + $runtime.fail(); + } + $runtime.fail(); + }, + Eq0: () => eqWeekday +}; +const eqMonth = { + eq: x => y => { + if (x.tag === "January") { return y.tag === "January"; } + if (x.tag === "February") { return y.tag === "February"; } + if (x.tag === "March") { return y.tag === "March"; } + if (x.tag === "April") { return y.tag === "April"; } + if (x.tag === "May") { return y.tag === "May"; } + if (x.tag === "June") { return y.tag === "June"; } + if (x.tag === "July") { return y.tag === "July"; } + if (x.tag === "August") { return y.tag === "August"; } + if (x.tag === "September") { return y.tag === "September"; } + if (x.tag === "October") { return y.tag === "October"; } + if (x.tag === "November") { return y.tag === "November"; } + if (x.tag === "December") { return y.tag === "December"; } + return false; + } +}; +const ordMonth = { + compare: x => y => { + if (x.tag === "January") { + if (y.tag === "January") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "January") { return Data$dOrdering.GT; } + if (x.tag === "February") { + if (y.tag === "February") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "February") { return Data$dOrdering.GT; } + if (x.tag === "March") { + if (y.tag === "March") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "March") { return Data$dOrdering.GT; } + if (x.tag === "April") { + if (y.tag === "April") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "April") { return Data$dOrdering.GT; } + if (x.tag === "May") { + if (y.tag === "May") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "May") { return Data$dOrdering.GT; } + if (x.tag === "June") { + if (y.tag === "June") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "June") { return Data$dOrdering.GT; } + if (x.tag === "July") { + if (y.tag === "July") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "July") { return Data$dOrdering.GT; } + if (x.tag === "August") { + if (y.tag === "August") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "August") { return Data$dOrdering.GT; } + if (x.tag === "September") { + if (y.tag === "September") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "September") { return Data$dOrdering.GT; } + if (x.tag === "October") { + if (y.tag === "October") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "October") { return Data$dOrdering.GT; } + if (x.tag === "November") { + if (y.tag === "November") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "November") { return Data$dOrdering.GT; } + if (x.tag === "December") { + if (y.tag === "December") { return Data$dOrdering.EQ; } + $runtime.fail(); + } + $runtime.fail(); + }, + Eq0: () => eqMonth +}; +const eqDay = Data$dEq.eqInt; +const boundedYear = {bottom: -271820, top: 275759, Ord0: () => Data$dOrd.ordInt}; +const boundedWeekday = {bottom: Monday, top: Sunday, Ord0: () => ordWeekday}; +const boundedMonth = {bottom: January, top: December, Ord0: () => ordMonth}; +const boundedEnumYear = { + cardinality: 547580, + toEnum: n => { + if (n >= -271820 && n <= 275759) { return Data$dMaybe.$Maybe("Just", n); } + return Data$dMaybe.Nothing; + }, + fromEnum: v => v, + Bounded0: () => boundedYear, + Enum1: () => enumYear +}; +const enumYear = { + succ: x => { + const $1 = x + 1 | 0; + if ($1 >= -271820 && $1 <= 275759) { return Data$dMaybe.$Maybe("Just", $1); } + return Data$dMaybe.Nothing; + }, + pred: x => { + const $1 = x - 1 | 0; + if ($1 >= -271820 && $1 <= 275759) { return Data$dMaybe.$Maybe("Just", $1); } + return Data$dMaybe.Nothing; + }, + Ord0: () => Data$dOrd.ordInt +}; +const boundedEnumWeekday = { + cardinality: 7, + toEnum: v => { + if (v === 1) { return Data$dMaybe.$Maybe("Just", Monday); } + if (v === 2) { return Data$dMaybe.$Maybe("Just", Tuesday); } + if (v === 3) { return Data$dMaybe.$Maybe("Just", Wednesday); } + if (v === 4) { return Data$dMaybe.$Maybe("Just", Thursday); } + if (v === 5) { return Data$dMaybe.$Maybe("Just", Friday); } + if (v === 6) { return Data$dMaybe.$Maybe("Just", Saturday); } + if (v === 7) { return Data$dMaybe.$Maybe("Just", Sunday); } + return Data$dMaybe.Nothing; + }, + fromEnum: v => { + if (v.tag === "Monday") { return 1; } + if (v.tag === "Tuesday") { return 2; } + if (v.tag === "Wednesday") { return 3; } + if (v.tag === "Thursday") { return 4; } + if (v.tag === "Friday") { return 5; } + if (v.tag === "Saturday") { return 6; } + if (v.tag === "Sunday") { return 7; } + $runtime.fail(); + }, + Bounded0: () => boundedWeekday, + Enum1: () => enumWeekday +}; +const enumWeekday = { + succ: x => boundedEnumWeekday.toEnum((() => { + if (x.tag === "Monday") { return 2; } + if (x.tag === "Tuesday") { return 3; } + if (x.tag === "Wednesday") { return 4; } + if (x.tag === "Thursday") { return 5; } + if (x.tag === "Friday") { return 6; } + if (x.tag === "Saturday") { return 7; } + if (x.tag === "Sunday") { return 8; } + $runtime.fail(); + })()), + pred: x => boundedEnumWeekday.toEnum((() => { + if (x.tag === "Monday") { return 0; } + if (x.tag === "Tuesday") { return 1; } + if (x.tag === "Wednesday") { return 2; } + if (x.tag === "Thursday") { return 3; } + if (x.tag === "Friday") { return 4; } + if (x.tag === "Saturday") { return 5; } + if (x.tag === "Sunday") { return 6; } + $runtime.fail(); + })()), + Ord0: () => ordWeekday +}; +const boundedEnumMonth = { + cardinality: 12, + toEnum: v => { + if (v === 1) { return Data$dMaybe.$Maybe("Just", January); } + if (v === 2) { return Data$dMaybe.$Maybe("Just", February); } + if (v === 3) { return Data$dMaybe.$Maybe("Just", March); } + if (v === 4) { return Data$dMaybe.$Maybe("Just", April); } + if (v === 5) { return Data$dMaybe.$Maybe("Just", May); } + if (v === 6) { return Data$dMaybe.$Maybe("Just", June); } + if (v === 7) { return Data$dMaybe.$Maybe("Just", July); } + if (v === 8) { return Data$dMaybe.$Maybe("Just", August); } + if (v === 9) { return Data$dMaybe.$Maybe("Just", September); } + if (v === 10) { return Data$dMaybe.$Maybe("Just", October); } + if (v === 11) { return Data$dMaybe.$Maybe("Just", November); } + if (v === 12) { return Data$dMaybe.$Maybe("Just", December); } + return Data$dMaybe.Nothing; + }, + fromEnum: v => { + if (v.tag === "January") { return 1; } + if (v.tag === "February") { return 2; } + if (v.tag === "March") { return 3; } + if (v.tag === "April") { return 4; } + if (v.tag === "May") { return 5; } + if (v.tag === "June") { return 6; } + if (v.tag === "July") { return 7; } + if (v.tag === "August") { return 8; } + if (v.tag === "September") { return 9; } + if (v.tag === "October") { return 10; } + if (v.tag === "November") { return 11; } + if (v.tag === "December") { return 12; } + $runtime.fail(); + }, + Bounded0: () => boundedMonth, + Enum1: () => enumMonth +}; +const enumMonth = { + succ: x => boundedEnumMonth.toEnum((() => { + if (x.tag === "January") { return 2; } + if (x.tag === "February") { return 3; } + if (x.tag === "March") { return 4; } + if (x.tag === "April") { return 5; } + if (x.tag === "May") { return 6; } + if (x.tag === "June") { return 7; } + if (x.tag === "July") { return 8; } + if (x.tag === "August") { return 9; } + if (x.tag === "September") { return 10; } + if (x.tag === "October") { return 11; } + if (x.tag === "November") { return 12; } + if (x.tag === "December") { return 13; } + $runtime.fail(); + })()), + pred: x => boundedEnumMonth.toEnum((() => { + if (x.tag === "January") { return 0; } + if (x.tag === "February") { return 1; } + if (x.tag === "March") { return 2; } + if (x.tag === "April") { return 3; } + if (x.tag === "May") { return 4; } + if (x.tag === "June") { return 5; } + if (x.tag === "July") { return 6; } + if (x.tag === "August") { return 7; } + if (x.tag === "September") { return 8; } + if (x.tag === "October") { return 9; } + if (x.tag === "November") { return 10; } + if (x.tag === "December") { return 11; } + $runtime.fail(); + })()), + Ord0: () => ordMonth +}; +const boundedDay = {bottom: 1, top: 31, Ord0: () => Data$dOrd.ordInt}; +const boundedEnumDay = { + cardinality: 31, + toEnum: n => { + if (n >= 1 && n <= 31) { return Data$dMaybe.$Maybe("Just", n); } + return Data$dMaybe.Nothing; + }, + fromEnum: v => v, + Bounded0: () => boundedDay, + Enum1: () => enumDay +}; +const enumDay = { + succ: x => { + const $1 = x + 1 | 0; + if ($1 >= 1 && $1 <= 31) { return Data$dMaybe.$Maybe("Just", $1); } + return Data$dMaybe.Nothing; + }, + pred: x => { + const $1 = x - 1 | 0; + if ($1 >= 1 && $1 <= 31) { return Data$dMaybe.$Maybe("Just", $1); } + return Data$dMaybe.Nothing; + }, + Ord0: () => Data$dOrd.ordInt +}; +export { + $Month, + $Weekday, + April, + August, + December, + February, + Friday, + January, + July, + June, + March, + May, + Monday, + November, + October, + Saturday, + September, + Sunday, + Thursday, + Tuesday, + Wednesday, + boundedDay, + boundedEnumDay, + boundedEnumMonth, + boundedEnumWeekday, + boundedEnumYear, + boundedMonth, + boundedWeekday, + boundedYear, + enumDay, + enumMonth, + enumWeekday, + enumYear, + eqDay, + eqMonth, + eqWeekday, + eqYear, + ordDay, + ordMonth, + ordWeekday, + ordYear, + showDay, + showMonth, + showWeekday, + showYear +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Date.Gen/index.js b/.storybook/purescript-indexer/output-es/Data.Date.Gen/index.js new file mode 100644 index 0000000..3becaa6 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Date.Gen/index.js @@ -0,0 +1,28 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dDate from "../Data.Date/index.js"; +import * as Data$dDate$dComponent from "../Data.Date.Component/index.js"; +import * as Data$dInt from "../Data.Int/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +const genDate = dictMonadGen => { + const Monad0 = dictMonadGen.Monad0(); + const Bind1 = Monad0.Bind1(); + const map = Bind1.Apply0().Functor0().map; + const pure = Monad0.Applicative0().pure; + return Bind1.bind(dictMonadGen.Monad0().Bind1().Apply0().Functor0().map(x => { + if (x >= -271820 && x <= 275759) { return x; } + $runtime.fail(); + })(dictMonadGen.chooseInt(1900)(2100)))(year => Bind1.bind(map(x => Data$dInt.toNumber(x))(dictMonadGen.chooseInt(0)((() => { + if (Data$dDate.isLeapYear(year)) { return 365; } + return 364; + })())))(days => pure((() => { + const $7 = Data$dDate.exactDate(year)(Data$dDate$dComponent.January)(1); + const $8 = (() => { + if ($7.tag === "Just") { return Data$dDate.adjust(days)($7._1); } + if ($7.tag === "Nothing") { return Data$dMaybe.Nothing; } + $runtime.fail(); + })(); + if ($8.tag === "Just") { return $8._1; } + $runtime.fail(); + })()))); +}; +export {genDate}; diff --git a/.storybook/purescript-indexer/output-es/Data.Date/foreign.js b/.storybook/purescript-indexer/output-es/Data.Date/foreign.js new file mode 100644 index 0000000..e7a7abc --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Date/foreign.js @@ -0,0 +1,22 @@ +var createDate = function (y, m, d) { + var date = new Date(Date.UTC(y, m, d)); + if (y >= 0 && y < 100) { + date.setUTCFullYear(y); + } + return date; +}; + +export function canonicalDateImpl(ctor, y, m, d) { + var date = createDate(y, m - 1, d); + return ctor(date.getUTCFullYear())(date.getUTCMonth() + 1)(date.getUTCDate()); +} + +export function calcWeekday(y, m, d) { + return createDate(y, m - 1, d).getUTCDay(); +} + +export function calcDiff(y1, m1, d1, y2, m2, d2) { + var dt1 = createDate(y1, m1 - 1, d1); + var dt2 = createDate(y2, m2 - 1, d2); + return dt1.getTime() - dt2.getTime(); +} diff --git a/.storybook/purescript-indexer/output-es/Data.Date/index.js b/.storybook/purescript-indexer/output-es/Data.Date/index.js new file mode 100644 index 0000000..a69fda9 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Date/index.js @@ -0,0 +1,358 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dDate$dComponent from "../Data.Date.Component/index.js"; +import * as Data$dEuclideanRing from "../Data.EuclideanRing/index.js"; +import * as Data$dInt from "../Data.Int/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dOrd from "../Data.Ord/index.js"; +import * as Data$dOrdering from "../Data.Ordering/index.js"; +import * as Data$dShow from "../Data.Show/index.js"; +import {calcDiff, calcWeekday, canonicalDateImpl} from "./foreign.js"; +const $Date = (_1, _2, _3) => ({tag: "Date", _1, _2, _3}); +const greaterThan = /* #__PURE__ */ (() => { + const $0 = Data$dMaybe.ordMaybe(Data$dOrd.ordInt); + return a1 => a2 => $0.compare(a1)(a2).tag === "GT"; +})(); +const $$Date = value0 => value1 => value2 => $Date(value0, value1, value2); +const year = v => v._1; +const weekday = v => { + const n = calcWeekday( + v._1, + (() => { + if (v._2.tag === "January") { return 1; } + if (v._2.tag === "February") { return 2; } + if (v._2.tag === "March") { return 3; } + if (v._2.tag === "April") { return 4; } + if (v._2.tag === "May") { return 5; } + if (v._2.tag === "June") { return 6; } + if (v._2.tag === "July") { return 7; } + if (v._2.tag === "August") { return 8; } + if (v._2.tag === "September") { return 9; } + if (v._2.tag === "October") { return 10; } + if (v._2.tag === "November") { return 11; } + if (v._2.tag === "December") { return 12; } + $runtime.fail(); + })(), + v._3 + ); + if (n === 0) { + const $2 = Data$dDate$dComponent.boundedEnumWeekday.toEnum(7); + if ($2.tag === "Just") { return $2._1; } + $runtime.fail(); + } + const $2 = Data$dDate$dComponent.boundedEnumWeekday.toEnum(n); + if ($2.tag === "Just") { return $2._1; } + $runtime.fail(); +}; +const showDate = { + show: v => "(Date (Year " + (Data$dShow.showIntImpl(v._1) + ")") + ( + " " + ( + (() => { + if (v._2.tag === "January") { return "January"; } + if (v._2.tag === "February") { return "February"; } + if (v._2.tag === "March") { return "March"; } + if (v._2.tag === "April") { return "April"; } + if (v._2.tag === "May") { return "May"; } + if (v._2.tag === "June") { return "June"; } + if (v._2.tag === "July") { return "July"; } + if (v._2.tag === "August") { return "August"; } + if (v._2.tag === "September") { return "September"; } + if (v._2.tag === "October") { return "October"; } + if (v._2.tag === "November") { return "November"; } + if (v._2.tag === "December") { return "December"; } + $runtime.fail(); + })() + (" (Day " + Data$dShow.showIntImpl(v._3) + "))") + ) + ) +}; +const month = v => v._2; +const isLeapYear = y => Data$dEuclideanRing.intMod(y)(4) === 0 && (Data$dEuclideanRing.intMod(y)(400) === 0 || Data$dEuclideanRing.intMod(y)(100) !== 0); +const lastDayOfMonth = y => m => { + if (m.tag === "January") { return 31; } + if (m.tag === "February") { + if (isLeapYear(y)) { return 29; } + return 28; + } + if (m.tag === "March") { return 31; } + if (m.tag === "April") { return 30; } + if (m.tag === "May") { return 31; } + if (m.tag === "June") { return 30; } + if (m.tag === "July") { return 31; } + if (m.tag === "August") { return 31; } + if (m.tag === "September") { return 30; } + if (m.tag === "October") { return 31; } + if (m.tag === "November") { return 30; } + if (m.tag === "December") { return 31; } + $runtime.fail(); +}; +const eqDate = { + eq: x => y => x._1 === y._1 && (() => { + if (x._2.tag === "January") { return y._2.tag === "January"; } + if (x._2.tag === "February") { return y._2.tag === "February"; } + if (x._2.tag === "March") { return y._2.tag === "March"; } + if (x._2.tag === "April") { return y._2.tag === "April"; } + if (x._2.tag === "May") { return y._2.tag === "May"; } + if (x._2.tag === "June") { return y._2.tag === "June"; } + if (x._2.tag === "July") { return y._2.tag === "July"; } + if (x._2.tag === "August") { return y._2.tag === "August"; } + if (x._2.tag === "September") { return y._2.tag === "September"; } + if (x._2.tag === "October") { return y._2.tag === "October"; } + if (x._2.tag === "November") { return y._2.tag === "November"; } + if (x._2.tag === "December") { return y._2.tag === "December"; } + return false; + })() && x._3 === y._3 +}; +const ordDate = { + compare: x => y => { + const v = Data$dOrd.ordInt.compare(x._1)(y._1); + if (v.tag === "LT") { return Data$dOrdering.LT; } + if (v.tag === "GT") { return Data$dOrdering.GT; } + const v1 = Data$dDate$dComponent.ordMonth.compare(x._2)(y._2); + if (v1.tag === "LT") { return Data$dOrdering.LT; } + if (v1.tag === "GT") { return Data$dOrdering.GT; } + return Data$dOrd.ordInt.compare(x._3)(y._3); + }, + Eq0: () => eqDate +}; +const enumDate = { + succ: v => { + const sm = Data$dDate$dComponent.enumMonth.succ(v._2); + const $2 = v._3 + 1 | 0; + const v1 = (() => { + if ($2 >= 1 && $2 <= 31) { return Data$dMaybe.$Maybe("Just", $2); } + return Data$dMaybe.Nothing; + })(); + const sd = (() => { + if (greaterThan(v1)(Data$dMaybe.$Maybe("Just", lastDayOfMonth(v._1)(v._2)))) { return Data$dMaybe.Nothing; } + return v1; + })(); + return Data$dMaybe.applyMaybe.apply(Data$dMaybe.applyMaybe.apply((() => { + if ( + (() => { + if (sd.tag === "Nothing") { return true; } + if (sd.tag === "Just") { return false; } + $runtime.fail(); + })() && (() => { + if (sm.tag === "Nothing") { return true; } + if (sm.tag === "Just") { return false; } + $runtime.fail(); + })() + ) { + const $5 = v._1 + 1 | 0; + if ($5 >= -271820 && $5 <= 275759) { return Data$dMaybe.$Maybe("Just", $$Date($5)); } + return Data$dMaybe.Nothing; + } + return Data$dMaybe.$Maybe("Just", $$Date(v._1)); + })())(Data$dMaybe.$Maybe( + "Just", + (() => { + if ( + (() => { + if (sd.tag === "Nothing") { return true; } + if (sd.tag === "Just") { return false; } + $runtime.fail(); + })() + ) { + if (sm.tag === "Nothing") { return Data$dDate$dComponent.January; } + if (sm.tag === "Just") { return sm._1; } + $runtime.fail(); + } + return v._2; + })() + )))((() => { + if ( + (() => { + if (sd.tag === "Nothing") { return true; } + if (sd.tag === "Just") { return false; } + $runtime.fail(); + })() + ) { + return Data$dMaybe.$Maybe("Just", 1); + } + return sd; + })()); + }, + pred: v => { + const pm = Data$dDate$dComponent.enumMonth.pred(v._2); + const $2 = v._3 - 1 | 0; + const pd = (() => { + if ($2 >= 1 && $2 <= 31) { return Data$dMaybe.$Maybe("Just", $2); } + return Data$dMaybe.Nothing; + })(); + const m$p = (() => { + if ( + (() => { + if (pd.tag === "Nothing") { return true; } + if (pd.tag === "Just") { return false; } + $runtime.fail(); + })() + ) { + if (pm.tag === "Nothing") { return Data$dDate$dComponent.December; } + if (pm.tag === "Just") { return pm._1; } + $runtime.fail(); + } + return v._2; + })(); + const l = lastDayOfMonth(v._1)(m$p); + return Data$dMaybe.applyMaybe.apply(Data$dMaybe.applyMaybe.apply((() => { + if ( + (() => { + if (pd.tag === "Nothing") { return true; } + if (pd.tag === "Just") { return false; } + $runtime.fail(); + })() && (() => { + if (pm.tag === "Nothing") { return true; } + if (pm.tag === "Just") { return false; } + $runtime.fail(); + })() + ) { + const $6 = v._1 - 1 | 0; + if ($6 >= -271820 && $6 <= 275759) { return Data$dMaybe.$Maybe("Just", $$Date($6)); } + return Data$dMaybe.Nothing; + } + return Data$dMaybe.$Maybe("Just", $$Date(v._1)); + })())(Data$dMaybe.$Maybe("Just", m$p)))((() => { + if ( + (() => { + if (pd.tag === "Nothing") { return true; } + if (pd.tag === "Just") { return false; } + $runtime.fail(); + })() + ) { + return Data$dMaybe.$Maybe("Just", l); + } + return pd; + })()); + }, + Ord0: () => ordDate +}; +const diff = dictDuration => v => v1 => dictDuration.toDuration(calcDiff( + v._1, + (() => { + if (v._2.tag === "January") { return 1; } + if (v._2.tag === "February") { return 2; } + if (v._2.tag === "March") { return 3; } + if (v._2.tag === "April") { return 4; } + if (v._2.tag === "May") { return 5; } + if (v._2.tag === "June") { return 6; } + if (v._2.tag === "July") { return 7; } + if (v._2.tag === "August") { return 8; } + if (v._2.tag === "September") { return 9; } + if (v._2.tag === "October") { return 10; } + if (v._2.tag === "November") { return 11; } + if (v._2.tag === "December") { return 12; } + $runtime.fail(); + })(), + v._3, + v1._1, + (() => { + if (v1._2.tag === "January") { return 1; } + if (v1._2.tag === "February") { return 2; } + if (v1._2.tag === "March") { return 3; } + if (v1._2.tag === "April") { return 4; } + if (v1._2.tag === "May") { return 5; } + if (v1._2.tag === "June") { return 6; } + if (v1._2.tag === "July") { return 7; } + if (v1._2.tag === "August") { return 8; } + if (v1._2.tag === "September") { return 9; } + if (v1._2.tag === "October") { return 10; } + if (v1._2.tag === "November") { return 11; } + if (v1._2.tag === "December") { return 12; } + $runtime.fail(); + })(), + v1._3 +)); +const day = v => v._3; +const canonicalDate = y => m => d => canonicalDateImpl( + y$p => m$p => d$p => $Date( + y$p, + (() => { + const $6 = Data$dDate$dComponent.boundedEnumMonth.toEnum(m$p); + if ($6.tag === "Just") { return $6._1; } + $runtime.fail(); + })(), + d$p + ), + y, + (() => { + if (m.tag === "January") { return 1; } + if (m.tag === "February") { return 2; } + if (m.tag === "March") { return 3; } + if (m.tag === "April") { return 4; } + if (m.tag === "May") { return 5; } + if (m.tag === "June") { return 6; } + if (m.tag === "July") { return 7; } + if (m.tag === "August") { return 8; } + if (m.tag === "September") { return 9; } + if (m.tag === "October") { return 10; } + if (m.tag === "November") { return 11; } + if (m.tag === "December") { return 12; } + $runtime.fail(); + })(), + d +); +const exactDate = y => m => d => { + if (eqDate.eq(canonicalDate(y)(m)(d))($Date(y, m, d))) { return Data$dMaybe.$Maybe("Just", $Date(y, m, d)); } + return Data$dMaybe.Nothing; +}; +const boundedDate = { + bottom: /* #__PURE__ */ $Date(-271820, Data$dDate$dComponent.January, 1), + top: /* #__PURE__ */ $Date(275759, Data$dDate$dComponent.December, 31), + Ord0: () => ordDate +}; +const adjust = v => date => { + const adj = v1 => v2 => { + if (v1 === 0) { return Data$dMaybe.$Maybe("Just", v2); } + const j = v1 + v2._3 | 0; + const low = j < 1; + const l = lastDayOfMonth(v2._1)((() => { + if (low) { + const $7 = Data$dDate$dComponent.enumMonth.pred(v2._2); + if ($7.tag === "Nothing") { return Data$dDate$dComponent.December; } + if ($7.tag === "Just") { return $7._1; } + $runtime.fail(); + } + return v2._2; + })()); + const hi = j > l; + const $9 = adj((() => { + if (low) { return j; } + if (hi) { return (j - l | 0) - 1 | 0; } + return 0; + })()); + const $10 = (() => { + if (low) { return enumDate.pred($Date(v2._1, v2._2, 1)); } + if (hi) { return enumDate.succ($Date(v2._1, v2._2, l)); } + const $10 = $$Date(v2._1)(v2._2); + if (j >= 1 && j <= 31) { return Data$dMaybe.$Maybe("Just", $10(j)); } + return Data$dMaybe.Nothing; + })(); + if ($10.tag === "Just") { return $9($10._1); } + if ($10.tag === "Nothing") { return Data$dMaybe.Nothing; } + $runtime.fail(); + }; + const $3 = Data$dInt.fromNumber(v); + if ($3.tag === "Just") { return adj($3._1)(date); } + if ($3.tag === "Nothing") { return Data$dMaybe.Nothing; } + $runtime.fail(); +}; +export { + $Date, + $$Date as Date, + adjust, + boundedDate, + canonicalDate, + day, + diff, + enumDate, + eqDate, + exactDate, + greaterThan, + isLeapYear, + lastDayOfMonth, + month, + ordDate, + showDate, + weekday, + year +}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Data.DateTime.Gen/index.js b/.storybook/purescript-indexer/output-es/Data.DateTime.Gen/index.js new file mode 100644 index 0000000..2d377f2 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.DateTime.Gen/index.js @@ -0,0 +1,9 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dDate$dGen from "../Data.Date.Gen/index.js"; +import * as Data$dDateTime from "../Data.DateTime/index.js"; +import * as Data$dTime$dGen from "../Data.Time.Gen/index.js"; +const genDateTime = dictMonadGen => { + const Apply0 = dictMonadGen.Monad0().Bind1().Apply0(); + return Apply0.apply(Apply0.Functor0().map(Data$dDateTime.DateTime)(Data$dDate$dGen.genDate(dictMonadGen)))(Data$dTime$dGen.genTime(dictMonadGen)); +}; +export {genDateTime}; diff --git a/.storybook/purescript-indexer/output-es/Data.DateTime.Instant/foreign.js b/.storybook/purescript-indexer/output-es/Data.DateTime.Instant/foreign.js new file mode 100644 index 0000000..c016c34 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.DateTime.Instant/foreign.js @@ -0,0 +1,18 @@ +var createDateTime = function (y, m, d, h, mi, s, ms) { + var dateTime = new Date(Date.UTC(y, m, d, h, mi, s, ms)); + if (y >= 0 && y < 100) { + dateTime.setUTCFullYear(y); + } + return dateTime; +}; + +export function fromDateTimeImpl(y, mo, d, h, mi, s, ms) { + return createDateTime(y, mo - 1, d, h, mi, s, ms).getTime(); +} + +export function toDateTimeImpl(ctor) { + return function (instant) { + var dt = new Date(instant); + return ctor (dt.getUTCFullYear())(dt.getUTCMonth() + 1)(dt.getUTCDate())(dt.getUTCHours())(dt.getUTCMinutes())(dt.getUTCSeconds())(dt.getUTCMilliseconds()); + }; +} diff --git a/.storybook/purescript-indexer/output-es/Data.DateTime.Instant/index.js b/.storybook/purescript-indexer/output-es/Data.DateTime.Instant/index.js new file mode 100644 index 0000000..56e406e --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.DateTime.Instant/index.js @@ -0,0 +1,76 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dDate from "../Data.Date/index.js"; +import * as Data$dDate$dComponent from "../Data.Date.Component/index.js"; +import * as Data$dDateTime from "../Data.DateTime/index.js"; +import * as Data$dEq from "../Data.Eq/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dOrd from "../Data.Ord/index.js"; +import * as Data$dShow from "../Data.Show/index.js"; +import * as Data$dTime from "../Data.Time/index.js"; +import {fromDateTimeImpl, toDateTimeImpl} from "./foreign.js"; +const unInstant = v => v; +const toDateTime = /* #__PURE__ */ toDateTimeImpl(y => mo => d => h => mi => s => ms => Data$dDateTime.$DateTime( + Data$dDate.canonicalDate(y)((() => { + const $7 = Data$dDate$dComponent.boundedEnumMonth.toEnum(mo); + if ($7.tag === "Just") { return $7._1; } + $runtime.fail(); + })())(d), + Data$dTime.$Time(h, mi, s, ms) +)); +const showInstant = {show: v => "(Instant (Milliseconds " + Data$dShow.showNumberImpl(v) + "))"}; +const ordDateTime = Data$dOrd.ordNumber; +const instant = v => { + if (v >= -8639977881600000.0 && v <= 8639977881599999.0) { return Data$dMaybe.$Maybe("Just", v); } + return Data$dMaybe.Nothing; +}; +const fromDateTime = v => fromDateTimeImpl( + v._1._1, + (() => { + if (v._1._2.tag === "January") { return 1; } + if (v._1._2.tag === "February") { return 2; } + if (v._1._2.tag === "March") { return 3; } + if (v._1._2.tag === "April") { return 4; } + if (v._1._2.tag === "May") { return 5; } + if (v._1._2.tag === "June") { return 6; } + if (v._1._2.tag === "July") { return 7; } + if (v._1._2.tag === "August") { return 8; } + if (v._1._2.tag === "September") { return 9; } + if (v._1._2.tag === "October") { return 10; } + if (v._1._2.tag === "November") { return 11; } + if (v._1._2.tag === "December") { return 12; } + $runtime.fail(); + })(), + v._1._3, + v._2._1, + v._2._2, + v._2._3, + v._2._4 +); +const fromDate = d => fromDateTimeImpl( + d._1, + (() => { + if (d._2.tag === "January") { return 1; } + if (d._2.tag === "February") { return 2; } + if (d._2.tag === "March") { return 3; } + if (d._2.tag === "April") { return 4; } + if (d._2.tag === "May") { return 5; } + if (d._2.tag === "June") { return 6; } + if (d._2.tag === "July") { return 7; } + if (d._2.tag === "August") { return 8; } + if (d._2.tag === "September") { return 9; } + if (d._2.tag === "October") { return 10; } + if (d._2.tag === "November") { return 11; } + if (d._2.tag === "December") { return 12; } + $runtime.fail(); + })(), + d._3, + 0, + 0, + 0, + 0 +); +const eqDateTime = Data$dEq.eqNumber; +const diff = dictDuration => dt1 => dt2 => dictDuration.toDuration(dt1 + -dt2); +const boundedInstant = {bottom: -8639977881600000.0, top: 8639977881599999.0, Ord0: () => Data$dOrd.ordNumber}; +export {boundedInstant, diff, eqDateTime, fromDate, fromDateTime, instant, ordDateTime, showInstant, toDateTime, unInstant}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Data.DateTime/foreign.js b/.storybook/purescript-indexer/output-es/Data.DateTime/foreign.js new file mode 100644 index 0000000..86578b7 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.DateTime/foreign.js @@ -0,0 +1,33 @@ +var createUTC = function (y, mo, d, h, m, s, ms) { + var date = new Date(Date.UTC(y, mo, d, h, m, s, ms)); + if (y >= 0 && y < 100) { + date.setUTCFullYear(y); + } + return date.getTime(); +}; + +export function calcDiff(rec1, rec2) { + var msUTC1 = createUTC(rec1.year, rec1.month - 1, rec1.day, rec1.hour, rec1.minute, rec1.second, rec1.millisecond); + var msUTC2 = createUTC(rec2.year, rec2.month - 1, rec2.day, rec2.hour, rec2.minute, rec2.second, rec2.millisecond); + return msUTC1 - msUTC2; +} + +export function adjustImpl(just) { + return function (nothing) { + return function (offset) { + return function (rec) { + var msUTC = createUTC(rec.year, rec.month - 1, rec.day, rec.hour, rec.minute, rec.second, rec.millisecond); + var dt = new Date(msUTC + offset); + return isNaN(dt.getTime()) ? nothing : just({ + year: dt.getUTCFullYear(), + month: dt.getUTCMonth() + 1, + day: dt.getUTCDate(), + hour: dt.getUTCHours(), + minute: dt.getUTCMinutes(), + second: dt.getUTCSeconds(), + millisecond: dt.getUTCMilliseconds() + }); + }; + }; + }; +} diff --git a/.storybook/purescript-indexer/output-es/Data.DateTime/index.js b/.storybook/purescript-indexer/output-es/Data.DateTime/index.js new file mode 100644 index 0000000..7bf8624 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.DateTime/index.js @@ -0,0 +1,94 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dDate from "../Data.Date/index.js"; +import * as Data$dDate$dComponent from "../Data.Date.Component/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dOrdering from "../Data.Ordering/index.js"; +import * as Data$dTime from "../Data.Time/index.js"; +import {adjustImpl, calcDiff} from "./foreign.js"; +const $DateTime = (_1, _2) => ({tag: "DateTime", _1, _2}); +const DateTime = value0 => value1 => $DateTime(value0, value1); +const toRecord = v => ( + { + year: v._1._1, + month: (() => { + if (v._1._2.tag === "January") { return 1; } + if (v._1._2.tag === "February") { return 2; } + if (v._1._2.tag === "March") { return 3; } + if (v._1._2.tag === "April") { return 4; } + if (v._1._2.tag === "May") { return 5; } + if (v._1._2.tag === "June") { return 6; } + if (v._1._2.tag === "July") { return 7; } + if (v._1._2.tag === "August") { return 8; } + if (v._1._2.tag === "September") { return 9; } + if (v._1._2.tag === "October") { return 10; } + if (v._1._2.tag === "November") { return 11; } + if (v._1._2.tag === "December") { return 12; } + $runtime.fail(); + })(), + day: v._1._3, + hour: v._2._1, + minute: v._2._2, + second: v._2._3, + millisecond: v._2._4 + } +); +const time = v => v._2; +const showDateTime = {show: v => "(DateTime " + (Data$dDate.showDate.show(v._1) + (" " + (Data$dTime.showTime.show(v._2) + ")")))}; +const modifyTimeF = dictFunctor => f => v => dictFunctor.map(DateTime(v._1))(f(v._2)); +const modifyTime = f => v => $DateTime(v._1, f(v._2)); +const modifyDateF = dictFunctor => f => v => dictFunctor.map(a => $DateTime(a, v._2))(f(v._1)); +const modifyDate = f => v => $DateTime(f(v._1), v._2); +const eqDateTime = {eq: x => y => Data$dDate.eqDate.eq(x._1)(y._1) && (x._2._1 === y._2._1 && x._2._2 === y._2._2 && x._2._3 === y._2._3 && x._2._4 === y._2._4)}; +const ordDateTime = { + compare: x => y => { + const v = Data$dDate.ordDate.compare(x._1)(y._1); + if (v.tag === "LT") { return Data$dOrdering.LT; } + if (v.tag === "GT") { return Data$dOrdering.GT; } + return Data$dTime.ordTime.compare(x._2)(y._2); + }, + Eq0: () => eqDateTime +}; +const diff = dictDuration => dt1 => dt2 => dictDuration.toDuration(calcDiff(toRecord(dt1), toRecord(dt2))); +const date = v => v._1; +const boundedDateTime = { + bottom: /* #__PURE__ */ $DateTime(/* #__PURE__ */ Data$dDate.$Date(-271820, Data$dDate$dComponent.January, 1), /* #__PURE__ */ Data$dTime.$Time(0, 0, 0, 0)), + top: /* #__PURE__ */ $DateTime(/* #__PURE__ */ Data$dDate.$Date(275759, Data$dDate$dComponent.December, 31), /* #__PURE__ */ Data$dTime.$Time(23, 59, 59, 999)), + Ord0: () => ordDateTime +}; +const adjust = dictDuration => d => dt => { + const $3 = adjustImpl(Data$dMaybe.Just)(Data$dMaybe.Nothing)(dictDuration.fromDuration(d))(toRecord(dt)); + if ($3.tag === "Just") { + return Data$dMaybe.applyMaybe.apply((() => { + const $4 = Data$dMaybe.applyMaybe.apply(Data$dMaybe.applyMaybe.apply((() => { + if ($3._1.year >= -271820 && $3._1.year <= 275759) { return Data$dMaybe.$Maybe("Just", Data$dDate.exactDate($3._1.year)); } + return Data$dMaybe.Nothing; + })())(Data$dDate$dComponent.boundedEnumMonth.toEnum($3._1.month)))((() => { + if ($3._1.day >= 1 && $3._1.day <= 31) { return Data$dMaybe.$Maybe("Just", $3._1.day); } + return Data$dMaybe.Nothing; + })()); + const $5 = (() => { + if ($4.tag === "Just") { return $4._1; } + if ($4.tag === "Nothing") { return Data$dMaybe.Nothing; } + $runtime.fail(); + })(); + if ($5.tag === "Just") { return Data$dMaybe.$Maybe("Just", DateTime($5._1)); } + return Data$dMaybe.Nothing; + })())(Data$dMaybe.applyMaybe.apply(Data$dMaybe.applyMaybe.apply(Data$dMaybe.applyMaybe.apply((() => { + if ($3._1.hour >= 0 && $3._1.hour <= 23) { return Data$dMaybe.$Maybe("Just", Data$dTime.Time($3._1.hour)); } + return Data$dMaybe.Nothing; + })())((() => { + if ($3._1.minute >= 0 && $3._1.minute <= 59) { return Data$dMaybe.$Maybe("Just", $3._1.minute); } + return Data$dMaybe.Nothing; + })()))((() => { + if ($3._1.second >= 0 && $3._1.second <= 59) { return Data$dMaybe.$Maybe("Just", $3._1.second); } + return Data$dMaybe.Nothing; + })()))((() => { + if ($3._1.millisecond >= 0 && $3._1.millisecond <= 999) { return Data$dMaybe.$Maybe("Just", $3._1.millisecond); } + return Data$dMaybe.Nothing; + })())); + } + if ($3.tag === "Nothing") { return Data$dMaybe.Nothing; } + $runtime.fail(); +}; +export {$DateTime, DateTime, adjust, boundedDateTime, date, diff, eqDateTime, modifyDate, modifyDateF, modifyTime, modifyTimeF, ordDateTime, showDateTime, time, toRecord}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Data.Decidable/index.js b/.storybook/purescript-indexer/output-es/Data.Decidable/index.js new file mode 100644 index 0000000..559e433 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Decidable/index.js @@ -0,0 +1,75 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dDecide from "../Data.Decide/index.js"; +import * as Data$dDivisible from "../Data.Divisible/index.js"; +const identity = x => x; +const lose = dict => dict.lose; +const lost = dictDecidable => dictDecidable.lose(identity); +const decidablePredicate = { + lose: f => 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; + continue; + }; + return spin$r; + }; + return spin(f(a)); + }, + Decide0: () => Data$dDecide.choosePredicate, + Divisible1: () => Data$dDivisible.divisiblePredicate +}; +const decidableOp = dictMonoid => { + const chooseOp = Data$dDecide.chooseOp(dictMonoid.Semigroup0()); + const divisibleOp = Data$dDivisible.divisibleOp(dictMonoid); + return { + lose: f => 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; + continue; + }; + return spin$r; + }; + return spin(f(a)); + }, + Decide0: () => chooseOp, + Divisible1: () => divisibleOp + }; +}; +const decidableEquivalence = { + lose: f => 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; + continue; + }; + return spin$r; + }; + return spin(f(a)); + }, + Decide0: () => Data$dDecide.chooseEquivalence, + Divisible1: () => Data$dDivisible.divisibleEquivalence +}; +const decidableComparison = { + lose: f => a => v => { + const spin = spin$a0$copy => { + let spin$a0 = spin$a0$copy, spin$c = true, spin$r; + while (spin$c) { + const v$1 = spin$a0; + spin$a0 = v$1; + continue; + }; + return spin$r; + }; + return spin(f(a)); + }, + Decide0: () => Data$dDecide.chooseComparison, + Divisible1: () => Data$dDivisible.divisibleComparison +}; +export {decidableComparison, decidableEquivalence, decidableOp, decidablePredicate, identity, lose, lost}; diff --git a/.storybook/purescript-indexer/output-es/Data.Decide/index.js b/.storybook/purescript-indexer/output-es/Data.Decide/index.js new file mode 100644 index 0000000..909f1a9 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Decide/index.js @@ -0,0 +1,66 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dDivide from "../Data.Divide/index.js"; +import * as Data$dOrdering from "../Data.Ordering/index.js"; +const identity = x => x; +const choosePredicate = { + choose: f => v => v1 => x => { + const $4 = f(x); + if ($4.tag === "Left") { return v($4._1); } + if ($4.tag === "Right") { return v1($4._1); } + $runtime.fail(); + }, + Divide0: () => Data$dDivide.dividePredicate +}; +const chooseOp = dictSemigroup => { + const divideOp = Data$dDivide.divideOp(dictSemigroup); + return { + choose: f => v => v1 => x => { + const $6 = f(x); + if ($6.tag === "Left") { return v($6._1); } + if ($6.tag === "Right") { return v1($6._1); } + $runtime.fail(); + }, + Divide0: () => divideOp + }; +}; +const chooseEquivalence = { + choose: f => v => v1 => a => b => { + const v2 = f(a); + if (v2.tag === "Left") { + const v3 = f(b); + if (v3.tag === "Left") { return v(v2._1)(v3._1); } + if (v3.tag === "Right") { return false; } + $runtime.fail(); + } + if (v2.tag === "Right") { + const v3 = f(b); + if (v3.tag === "Left") { return false; } + if (v3.tag === "Right") { return v1(v2._1)(v3._1); } + $runtime.fail(); + } + $runtime.fail(); + }, + Divide0: () => Data$dDivide.divideEquivalence +}; +const chooseComparison = { + choose: f => v => v1 => a => b => { + const v2 = f(a); + if (v2.tag === "Left") { + const v3 = f(b); + if (v3.tag === "Left") { return v(v2._1)(v3._1); } + if (v3.tag === "Right") { return Data$dOrdering.LT; } + $runtime.fail(); + } + if (v2.tag === "Right") { + const v3 = f(b); + if (v3.tag === "Left") { return Data$dOrdering.GT; } + if (v3.tag === "Right") { return v1(v2._1)(v3._1); } + $runtime.fail(); + } + $runtime.fail(); + }, + Divide0: () => Data$dDivide.divideComparison +}; +const choose = dict => dict.choose; +const chosen = dictDecide => dictDecide.choose(identity); +export {choose, chooseComparison, chooseEquivalence, chooseOp, choosePredicate, chosen, identity}; diff --git a/.storybook/purescript-indexer/output-es/Data.Distributive/index.js b/.storybook/purescript-indexer/output-es/Data.Distributive/index.js new file mode 100644 index 0000000..573f26f --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Distributive/index.js @@ -0,0 +1,60 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dFunctor from "../Data.Functor/index.js"; +import * as Data$dIdentity from "../Data.Identity/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +import * as Unsafe$dCoerce from "../Unsafe.Coerce/index.js"; +const identity = x => x; +const distributiveIdentity = { + distribute: dictFunctor => dictFunctor.map(Unsafe$dCoerce.unsafeCoerce), + collect: dictFunctor => f => dictFunctor.map(x => f(x)), + Functor0: () => Data$dIdentity.functorIdentity +}; +const distribute = dict => dict.distribute; +const distributiveFunction = { + distribute: dictFunctor => a => e => dictFunctor.map(v => v(e))(a), + collect: dictFunctor => f => { + const $2 = distributiveFunction.distribute(dictFunctor); + const $3 = dictFunctor.map(f); + return x => $2($3(x)); + }, + Functor0: () => Data$dFunctor.functorFn +}; +const cotraverse = dictDistributive => { + const map = dictDistributive.Functor0().map; + return dictFunctor => { + const distribute2 = dictDistributive.distribute(dictFunctor); + return f => { + const $5 = map(f); + return x => $5(distribute2(x)); + }; + }; +}; +const collectDefault = dictDistributive => dictFunctor => { + const distribute2 = dictDistributive.distribute(dictFunctor); + return f => { + const $4 = dictFunctor.map(f); + return x => distribute2($4(x)); + }; +}; +const distributiveTuple = dictTypeEquals => { + const from = dictTypeEquals.proof(a => a); + return { + collect: dictFunctor => { + const distribute2 = distributiveTuple(dictTypeEquals).distribute(dictFunctor); + return f => { + const $5 = dictFunctor.map(f); + return x => distribute2($5(x)); + }; + }, + distribute: dictFunctor => { + const $3 = Data$dTuple.Tuple(from(Data$dUnit.unit)); + const $4 = dictFunctor.map(Data$dTuple.snd); + return x => $3($4(x)); + }, + Functor0: () => Data$dTuple.functorTuple + }; +}; +const collect = dict => dict.collect; +const distributeDefault = dictDistributive => dictFunctor => dictDistributive.collect(dictFunctor)(identity); +export {collect, collectDefault, cotraverse, distribute, distributeDefault, distributiveFunction, distributiveIdentity, distributiveTuple, identity}; diff --git a/.storybook/purescript-indexer/output-es/Data.Divide/index.js b/.storybook/purescript-indexer/output-es/Data.Divide/index.js new file mode 100644 index 0000000..4914229 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Divide/index.js @@ -0,0 +1,47 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dComparison from "../Data.Comparison/index.js"; +import * as Data$dEquivalence from "../Data.Equivalence/index.js"; +import * as Data$dOp from "../Data.Op/index.js"; +import * as Data$dOrdering from "../Data.Ordering/index.js"; +import * as Data$dPredicate from "../Data.Predicate/index.js"; +const identity = x => x; +const dividePredicate = { + divide: f => v => v1 => a => { + const v2 = f(a); + return v(v2._1) && v1(v2._2); + }, + Contravariant0: () => Data$dPredicate.contravariantPredicate +}; +const divideOp = dictSemigroup => ( + { + divide: f => v => v1 => a => { + const v2 = f(a); + return dictSemigroup.append(v(v2._1))(v1(v2._2)); + }, + Contravariant0: () => Data$dOp.contravariantOp + } +); +const divideEquivalence = { + divide: f => v => v1 => a => b => { + const v2 = f(a); + const v3 = f(b); + return v(v2._1)(v3._1) && v1(v2._2)(v3._2); + }, + Contravariant0: () => Data$dEquivalence.contravariantEquivalence +}; +const divideComparison = { + divide: f => v => v1 => a => b => { + const v2 = f(a); + const v3 = f(b); + const $7 = v(v2._1)(v3._1); + const $8 = v1(v2._2)(v3._2); + if ($7.tag === "LT") { return Data$dOrdering.LT; } + if ($7.tag === "GT") { return Data$dOrdering.GT; } + if ($7.tag === "EQ") { return $8; } + $runtime.fail(); + }, + Contravariant0: () => Data$dComparison.contravariantComparison +}; +const divide = dict => dict.divide; +const divided = dictDivide => dictDivide.divide(identity); +export {divide, divideComparison, divideEquivalence, divideOp, dividePredicate, divided, identity}; diff --git a/.storybook/purescript-indexer/output-es/Data.Divisible/index.js b/.storybook/purescript-indexer/output-es/Data.Divisible/index.js new file mode 100644 index 0000000..e9bd71c --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Divisible/index.js @@ -0,0 +1,12 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dDivide from "../Data.Divide/index.js"; +import * as Data$dOrdering from "../Data.Ordering/index.js"; +const divisiblePredicate = {conquer: v => true, Divide0: () => Data$dDivide.dividePredicate}; +const divisibleOp = dictMonoid => { + const divideOp = Data$dDivide.divideOp(dictMonoid.Semigroup0()); + return {conquer: v => dictMonoid.mempty, Divide0: () => divideOp}; +}; +const divisibleEquivalence = {conquer: v => v1 => true, Divide0: () => Data$dDivide.divideEquivalence}; +const divisibleComparison = {conquer: v => v1 => Data$dOrdering.EQ, Divide0: () => Data$dDivide.divideComparison}; +const conquer = dict => dict.conquer; +export {conquer, divisibleComparison, divisibleEquivalence, divisibleOp, divisiblePredicate}; diff --git a/.storybook/purescript-indexer/output-es/Data.DivisionRing/index.js b/.storybook/purescript-indexer/output-es/Data.DivisionRing/index.js new file mode 100644 index 0000000..700f4ff --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.DivisionRing/index.js @@ -0,0 +1,13 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dRing from "../Data.Ring/index.js"; +const recip = dict => dict.recip; +const rightDiv = dictDivisionRing => { + const mul = dictDivisionRing.Ring0().Semiring0().mul; + return a => b => mul(a)(dictDivisionRing.recip(b)); +}; +const leftDiv = dictDivisionRing => { + const mul = dictDivisionRing.Ring0().Semiring0().mul; + return a => b => mul(dictDivisionRing.recip(b))(a); +}; +const divisionringNumber = {recip: x => 1.0 / x, Ring0: () => Data$dRing.ringNumber}; +export {divisionringNumber, leftDiv, recip, rightDiv}; diff --git a/.storybook/purescript-indexer/output-es/Data.Either.Inject/index.js b/.storybook/purescript-indexer/output-es/Data.Either.Inject/index.js new file mode 100644 index 0000000..1bf69dc --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Either.Inject/index.js @@ -0,0 +1,25 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dEither from "../Data.Either/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +const prj = dict => dict.prj; +const injectReflexive = {inj: x => x, prj: Data$dMaybe.Just}; +const injectLeft = { + inj: Data$dEither.Left, + prj: v2 => { + if (v2.tag === "Left") { return Data$dMaybe.$Maybe("Just", v2._1); } + if (v2.tag === "Right") { return Data$dMaybe.Nothing; } + $runtime.fail(); + } +}; +const inj = dict => dict.inj; +const injectRight = dictInject => ( + { + inj: x => Data$dEither.$Either("Right", dictInject.inj(x)), + prj: v2 => { + if (v2.tag === "Left") { return Data$dMaybe.Nothing; } + if (v2.tag === "Right") { return dictInject.prj(v2._1); } + $runtime.fail(); + } + } +); +export {inj, injectLeft, injectReflexive, injectRight, prj}; diff --git a/.storybook/purescript-indexer/output-es/Data.Either.Nested/index.js b/.storybook/purescript-indexer/output-es/Data.Either.Nested/index.js new file mode 100644 index 0000000..3f70719 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Either.Nested/index.js @@ -0,0 +1,622 @@ +// | Utilities for n-eithers: sums types with more than two terms built from nested eithers. +// | +// | Nested eithers arise naturally in sum combinators. You shouldn't +// | represent sum data using nested eithers, but if combinators you're working with +// | create them, utilities in this module will allow to to more easily work +// | with them, including translating to and from more traditional sum types. +// | +// | ```purescript +// | data Color = Red Number | Green Number | Blue Number +// | +// | fromEither3 :: Either3 Number Number Number -> Color +// | fromEither3 = either3 Red Green Blue +// | +// | toEither3 :: Color -> Either3 Number Number Number +// | toEither3 (Red v) = in1 v +// | toEither3 (Green v) = in2 v +// | toEither3 (Blue v) = in3 v +// | ``` +import * as $runtime from "../runtime.js"; +import * as Data$dEither from "../Data.Either/index.js"; +const in9 = v => Data$dEither.$Either( + "Right", + Data$dEither.$Either( + "Right", + Data$dEither.$Either( + "Right", + Data$dEither.$Either( + "Right", + Data$dEither.$Either("Right", Data$dEither.$Either("Right", Data$dEither.$Either("Right", Data$dEither.$Either("Right", Data$dEither.$Either("Left", v))))) + ) + ) + ) +); +const in8 = v => Data$dEither.$Either( + "Right", + Data$dEither.$Either( + "Right", + Data$dEither.$Either( + "Right", + Data$dEither.$Either("Right", Data$dEither.$Either("Right", Data$dEither.$Either("Right", Data$dEither.$Either("Right", Data$dEither.$Either("Left", v))))) + ) + ) +); +const in7 = v => Data$dEither.$Either( + "Right", + Data$dEither.$Either( + "Right", + Data$dEither.$Either("Right", Data$dEither.$Either("Right", Data$dEither.$Either("Right", Data$dEither.$Either("Right", Data$dEither.$Either("Left", v))))) + ) +); +const in6 = v => Data$dEither.$Either( + "Right", + Data$dEither.$Either("Right", Data$dEither.$Either("Right", Data$dEither.$Either("Right", Data$dEither.$Either("Right", Data$dEither.$Either("Left", v))))) +); +const in5 = v => Data$dEither.$Either("Right", Data$dEither.$Either("Right", Data$dEither.$Either("Right", Data$dEither.$Either("Right", Data$dEither.$Either("Left", v))))); +const in4 = v => Data$dEither.$Either("Right", Data$dEither.$Either("Right", Data$dEither.$Either("Right", Data$dEither.$Either("Left", v)))); +const in3 = v => Data$dEither.$Either("Right", Data$dEither.$Either("Right", Data$dEither.$Either("Left", v))); +const in2 = v => Data$dEither.$Either("Right", Data$dEither.$Either("Left", v)); +const in10 = v => Data$dEither.$Either( + "Right", + Data$dEither.$Either( + "Right", + Data$dEither.$Either( + "Right", + Data$dEither.$Either( + "Right", + Data$dEither.$Either( + "Right", + Data$dEither.$Either("Right", Data$dEither.$Either("Right", Data$dEither.$Either("Right", Data$dEither.$Either("Right", Data$dEither.$Either("Left", v))))) + ) + ) + ) + ) +); +const in1 = Data$dEither.Left; +const either9 = a => b => c => d => e => f => g => h => i => y => { + if (y.tag === "Left") { return a(y._1); } + if (y.tag === "Right") { + if (y._1.tag === "Left") { return b(y._1._1); } + if (y._1.tag === "Right") { + if (y._1._1.tag === "Left") { return c(y._1._1._1); } + if (y._1._1.tag === "Right") { + if (y._1._1._1.tag === "Left") { return d(y._1._1._1._1); } + if (y._1._1._1.tag === "Right") { + if (y._1._1._1._1.tag === "Left") { return e(y._1._1._1._1._1); } + if (y._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1.tag === "Left") { return f(y._1._1._1._1._1._1); } + if (y._1._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1._1.tag === "Left") { return g(y._1._1._1._1._1._1._1); } + if (y._1._1._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1._1._1.tag === "Left") { return h(y._1._1._1._1._1._1._1._1); } + if (y._1._1._1._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1._1._1._1.tag === "Left") { return i(y._1._1._1._1._1._1._1._1._1); } + if (y._1._1._1._1._1._1._1._1.tag === "Right") { + 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; + continue; + }; + return spin$r; + }; + return spin(y._1._1._1._1._1._1._1._1._1); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); +}; +const either8 = a => b => c => d => e => f => g => h => y => { + if (y.tag === "Left") { return a(y._1); } + if (y.tag === "Right") { + if (y._1.tag === "Left") { return b(y._1._1); } + if (y._1.tag === "Right") { + if (y._1._1.tag === "Left") { return c(y._1._1._1); } + if (y._1._1.tag === "Right") { + if (y._1._1._1.tag === "Left") { return d(y._1._1._1._1); } + if (y._1._1._1.tag === "Right") { + if (y._1._1._1._1.tag === "Left") { return e(y._1._1._1._1._1); } + if (y._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1.tag === "Left") { return f(y._1._1._1._1._1._1); } + if (y._1._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1._1.tag === "Left") { return g(y._1._1._1._1._1._1._1); } + if (y._1._1._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1._1._1.tag === "Left") { return h(y._1._1._1._1._1._1._1._1); } + if (y._1._1._1._1._1._1._1.tag === "Right") { + 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; + continue; + }; + return spin$r; + }; + return spin(y._1._1._1._1._1._1._1._1); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); +}; +const either7 = a => b => c => d => e => f => g => y => { + if (y.tag === "Left") { return a(y._1); } + if (y.tag === "Right") { + if (y._1.tag === "Left") { return b(y._1._1); } + if (y._1.tag === "Right") { + if (y._1._1.tag === "Left") { return c(y._1._1._1); } + if (y._1._1.tag === "Right") { + if (y._1._1._1.tag === "Left") { return d(y._1._1._1._1); } + if (y._1._1._1.tag === "Right") { + if (y._1._1._1._1.tag === "Left") { return e(y._1._1._1._1._1); } + if (y._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1.tag === "Left") { return f(y._1._1._1._1._1._1); } + if (y._1._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1._1.tag === "Left") { return g(y._1._1._1._1._1._1._1); } + if (y._1._1._1._1._1._1.tag === "Right") { + 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; + continue; + }; + return spin$r; + }; + return spin(y._1._1._1._1._1._1._1); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); +}; +const either6 = a => b => c => d => e => f => y => { + if (y.tag === "Left") { return a(y._1); } + if (y.tag === "Right") { + if (y._1.tag === "Left") { return b(y._1._1); } + if (y._1.tag === "Right") { + if (y._1._1.tag === "Left") { return c(y._1._1._1); } + if (y._1._1.tag === "Right") { + if (y._1._1._1.tag === "Left") { return d(y._1._1._1._1); } + if (y._1._1._1.tag === "Right") { + if (y._1._1._1._1.tag === "Left") { return e(y._1._1._1._1._1); } + if (y._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1.tag === "Left") { return f(y._1._1._1._1._1._1); } + if (y._1._1._1._1._1.tag === "Right") { + 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; + continue; + }; + return spin$r; + }; + return spin(y._1._1._1._1._1._1); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); +}; +const either5 = a => b => c => d => e => y => { + if (y.tag === "Left") { return a(y._1); } + if (y.tag === "Right") { + if (y._1.tag === "Left") { return b(y._1._1); } + if (y._1.tag === "Right") { + if (y._1._1.tag === "Left") { return c(y._1._1._1); } + if (y._1._1.tag === "Right") { + if (y._1._1._1.tag === "Left") { return d(y._1._1._1._1); } + if (y._1._1._1.tag === "Right") { + if (y._1._1._1._1.tag === "Left") { return e(y._1._1._1._1._1); } + if (y._1._1._1._1.tag === "Right") { + 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; + continue; + }; + return spin$r; + }; + return spin(y._1._1._1._1._1); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); +}; +const either4 = a => b => c => d => y => { + if (y.tag === "Left") { return a(y._1); } + if (y.tag === "Right") { + if (y._1.tag === "Left") { return b(y._1._1); } + if (y._1.tag === "Right") { + if (y._1._1.tag === "Left") { return c(y._1._1._1); } + if (y._1._1.tag === "Right") { + if (y._1._1._1.tag === "Left") { return d(y._1._1._1._1); } + if (y._1._1._1.tag === "Right") { + 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; + continue; + }; + return spin$r; + }; + return spin(y._1._1._1._1); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); +}; +const either3 = a => b => c => y => { + if (y.tag === "Left") { return a(y._1); } + if (y.tag === "Right") { + if (y._1.tag === "Left") { return b(y._1._1); } + if (y._1.tag === "Right") { + if (y._1._1.tag === "Left") { return c(y._1._1._1); } + if (y._1._1.tag === "Right") { + 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; + continue; + }; + return spin$r; + }; + return spin(y._1._1._1); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); +}; +const either2 = a => b => y => { + if (y.tag === "Left") { return a(y._1); } + if (y.tag === "Right") { + if (y._1.tag === "Left") { return b(y._1._1); } + if (y._1.tag === "Right") { + 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; + continue; + }; + return spin$r; + }; + return spin(y._1._1); + } + $runtime.fail(); + } + $runtime.fail(); +}; +const either10 = a => b => c => d => e => f => g => h => i => j => y => { + if (y.tag === "Left") { return a(y._1); } + if (y.tag === "Right") { + if (y._1.tag === "Left") { return b(y._1._1); } + if (y._1.tag === "Right") { + if (y._1._1.tag === "Left") { return c(y._1._1._1); } + if (y._1._1.tag === "Right") { + if (y._1._1._1.tag === "Left") { return d(y._1._1._1._1); } + if (y._1._1._1.tag === "Right") { + if (y._1._1._1._1.tag === "Left") { return e(y._1._1._1._1._1); } + if (y._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1.tag === "Left") { return f(y._1._1._1._1._1._1); } + if (y._1._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1._1.tag === "Left") { return g(y._1._1._1._1._1._1._1); } + if (y._1._1._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1._1._1.tag === "Left") { return h(y._1._1._1._1._1._1._1._1); } + if (y._1._1._1._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1._1._1._1.tag === "Left") { return i(y._1._1._1._1._1._1._1._1._1); } + if (y._1._1._1._1._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1._1._1._1._1.tag === "Left") { return j(y._1._1._1._1._1._1._1._1._1._1); } + if (y._1._1._1._1._1._1._1._1._1.tag === "Right") { + 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; + continue; + }; + return spin$r; + }; + return spin(y._1._1._1._1._1._1._1._1._1._1); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); +}; +const either1 = y => { + if (y.tag === "Left") { return y._1; } + if (y.tag === "Right") { + 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; + continue; + }; + return spin$r; + }; + return spin(y._1); + } + $runtime.fail(); +}; +const at9 = b => f => y => { + if (y.tag === "Right") { + if (y._1.tag === "Right") { + if (y._1._1.tag === "Right") { + if (y._1._1._1.tag === "Right") { + if (y._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1._1._1._1.tag === "Left") { return f(y._1._1._1._1._1._1._1._1._1); } + return b; + } + return b; + } + return b; + } + return b; + } + return b; + } + return b; + } + return b; + } + return b; + } + return b; +}; +const at8 = b => f => y => { + if (y.tag === "Right") { + if (y._1.tag === "Right") { + if (y._1._1.tag === "Right") { + if (y._1._1._1.tag === "Right") { + if (y._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1._1._1.tag === "Left") { return f(y._1._1._1._1._1._1._1._1); } + return b; + } + return b; + } + return b; + } + return b; + } + return b; + } + return b; + } + return b; + } + return b; +}; +const at7 = b => f => y => { + if (y.tag === "Right") { + if (y._1.tag === "Right") { + if (y._1._1.tag === "Right") { + if (y._1._1._1.tag === "Right") { + if (y._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1._1.tag === "Left") { return f(y._1._1._1._1._1._1._1); } + return b; + } + return b; + } + return b; + } + return b; + } + return b; + } + return b; + } + return b; +}; +const at6 = b => f => y => { + if (y.tag === "Right") { + if (y._1.tag === "Right") { + if (y._1._1.tag === "Right") { + if (y._1._1._1.tag === "Right") { + if (y._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1.tag === "Left") { return f(y._1._1._1._1._1._1); } + return b; + } + return b; + } + return b; + } + return b; + } + return b; + } + return b; +}; +const at5 = b => f => y => { + if (y.tag === "Right") { + if (y._1.tag === "Right") { + if (y._1._1.tag === "Right") { + if (y._1._1._1.tag === "Right") { + if (y._1._1._1._1.tag === "Left") { return f(y._1._1._1._1._1); } + return b; + } + return b; + } + return b; + } + return b; + } + return b; +}; +const at4 = b => f => y => { + if (y.tag === "Right") { + if (y._1.tag === "Right") { + if (y._1._1.tag === "Right") { + if (y._1._1._1.tag === "Left") { return f(y._1._1._1._1); } + return b; + } + return b; + } + return b; + } + return b; +}; +const at3 = b => f => y => { + if (y.tag === "Right") { + if (y._1.tag === "Right") { + if (y._1._1.tag === "Left") { return f(y._1._1._1); } + return b; + } + return b; + } + return b; +}; +const at2 = b => f => y => { + if (y.tag === "Right") { + if (y._1.tag === "Left") { return f(y._1._1); } + return b; + } + return b; +}; +const at10 = b => f => y => { + if (y.tag === "Right") { + if (y._1.tag === "Right") { + if (y._1._1.tag === "Right") { + if (y._1._1._1.tag === "Right") { + if (y._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1._1._1._1._1.tag === "Left") { return f(y._1._1._1._1._1._1._1._1._1._1); } + return b; + } + return b; + } + return b; + } + return b; + } + return b; + } + return b; + } + return b; + } + return b; + } + return b; + } + return b; +}; +const at1 = b => f => y => { + if (y.tag === "Left") { return f(y._1); } + return b; +}; +export { + at1, + at10, + at2, + at3, + at4, + at5, + at6, + at7, + at8, + at9, + either1, + either10, + either2, + either3, + either4, + either5, + either6, + either7, + either8, + either9, + in1, + in10, + in2, + in3, + in4, + in5, + in6, + in7, + in8, + in9 +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Either/index.js b/.storybook/purescript-indexer/output-es/Data.Either/index.js new file mode 100644 index 0000000..9a2083f --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Either/index.js @@ -0,0 +1,259 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dGeneric$dRep from "../Data.Generic.Rep/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dOrdering from "../Data.Ordering/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +const $Either = (tag, _1) => ({tag, _1}); +const Left = value0 => $Either("Left", value0); +const Right = value0 => $Either("Right", value0); +const showEither = dictShow => dictShow1 => ( + { + show: v => { + if (v.tag === "Left") { return "(Left " + (dictShow.show(v._1) + ")"); } + if (v.tag === "Right") { return "(Right " + (dictShow1.show(v._1) + ")"); } + $runtime.fail(); + } + } +); +const note$p = f => v2 => { + if (v2.tag === "Nothing") { return $Either("Left", f(Data$dUnit.unit)); } + if (v2.tag === "Just") { return $Either("Right", v2._1); } + $runtime.fail(); +}; +const note = a => v2 => { + if (v2.tag === "Nothing") { return $Either("Left", a); } + if (v2.tag === "Just") { return $Either("Right", v2._1); } + $runtime.fail(); +}; +const genericEither = { + to: x => { + if (x.tag === "Inl") { return $Either("Left", x._1); } + if (x.tag === "Inr") { return $Either("Right", x._1); } + $runtime.fail(); + }, + from: x => { + if (x.tag === "Left") { return Data$dGeneric$dRep.$Sum("Inl", x._1); } + if (x.tag === "Right") { return Data$dGeneric$dRep.$Sum("Inr", x._1); } + $runtime.fail(); + } +}; +const functorEither = { + map: f => m => { + if (m.tag === "Left") { return $Either("Left", m._1); } + if (m.tag === "Right") { return $Either("Right", f(m._1)); } + $runtime.fail(); + } +}; +const invariantEither = {imap: f => v => functorEither.map(f)}; +const fromRight$p = v => v1 => { + if (v1.tag === "Right") { return v1._1; } + return v(Data$dUnit.unit); +}; +const fromRight = v => v1 => { + if (v1.tag === "Right") { return v1._1; } + return v; +}; +const fromLeft$p = v => v1 => { + if (v1.tag === "Left") { return v1._1; } + return v(Data$dUnit.unit); +}; +const fromLeft = v => v1 => { + if (v1.tag === "Left") { return v1._1; } + return v; +}; +const extendEither = { + extend: v => v1 => { + if (v1.tag === "Left") { return $Either("Left", v1._1); } + return $Either("Right", v(v1)); + }, + Functor0: () => functorEither +}; +const eqEither = dictEq => dictEq1 => ( + { + eq: x => y => { + if (x.tag === "Left") { + if (y.tag === "Left") { return dictEq.eq(x._1)(y._1); } + return false; + } + if (x.tag === "Right") { + if (y.tag === "Right") { return dictEq1.eq(x._1)(y._1); } + return false; + } + return false; + } + } +); +const ordEither = dictOrd => { + const $1 = dictOrd.Eq0(); + return dictOrd1 => { + const $3 = dictOrd1.Eq0(); + const eqEither2 = { + eq: x => y => { + if (x.tag === "Left") { + if (y.tag === "Left") { return $1.eq(x._1)(y._1); } + return false; + } + if (x.tag === "Right") { + if (y.tag === "Right") { return $3.eq(x._1)(y._1); } + return false; + } + return false; + } + }; + return { + compare: x => y => { + if (x.tag === "Left") { + if (y.tag === "Left") { return dictOrd.compare(x._1)(y._1); } + return Data$dOrdering.LT; + } + if (y.tag === "Left") { return Data$dOrdering.GT; } + if (x.tag === "Right") { + if (y.tag === "Right") { return dictOrd1.compare(x._1)(y._1); } + $runtime.fail(); + } + $runtime.fail(); + }, + Eq0: () => eqEither2 + }; + }; +}; +const eq1Either = dictEq => ( + { + eq1: dictEq1 => x => y => { + if (x.tag === "Left") { + if (y.tag === "Left") { return dictEq.eq(x._1)(y._1); } + return false; + } + if (x.tag === "Right") { + if (y.tag === "Right") { return dictEq1.eq(x._1)(y._1); } + return false; + } + return false; + } + } +); +const ord1Either = dictOrd => { + const ordEither1 = ordEither(dictOrd); + const $2 = dictOrd.Eq0(); + const eq1Either1 = { + eq1: dictEq1 => x => y => { + if (x.tag === "Left") { + if (y.tag === "Left") { return $2.eq(x._1)(y._1); } + return false; + } + if (x.tag === "Right") { + if (y.tag === "Right") { return dictEq1.eq(x._1)(y._1); } + return false; + } + return false; + } + }; + return {compare1: dictOrd1 => ordEither1(dictOrd1).compare, Eq10: () => eq1Either1}; +}; +const either = v => v1 => v2 => { + if (v2.tag === "Left") { return v(v2._1); } + if (v2.tag === "Right") { return v1(v2._1); } + $runtime.fail(); +}; +const hush = v2 => { + if (v2.tag === "Left") { return Data$dMaybe.Nothing; } + if (v2.tag === "Right") { return Data$dMaybe.$Maybe("Just", v2._1); } + $runtime.fail(); +}; +const isLeft = v2 => { + if (v2.tag === "Left") { return true; } + if (v2.tag === "Right") { return false; } + $runtime.fail(); +}; +const isRight = v2 => { + if (v2.tag === "Left") { return false; } + if (v2.tag === "Right") { return true; } + $runtime.fail(); +}; +const choose = dictAlt => { + const map1 = dictAlt.Functor0().map; + return a => b => dictAlt.alt(map1(Left)(a))(map1(Right)(b)); +}; +const boundedEither = dictBounded => { + const ordEither1 = ordEither(dictBounded.Ord0()); + return dictBounded1 => { + const ordEither2 = ordEither1(dictBounded1.Ord0()); + return {top: $Either("Right", dictBounded1.top), bottom: $Either("Left", dictBounded.bottom), Ord0: () => ordEither2}; + }; +}; +const blush = v2 => { + if (v2.tag === "Left") { return Data$dMaybe.$Maybe("Just", v2._1); } + if (v2.tag === "Right") { return Data$dMaybe.Nothing; } + $runtime.fail(); +}; +const 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)); } + $runtime.fail(); + } + $runtime.fail(); + }, + Functor0: () => functorEither +}; +const bindEither = { + bind: v2 => { + if (v2.tag === "Left") { return v => $Either("Left", v2._1); } + if (v2.tag === "Right") { return f => f(v2._1); } + $runtime.fail(); + }, + Apply0: () => applyEither +}; +const semigroupEither = dictSemigroup => ( + { + append: x => y => applyEither.apply((() => { + if (x.tag === "Left") { return $Either("Left", x._1); } + if (x.tag === "Right") { return $Either("Right", dictSemigroup.append(x._1)); } + $runtime.fail(); + })())(y) + } +); +const applicativeEither = {pure: Right, Apply0: () => applyEither}; +const monadEither = {Applicative0: () => applicativeEither, Bind1: () => bindEither}; +const altEither = { + alt: v => v1 => { + if (v.tag === "Left") { return v1; } + return v; + }, + Functor0: () => functorEither +}; +export { + $Either, + Left, + Right, + altEither, + applicativeEither, + applyEither, + bindEither, + blush, + boundedEither, + choose, + either, + eq1Either, + eqEither, + extendEither, + fromLeft, + fromLeft$p, + fromRight, + fromRight$p, + functorEither, + genericEither, + hush, + invariantEither, + isLeft, + isRight, + monadEither, + note, + note$p, + ord1Either, + ordEither, + semigroupEither, + showEither +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Enum.Gen/index.js b/.storybook/purescript-indexer/output-es/Data.Enum.Gen/index.js new file mode 100644 index 0000000..2b6b1e0 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Enum.Gen/index.js @@ -0,0 +1,20 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dGen from "../Control.Monad.Gen/index.js"; +import * as Data$dEnum from "../Data.Enum/index.js"; +import * as Data$dFoldable from "../Data.Foldable/index.js"; +import * as Data$dNonEmpty from "../Data.NonEmpty/index.js"; +import * as Data$dUnfoldable1 from "../Data.Unfoldable1/index.js"; +const foldable1NonEmpty = /* #__PURE__ */ Data$dNonEmpty.foldable1NonEmpty(Data$dFoldable.foldableArray); +const genBoundedEnum = dictMonadGen => { + const elements = Control$dMonad$dGen.elements(dictMonadGen)(foldable1NonEmpty); + const pure = dictMonadGen.Monad0().Applicative0().pure; + return dictBoundedEnum => { + const Enum1 = dictBoundedEnum.Enum1(); + const Bounded0 = dictBoundedEnum.Bounded0(); + const v = Enum1.succ(Bounded0.bottom); + if (v.tag === "Just") { return elements(Data$dNonEmpty.$NonEmpty(Bounded0.bottom, Data$dEnum.enumFromTo(Enum1)(Data$dUnfoldable1.unfoldable1Array)(v._1)(Bounded0.top))); } + if (v.tag === "Nothing") { return pure(Bounded0.bottom); } + $runtime.fail(); + }; +}; +export {foldable1NonEmpty, genBoundedEnum}; diff --git a/.storybook/purescript-indexer/output-es/Data.Enum.Generic/index.js b/.storybook/purescript-indexer/output-es/Data.Enum.Generic/index.js new file mode 100644 index 0000000..c8f4272 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Enum.Generic/index.js @@ -0,0 +1,194 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dEuclideanRing from "../Data.EuclideanRing/index.js"; +import * as Data$dGeneric$dRep from "../Data.Generic.Rep/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +const genericToEnum$p = dict => dict["genericToEnum'"]; +const genericToEnum = dictGeneric => dictGenericBoundedEnum => x => { + const $3 = dictGenericBoundedEnum["genericToEnum'"](x); + if ($3.tag === "Just") { return Data$dMaybe.$Maybe("Just", dictGeneric.to($3._1)); } + return Data$dMaybe.Nothing; +}; +const genericSucc$p = dict => dict["genericSucc'"]; +const genericSucc = dictGeneric => dictGenericEnum => x => { + const $3 = dictGenericEnum["genericSucc'"](dictGeneric.from(x)); + if ($3.tag === "Just") { return Data$dMaybe.$Maybe("Just", dictGeneric.to($3._1)); } + return Data$dMaybe.Nothing; +}; +const genericPred$p = dict => dict["genericPred'"]; +const genericPred = dictGeneric => dictGenericEnum => x => { + const $3 = dictGenericEnum["genericPred'"](dictGeneric.from(x)); + if ($3.tag === "Just") { return Data$dMaybe.$Maybe("Just", dictGeneric.to($3._1)); } + return Data$dMaybe.Nothing; +}; +const genericFromEnum$p = dict => dict["genericFromEnum'"]; +const genericFromEnum = dictGeneric => dictGenericBoundedEnum => x => dictGenericBoundedEnum["genericFromEnum'"](dictGeneric.from(x)); +const genericEnumSum = dictGenericEnum => dictGenericTop => dictGenericEnum1 => dictGenericBottom => ( + { + "genericPred'": v => { + if (v.tag === "Inl") { + const $5 = dictGenericEnum["genericPred'"](v._1); + if ($5.tag === "Just") { return Data$dMaybe.$Maybe("Just", Data$dGeneric$dRep.$Sum("Inl", $5._1)); } + return Data$dMaybe.Nothing; + } + if (v.tag === "Inr") { + const v1 = dictGenericEnum1["genericPred'"](v._1); + if (v1.tag === "Nothing") { return Data$dMaybe.$Maybe("Just", Data$dGeneric$dRep.$Sum("Inl", dictGenericTop["genericTop'"])); } + if (v1.tag === "Just") { return Data$dMaybe.$Maybe("Just", Data$dGeneric$dRep.$Sum("Inr", v1._1)); } + $runtime.fail(); + } + $runtime.fail(); + }, + "genericSucc'": v => { + if (v.tag === "Inl") { + const v1 = dictGenericEnum["genericSucc'"](v._1); + if (v1.tag === "Nothing") { return Data$dMaybe.$Maybe("Just", Data$dGeneric$dRep.$Sum("Inr", dictGenericBottom["genericBottom'"])); } + if (v1.tag === "Just") { return Data$dMaybe.$Maybe("Just", Data$dGeneric$dRep.$Sum("Inl", v1._1)); } + $runtime.fail(); + } + if (v.tag === "Inr") { + const $5 = dictGenericEnum1["genericSucc'"](v._1); + if ($5.tag === "Just") { return Data$dMaybe.$Maybe("Just", Data$dGeneric$dRep.$Sum("Inr", $5._1)); } + return Data$dMaybe.Nothing; + } + $runtime.fail(); + } + } +); +const genericEnumProduct = dictGenericEnum => dictGenericTop => dictGenericBottom => dictGenericEnum1 => dictGenericTop1 => dictGenericBottom1 => ( + { + "genericPred'": v => { + const v1 = dictGenericEnum1["genericPred'"](v._2); + if (v1.tag === "Just") { return Data$dMaybe.$Maybe("Just", Data$dGeneric$dRep.$Product(v._1, v1._1)); } + if (v1.tag === "Nothing") { + const $8 = dictGenericEnum["genericPred'"](v._1); + if ($8.tag === "Just") { return Data$dMaybe.$Maybe("Just", Data$dGeneric$dRep.$Product($8._1, dictGenericTop1["genericTop'"])); } + return Data$dMaybe.Nothing; + } + $runtime.fail(); + }, + "genericSucc'": v => { + const v1 = dictGenericEnum1["genericSucc'"](v._2); + if (v1.tag === "Just") { return Data$dMaybe.$Maybe("Just", Data$dGeneric$dRep.$Product(v._1, v1._1)); } + if (v1.tag === "Nothing") { + const $8 = dictGenericEnum["genericSucc'"](v._1); + if ($8.tag === "Just") { return Data$dMaybe.$Maybe("Just", Data$dGeneric$dRep.$Product($8._1, dictGenericBottom1["genericBottom'"])); } + return Data$dMaybe.Nothing; + } + $runtime.fail(); + } + } +); +const genericEnumNoArguments = {"genericPred'": v => Data$dMaybe.Nothing, "genericSucc'": v => Data$dMaybe.Nothing}; +const genericEnumConstructor = dictGenericEnum => ( + { + "genericPred'": v => { + const $2 = dictGenericEnum["genericPred'"](v); + if ($2.tag === "Just") { return Data$dMaybe.$Maybe("Just", $2._1); } + return Data$dMaybe.Nothing; + }, + "genericSucc'": v => { + const $2 = dictGenericEnum["genericSucc'"](v); + if ($2.tag === "Just") { return Data$dMaybe.$Maybe("Just", $2._1); } + return Data$dMaybe.Nothing; + } + } +); +const genericEnumArgument = dictEnum => ( + { + "genericPred'": v => { + const $2 = dictEnum.pred(v); + if ($2.tag === "Just") { return Data$dMaybe.$Maybe("Just", $2._1); } + return Data$dMaybe.Nothing; + }, + "genericSucc'": v => { + const $2 = dictEnum.succ(v); + if ($2.tag === "Just") { return Data$dMaybe.$Maybe("Just", $2._1); } + return Data$dMaybe.Nothing; + } + } +); +const genericCardinality$p = dict => dict["genericCardinality'"]; +const genericCardinality = dictGeneric => dictGenericBoundedEnum => dictGenericBoundedEnum["genericCardinality'"]; +const genericBoundedEnumSum = dictGenericBoundedEnum => dictGenericBoundedEnum1 => ( + { + "genericCardinality'": dictGenericBoundedEnum["genericCardinality'"] + dictGenericBoundedEnum1["genericCardinality'"] | 0, + "genericToEnum'": n => { + if (n >= 0 && n < dictGenericBoundedEnum["genericCardinality'"]) { + const $3 = dictGenericBoundedEnum["genericToEnum'"](n); + if ($3.tag === "Just") { return Data$dMaybe.$Maybe("Just", Data$dGeneric$dRep.$Sum("Inl", $3._1)); } + return Data$dMaybe.Nothing; + } + const $3 = dictGenericBoundedEnum1["genericToEnum'"](n - dictGenericBoundedEnum["genericCardinality'"] | 0); + if ($3.tag === "Just") { return Data$dMaybe.$Maybe("Just", Data$dGeneric$dRep.$Sum("Inr", $3._1)); } + return Data$dMaybe.Nothing; + }, + "genericFromEnum'": v => { + if (v.tag === "Inl") { return dictGenericBoundedEnum["genericFromEnum'"](v._1); } + if (v.tag === "Inr") { return dictGenericBoundedEnum1["genericFromEnum'"](v._1) + dictGenericBoundedEnum["genericCardinality'"] | 0; } + $runtime.fail(); + } + } +); +const genericBoundedEnumProduct = dictGenericBoundedEnum => dictGenericBoundedEnum1 => ( + { + "genericCardinality'": dictGenericBoundedEnum["genericCardinality'"] * dictGenericBoundedEnum1["genericCardinality'"] | 0, + "genericToEnum'": n => Data$dMaybe.applyMaybe.apply((() => { + const $3 = dictGenericBoundedEnum["genericToEnum'"](Data$dEuclideanRing.intDiv(n)(dictGenericBoundedEnum1["genericCardinality'"])); + if ($3.tag === "Just") { return Data$dMaybe.$Maybe("Just", Data$dGeneric$dRep.Product($3._1)); } + return Data$dMaybe.Nothing; + })())(dictGenericBoundedEnum1["genericToEnum'"](Data$dEuclideanRing.intMod(n)(dictGenericBoundedEnum1["genericCardinality'"]))), + "genericFromEnum'": v1 => (dictGenericBoundedEnum["genericFromEnum'"](v1._1) * dictGenericBoundedEnum1["genericCardinality'"] | 0) + dictGenericBoundedEnum1["genericFromEnum'"](v1._2) | 0 + } +); +const genericBoundedEnumNoArguments = { + "genericCardinality'": 1, + "genericToEnum'": i => { + if (i === 0) { return Data$dMaybe.$Maybe("Just", Data$dGeneric$dRep.NoArguments); } + return Data$dMaybe.Nothing; + }, + "genericFromEnum'": v => 0 +}; +const genericBoundedEnumConstructor = dictGenericBoundedEnum => ( + { + "genericCardinality'": dictGenericBoundedEnum["genericCardinality'"], + "genericToEnum'": i => { + const $2 = dictGenericBoundedEnum["genericToEnum'"](i); + if ($2.tag === "Just") { return Data$dMaybe.$Maybe("Just", $2._1); } + return Data$dMaybe.Nothing; + }, + "genericFromEnum'": v => dictGenericBoundedEnum["genericFromEnum'"](v) + } +); +const genericBoundedEnumArgument = dictBoundedEnum => ( + { + "genericCardinality'": dictBoundedEnum.cardinality, + "genericToEnum'": i => { + const $2 = dictBoundedEnum.toEnum(i); + if ($2.tag === "Just") { return Data$dMaybe.$Maybe("Just", $2._1); } + return Data$dMaybe.Nothing; + }, + "genericFromEnum'": v => dictBoundedEnum.fromEnum(v) + } +); +export { + genericBoundedEnumArgument, + genericBoundedEnumConstructor, + genericBoundedEnumNoArguments, + genericBoundedEnumProduct, + genericBoundedEnumSum, + genericCardinality, + genericCardinality$p, + genericEnumArgument, + genericEnumConstructor, + genericEnumNoArguments, + genericEnumProduct, + genericEnumSum, + genericFromEnum, + genericFromEnum$p, + genericPred, + genericPred$p, + genericSucc, + genericSucc$p, + genericToEnum, + genericToEnum$p +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Enum/foreign.js b/.storybook/purescript-indexer/output-es/Data.Enum/foreign.js new file mode 100644 index 0000000..3b32bf2 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Enum/foreign.js @@ -0,0 +1,7 @@ +export function toCharCode(c) { + return c.charCodeAt(0); +} + +export function fromCharCode(c) { + return String.fromCharCode(c); +} diff --git a/.storybook/purescript-indexer/output-es/Data.Enum/index.js b/.storybook/purescript-indexer/output-es/Data.Enum/index.js new file mode 100644 index 0000000..c470afa --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Enum/index.js @@ -0,0 +1,407 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dAlternative from "../Control.Alternative/index.js"; +import * as Data$dBounded from "../Data.Bounded/index.js"; +import * as Data$dEither from "../Data.Either/index.js"; +import * as Data$dEq from "../Data.Eq/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dOrd from "../Data.Ord/index.js"; +import * as Data$dOrdering from "../Data.Ordering/index.js"; +import * as Data$dShow from "../Data.Show/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +import * as Data$dUnfoldable1 from "../Data.Unfoldable1/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +import {fromCharCode, toCharCode} from "./foreign.js"; +const guard = /* #__PURE__ */ Control$dAlternative.guard(Data$dMaybe.alternativeMaybe); +const Cardinality = x => x; +const toEnum = dict => dict.toEnum; +const succ = dict => dict.succ; +const upFromIncluding = dictEnum => dictUnfoldable1 => dictUnfoldable1.unfoldr1(x => Data$dTuple.$Tuple(x, dictEnum.succ(x))); +const showCardinality = {show: v => "(Cardinality " + (Data$dShow.showIntImpl(v) + ")")}; +const pred = dict => dict.pred; +const ordCardinality = Data$dOrd.ordInt; +const newtypeCardinality = {Coercible0: () => undefined}; +const fromEnum = dict => dict.fromEnum; +const toEnumWithDefaults = dictBoundedEnum => { + const bottom2 = dictBoundedEnum.Bounded0().bottom; + return low => high => x => { + const v = dictBoundedEnum.toEnum(x); + if (v.tag === "Just") { return v._1; } + if (v.tag === "Nothing") { + if (x < dictBoundedEnum.fromEnum(bottom2)) { return low; } + return high; + } + $runtime.fail(); + }; +}; +const eqCardinality = Data$dEq.eqInt; +const enumUnit = {succ: v => Data$dMaybe.Nothing, pred: v => Data$dMaybe.Nothing, Ord0: () => Data$dOrd.ordUnit}; +const enumTuple = dictEnum => { + const ordTuple = Data$dTuple.ordTuple(dictEnum.Ord0()); + return dictBoundedEnum => { + const Bounded0 = dictBoundedEnum.Bounded0(); + const Enum1 = dictBoundedEnum.Enum1(); + const ordTuple1 = ordTuple(Enum1.Ord0()); + return { + succ: v => { + const $7 = dictEnum.succ(v._1); + const $8 = (() => { + if ($7.tag === "Just") { return Data$dMaybe.$Maybe("Just", Data$dTuple.$Tuple($7._1, Bounded0.bottom)); } + return Data$dMaybe.Nothing; + })(); + const $9 = Data$dTuple.Tuple(v._1); + const $10 = Enum1.succ(v._2); + if ($10.tag === "Nothing") { return $8; } + if ($10.tag === "Just") { return Data$dMaybe.$Maybe("Just", $9($10._1)); } + $runtime.fail(); + }, + pred: v => { + const $7 = dictEnum.pred(v._1); + const $8 = (() => { + if ($7.tag === "Just") { return Data$dMaybe.$Maybe("Just", Data$dTuple.$Tuple($7._1, Bounded0.top)); } + return Data$dMaybe.Nothing; + })(); + const $9 = Data$dTuple.Tuple(v._1); + const $10 = Enum1.pred(v._2); + if ($10.tag === "Nothing") { return $8; } + if ($10.tag === "Just") { return Data$dMaybe.$Maybe("Just", $9($10._1)); } + $runtime.fail(); + }, + Ord0: () => ordTuple1 + }; + }; +}; +const enumOrdering = { + succ: v => { + if (v.tag === "LT") { return Data$dMaybe.$Maybe("Just", Data$dOrdering.EQ); } + if (v.tag === "EQ") { return Data$dMaybe.$Maybe("Just", Data$dOrdering.GT); } + if (v.tag === "GT") { return Data$dMaybe.Nothing; } + $runtime.fail(); + }, + pred: v => { + if (v.tag === "LT") { return Data$dMaybe.Nothing; } + if (v.tag === "EQ") { return Data$dMaybe.$Maybe("Just", Data$dOrdering.LT); } + if (v.tag === "GT") { return Data$dMaybe.$Maybe("Just", Data$dOrdering.EQ); } + $runtime.fail(); + }, + Ord0: () => Data$dOrd.ordOrdering +}; +const enumMaybe = dictBoundedEnum => { + const bottom2 = dictBoundedEnum.Bounded0().bottom; + const Enum1 = dictBoundedEnum.Enum1(); + const ordMaybe = Data$dMaybe.ordMaybe(Enum1.Ord0()); + return { + succ: v => { + if (v.tag === "Nothing") { return Data$dMaybe.$Maybe("Just", Data$dMaybe.$Maybe("Just", bottom2)); } + if (v.tag === "Just") { + const $5 = Enum1.succ(v._1); + if ($5.tag === "Just") { return Data$dMaybe.$Maybe("Just", Data$dMaybe.$Maybe("Just", $5._1)); } + return Data$dMaybe.Nothing; + } + $runtime.fail(); + }, + pred: v => { + if (v.tag === "Nothing") { return Data$dMaybe.Nothing; } + if (v.tag === "Just") { return Data$dMaybe.$Maybe("Just", Enum1.pred(v._1)); } + $runtime.fail(); + }, + Ord0: () => ordMaybe + }; +}; +const enumInt = { + succ: n => { + if (n < 2147483647) { return Data$dMaybe.$Maybe("Just", n + 1 | 0); } + return Data$dMaybe.Nothing; + }, + pred: n => { + if (n > -2147483648) { return Data$dMaybe.$Maybe("Just", n - 1 | 0); } + return Data$dMaybe.Nothing; + }, + Ord0: () => Data$dOrd.ordInt +}; +const enumFromTo = dictEnum => { + const Ord0 = dictEnum.Ord0(); + const eq1 = Ord0.Eq0().eq; + return dictUnfoldable1 => v => v1 => { + if (eq1(v)(v1)) { return Data$dUnfoldable1.replicate1(dictUnfoldable1)(1)(v); } + if (Ord0.compare(v)(v1).tag === "LT") { + return dictUnfoldable1.unfoldr1(a => Data$dTuple.$Tuple( + a, + (() => { + const $7 = dictEnum.succ(a); + if ($7.tag === "Just") { + if (guard(!(Ord0.compare($7._1)(v1).tag === "GT")).tag === "Just") { return Data$dMaybe.$Maybe("Just", $7._1); } + return Data$dMaybe.Nothing; + } + if ($7.tag === "Nothing") { return Data$dMaybe.Nothing; } + $runtime.fail(); + })() + ))(v); + } + return dictUnfoldable1.unfoldr1(a => Data$dTuple.$Tuple( + a, + (() => { + const $7 = dictEnum.pred(a); + if ($7.tag === "Just") { + if (guard(!(Ord0.compare($7._1)(v1).tag === "LT")).tag === "Just") { return Data$dMaybe.$Maybe("Just", $7._1); } + return Data$dMaybe.Nothing; + } + if ($7.tag === "Nothing") { return Data$dMaybe.Nothing; } + $runtime.fail(); + })() + ))(v); + }; +}; +const enumFromThenTo = dictUnfoldable => dictFunctor => dictBoundedEnum => a => b => c => { + const a$p = dictBoundedEnum.fromEnum(a); + return dictFunctor.map(x => { + const $8 = dictBoundedEnum.toEnum(x); + if ($8.tag === "Just") { return $8._1; } + $runtime.fail(); + })(dictUnfoldable.unfoldr((() => { + const $7 = dictBoundedEnum.fromEnum(b) - a$p | 0; + const $8 = dictBoundedEnum.fromEnum(c); + return e => { + if (e <= $8) { return Data$dMaybe.$Maybe("Just", Data$dTuple.$Tuple(e, e + $7 | 0)); } + return Data$dMaybe.Nothing; + }; + })())(a$p)); +}; +const enumEither = dictBoundedEnum => { + const Enum1 = dictBoundedEnum.Enum1(); + const top2 = dictBoundedEnum.Bounded0().top; + const ordEither = Data$dEither.ordEither(Enum1.Ord0()); + return dictBoundedEnum1 => { + const bottom2 = dictBoundedEnum1.Bounded0().bottom; + const Enum11 = dictBoundedEnum1.Enum1(); + const ordEither1 = ordEither(Enum11.Ord0()); + return { + succ: v => { + if (v.tag === "Left") { + const $9 = Enum1.succ(v._1); + if ($9.tag === "Nothing") { return Data$dMaybe.$Maybe("Just", Data$dEither.$Either("Right", bottom2)); } + if ($9.tag === "Just") { return Data$dMaybe.$Maybe("Just", Data$dEither.$Either("Left", $9._1)); } + $runtime.fail(); + } + if (v.tag === "Right") { + const $9 = Enum11.succ(v._1); + if ($9.tag === "Nothing") { return Data$dMaybe.Nothing; } + if ($9.tag === "Just") { return Data$dMaybe.$Maybe("Just", Data$dEither.$Either("Right", $9._1)); } + $runtime.fail(); + } + $runtime.fail(); + }, + pred: v => { + if (v.tag === "Left") { + const $9 = Enum1.pred(v._1); + if ($9.tag === "Nothing") { return Data$dMaybe.Nothing; } + if ($9.tag === "Just") { return Data$dMaybe.$Maybe("Just", Data$dEither.$Either("Left", $9._1)); } + $runtime.fail(); + } + if (v.tag === "Right") { + const $9 = Enum11.pred(v._1); + if ($9.tag === "Nothing") { return Data$dMaybe.$Maybe("Just", Data$dEither.$Either("Left", top2)); } + if ($9.tag === "Just") { return Data$dMaybe.$Maybe("Just", Data$dEither.$Either("Right", $9._1)); } + $runtime.fail(); + } + $runtime.fail(); + }, + Ord0: () => ordEither1 + }; + }; +}; +const enumBoolean = { + succ: v => { + if (!v) { return Data$dMaybe.$Maybe("Just", true); } + return Data$dMaybe.Nothing; + }, + pred: v => { + if (v) { return Data$dMaybe.$Maybe("Just", false); } + return Data$dMaybe.Nothing; + }, + Ord0: () => Data$dOrd.ordBoolean +}; +const downFromIncluding = dictEnum => dictUnfoldable1 => dictUnfoldable1.unfoldr1(x => Data$dTuple.$Tuple(x, dictEnum.pred(x))); +const downFrom = dictEnum => dictUnfoldable => dictUnfoldable.unfoldr(x => { + const $3 = dictEnum.pred(x); + if ($3.tag === "Just") { return Data$dMaybe.$Maybe("Just", Data$dTuple.$Tuple($3._1, $3._1)); } + return Data$dMaybe.Nothing; +}); +const upFrom = dictEnum => dictUnfoldable => dictUnfoldable.unfoldr(x => { + const $3 = dictEnum.succ(x); + if ($3.tag === "Just") { return Data$dMaybe.$Maybe("Just", Data$dTuple.$Tuple($3._1, $3._1)); } + return Data$dMaybe.Nothing; +}); +const defaultToEnum = dictBounded => dictEnum => i$p => { + 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 i = go$a0, x = go$a1; + if (i === 0) { + go$c = false; + go$r = Data$dMaybe.$Maybe("Just", x); + continue; + } + const v = dictEnum.succ(x); + if (v.tag === "Just") { + go$a0 = i - 1 | 0; + go$a1 = v._1; + continue; + } + if (v.tag === "Nothing") { + go$c = false; + go$r = Data$dMaybe.Nothing; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + if (i$p < 0) { return Data$dMaybe.Nothing; } + return go(i$p)(dictBounded.bottom); +}; +const defaultSucc = toEnum$p => fromEnum$p => a => toEnum$p(fromEnum$p(a) + 1 | 0); +const defaultPred = toEnum$p => fromEnum$p => a => toEnum$p(fromEnum$p(a) - 1 | 0); +const defaultFromEnum = dictEnum => { + 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 i = go$a0, x = go$a1; + const v = dictEnum.pred(x); + if (v.tag === "Just") { + go$a0 = i + 1 | 0; + go$a1 = v._1; + continue; + } + if (v.tag === "Nothing") { + go$c = false; + go$r = i; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go(0); +}; +const defaultCardinality = dictBounded => dictEnum => { + 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 i = go$a0, x = go$a1; + const v = dictEnum.succ(x); + if (v.tag === "Just") { + go$a0 = i + 1 | 0; + go$a1 = v._1; + continue; + } + if (v.tag === "Nothing") { + go$c = false; + go$r = i; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go(1)(dictBounded.bottom); +}; +const charToEnum = v => { + if (v >= 0 && v <= 65535) { return Data$dMaybe.$Maybe("Just", fromCharCode(v)); } + return Data$dMaybe.Nothing; +}; +const enumChar = { + succ: a => { + const $1 = toCharCode(a) + 1 | 0; + if ($1 >= 0 && $1 <= 65535) { return Data$dMaybe.$Maybe("Just", fromCharCode($1)); } + return Data$dMaybe.Nothing; + }, + pred: a => { + const $1 = toCharCode(a) - 1 | 0; + if ($1 >= 0 && $1 <= 65535) { return Data$dMaybe.$Maybe("Just", fromCharCode($1)); } + return Data$dMaybe.Nothing; + }, + Ord0: () => Data$dOrd.ordChar +}; +const cardinality = dict => dict.cardinality; +const boundedEnumUnit = { + cardinality: 1, + toEnum: v => { + if (v === 0) { return Data$dMaybe.$Maybe("Just", Data$dUnit.unit); } + return Data$dMaybe.Nothing; + }, + fromEnum: v => 0, + Bounded0: () => Data$dBounded.boundedUnit, + Enum1: () => enumUnit +}; +const boundedEnumOrdering = { + cardinality: 3, + toEnum: v => { + if (v === 0) { return Data$dMaybe.$Maybe("Just", Data$dOrdering.LT); } + if (v === 1) { return Data$dMaybe.$Maybe("Just", Data$dOrdering.EQ); } + if (v === 2) { return Data$dMaybe.$Maybe("Just", Data$dOrdering.GT); } + return Data$dMaybe.Nothing; + }, + fromEnum: v => { + if (v.tag === "LT") { return 0; } + if (v.tag === "EQ") { return 1; } + if (v.tag === "GT") { return 2; } + $runtime.fail(); + }, + Bounded0: () => Data$dBounded.boundedOrdering, + Enum1: () => enumOrdering +}; +const boundedEnumChar = {cardinality: 65535, toEnum: charToEnum, fromEnum: toCharCode, Bounded0: () => Data$dBounded.boundedChar, Enum1: () => enumChar}; +const boundedEnumBoolean = { + cardinality: 2, + toEnum: v => { + if (v === 0) { return Data$dMaybe.$Maybe("Just", false); } + if (v === 1) { return Data$dMaybe.$Maybe("Just", true); } + return Data$dMaybe.Nothing; + }, + fromEnum: v => { + if (!v) { return 0; } + if (v) { return 1; } + $runtime.fail(); + }, + Bounded0: () => Data$dBounded.boundedBoolean, + Enum1: () => enumBoolean +}; +export { + Cardinality, + boundedEnumBoolean, + boundedEnumChar, + boundedEnumOrdering, + boundedEnumUnit, + cardinality, + charToEnum, + defaultCardinality, + defaultFromEnum, + defaultPred, + defaultSucc, + defaultToEnum, + downFrom, + downFromIncluding, + enumBoolean, + enumChar, + enumEither, + enumFromThenTo, + enumFromTo, + enumInt, + enumMaybe, + enumOrdering, + enumTuple, + enumUnit, + eqCardinality, + fromEnum, + guard, + newtypeCardinality, + ordCardinality, + pred, + showCardinality, + succ, + toEnum, + toEnumWithDefaults, + upFrom, + upFromIncluding +}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Data.Eq.Generic/index.js b/.storybook/purescript-indexer/output-es/Data.Eq.Generic/index.js new file mode 100644 index 0000000..147a7f2 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Eq.Generic/index.js @@ -0,0 +1,24 @@ +import * as $runtime from "../runtime.js"; +const genericEqNoConstructors = {"genericEq'": v => v1 => true}; +const genericEqNoArguments = {"genericEq'": v => v1 => true}; +const genericEqArgument = dictEq => ({"genericEq'": v => v1 => dictEq.eq(v)(v1)}); +const genericEq$p = dict => dict["genericEq'"]; +const genericEqConstructor = dictGenericEq => ({"genericEq'": v => v1 => dictGenericEq["genericEq'"](v)(v1)}); +const genericEqProduct = dictGenericEq => dictGenericEq1 => ({"genericEq'": v => v1 => dictGenericEq["genericEq'"](v._1)(v1._1) && dictGenericEq1["genericEq'"](v._2)(v1._2)}); +const genericEqSum = dictGenericEq => dictGenericEq1 => ( + { + "genericEq'": v => v1 => { + if (v.tag === "Inl") { + if (v1.tag === "Inl") { return dictGenericEq["genericEq'"](v._1)(v1._1); } + return false; + } + if (v.tag === "Inr") { + if (v1.tag === "Inr") { return dictGenericEq1["genericEq'"](v._1)(v1._1); } + return false; + } + return false; + } + } +); +const genericEq = dictGeneric => dictGenericEq => x => y => dictGenericEq["genericEq'"](dictGeneric.from(x))(dictGeneric.from(y)); +export {genericEq, genericEq$p, genericEqArgument, genericEqConstructor, genericEqNoArguments, genericEqNoConstructors, genericEqProduct, genericEqSum}; diff --git a/.storybook/purescript-indexer/output-es/Data.Eq/foreign.js b/.storybook/purescript-indexer/output-es/Data.Eq/foreign.js new file mode 100644 index 0000000..6e8303c --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Eq/foreign.js @@ -0,0 +1,23 @@ +var refEq = function (r1) { + return function (r2) { + return r1 === r2; + }; +}; + +export const eqBooleanImpl = refEq; +export const eqIntImpl = refEq; +export const eqNumberImpl = refEq; +export const eqCharImpl = refEq; +export const eqStringImpl = refEq; + +export const 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; + }; + }; +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Eq/index.js b/.storybook/purescript-indexer/output-es/Data.Eq/index.js new file mode 100644 index 0000000..4975094 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Eq/index.js @@ -0,0 +1,34 @@ +import * as $runtime from "../runtime.js"; +import * as Record$dUnsafe from "../Record.Unsafe/index.js"; +import * as Type$dProxy from "../Type.Proxy/index.js"; +import {eqArrayImpl, eqBooleanImpl, eqCharImpl, eqIntImpl, eqNumberImpl, eqStringImpl} from "./foreign.js"; +const eqVoid = {eq: v => v1 => true}; +const eqUnit = {eq: v => v1 => true}; +const eqString = {eq: eqStringImpl}; +const eqRowNil = {eqRecord: v => v1 => v2 => true}; +const eqRecord = dict => dict.eqRecord; +const eqRec = () => dictEqRecord => ({eq: dictEqRecord.eqRecord(Type$dProxy.Proxy)}); +const eqProxy = {eq: v => v1 => true}; +const eqNumber = {eq: eqNumberImpl}; +const eqInt = {eq: eqIntImpl}; +const eqChar = {eq: eqCharImpl}; +const eqBoolean = {eq: eqBooleanImpl}; +const eq1 = dict => dict.eq1; +const eq = dict => dict.eq; +const eqArray = dictEq => ({eq: eqArrayImpl(dictEq.eq)}); +const eq1Array = {eq1: dictEq => eqArrayImpl(dictEq.eq)}; +const eqRowCons = dictEqRecord => () => dictIsSymbol => dictEq => ( + { + eqRecord: v => ra => rb => { + const $$get = Record$dUnsafe.unsafeGet(dictIsSymbol.reflectSymbol(Type$dProxy.Proxy)); + return dictEq.eq($$get(ra))($$get(rb)) && dictEqRecord.eqRecord(Type$dProxy.Proxy)(ra)(rb); + } + } +); +const notEq = dictEq => x => y => !dictEq.eq(x)(y); +const notEq1 = dictEq1 => dictEq => { + const eq12 = dictEq1.eq1(dictEq); + return x => y => !eq12(x)(y); +}; +export {eq, eq1, eq1Array, eqArray, eqBoolean, eqChar, eqInt, eqNumber, eqProxy, eqRec, eqRecord, eqRowCons, eqRowNil, eqString, eqUnit, eqVoid, notEq, notEq1}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Data.Equivalence/index.js b/.storybook/purescript-indexer/output-es/Data.Equivalence/index.js new file mode 100644 index 0000000..d492ea2 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Equivalence/index.js @@ -0,0 +1,9 @@ +import * as $runtime from "../runtime.js"; +const Equivalence = x => x; +const semigroupEquivalence = {append: v => v1 => a => b => v(a)(b) && v1(a)(b)}; +const newtypeEquivalence = {Coercible0: () => undefined}; +const monoidEquivalence = {mempty: v => v1 => true, Semigroup0: () => semigroupEquivalence}; +const defaultEquivalence = dictEq => dictEq.eq; +const contravariantEquivalence = {cmap: f => v => x => y => v(f(x))(f(y))}; +const comparisonEquivalence = v => a => b => v(a)(b).tag === "EQ"; +export {Equivalence, comparisonEquivalence, contravariantEquivalence, defaultEquivalence, monoidEquivalence, newtypeEquivalence, semigroupEquivalence}; diff --git a/.storybook/purescript-indexer/output-es/Data.EuclideanRing/foreign.js b/.storybook/purescript-indexer/output-es/Data.EuclideanRing/foreign.js new file mode 100644 index 0000000..057e6c3 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.EuclideanRing/foreign.js @@ -0,0 +1,26 @@ +export const intDegree = function (x) { + return Math.min(Math.abs(x), 2147483647); +}; + +// See the Euclidean definition in +// https://en.m.wikipedia.org/wiki/Modulo_operation. +export const intDiv = function (x) { + return function (y) { + if (y === 0) return 0; + return y > 0 ? Math.floor(x / y) : -Math.floor(x / -y); + }; +}; + +export const intMod = function (x) { + return function (y) { + if (y === 0) return 0; + var yy = Math.abs(y); + return ((x % yy) + yy) % yy; + }; +}; + +export const numDiv = function (n1) { + return function (n2) { + return n1 / n2; + }; +}; diff --git a/.storybook/purescript-indexer/output-es/Data.EuclideanRing/index.js b/.storybook/purescript-indexer/output-es/Data.EuclideanRing/index.js new file mode 100644 index 0000000..cc564cb --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.EuclideanRing/index.js @@ -0,0 +1,25 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dCommutativeRing from "../Data.CommutativeRing/index.js"; +import {intDegree, intDiv, intMod, numDiv} from "./foreign.js"; +const mod = dict => dict.mod; +const gcd = dictEq => dictEuclideanRing => { + const zero = dictEuclideanRing.CommutativeRing0().Ring0().Semiring0().zero; + return a => b => { + if (dictEq.eq(b)(zero)) { return a; } + return gcd(dictEq)(dictEuclideanRing)(b)(dictEuclideanRing.mod(a)(b)); + }; +}; +const euclideanRingNumber = {degree: v => 1, div: numDiv, mod: v => v1 => 0.0, CommutativeRing0: () => Data$dCommutativeRing.commutativeRingNumber}; +const euclideanRingInt = {degree: intDegree, div: intDiv, mod: intMod, CommutativeRing0: () => Data$dCommutativeRing.commutativeRingInt}; +const div = dict => dict.div; +const lcm = dictEq => dictEuclideanRing => { + const Semiring0 = dictEuclideanRing.CommutativeRing0().Ring0().Semiring0(); + const gcd2 = gcd(dictEq)(dictEuclideanRing); + return a => b => { + if (dictEq.eq(a)(Semiring0.zero) || dictEq.eq(b)(Semiring0.zero)) { return Semiring0.zero; } + return dictEuclideanRing.div(Semiring0.mul(a)(b))(gcd2(a)(b)); + }; +}; +const degree = dict => dict.degree; +export {degree, div, euclideanRingInt, euclideanRingNumber, gcd, lcm, mod}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Data.Exists/index.js b/.storybook/purescript-indexer/output-es/Data.Exists/index.js new file mode 100644 index 0000000..bc4c8e1 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Exists/index.js @@ -0,0 +1,5 @@ +import * as $runtime from "../runtime.js"; +import * as Unsafe$dCoerce from "../Unsafe.Coerce/index.js"; +const runExists = Unsafe$dCoerce.unsafeCoerce; +const mkExists = Unsafe$dCoerce.unsafeCoerce; +export {mkExists, runExists}; diff --git a/.storybook/purescript-indexer/output-es/Data.Field/index.js b/.storybook/purescript-indexer/output-es/Data.Field/index.js new file mode 100644 index 0000000..9c35124 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Field/index.js @@ -0,0 +1,3 @@ +import * as $runtime from "../runtime.js"; +const field = dictEuclideanRing => dictDivisionRing => ({EuclideanRing0: () => dictEuclideanRing, DivisionRing1: () => dictDivisionRing}); +export {field}; diff --git a/.storybook/purescript-indexer/output-es/Data.Foldable/foreign.js b/.storybook/purescript-indexer/output-es/Data.Foldable/foreign.js new file mode 100644 index 0000000..8c5cbe4 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Foldable/foreign.js @@ -0,0 +1,25 @@ +export const foldrArray = function (f) { + return function (init) { + return function (xs) { + var acc = init; + var len = xs.length; + for (var i = len - 1; i >= 0; i--) { + acc = f(xs[i])(acc); + } + return acc; + }; + }; +}; + +export const foldlArray = function (f) { + return function (init) { + return function (xs) { + var acc = init; + var len = xs.length; + for (var i = 0; i < len; i++) { + acc = f(acc)(xs[i]); + } + return acc; + }; + }; +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Foldable/index.js b/.storybook/purescript-indexer/output-es/Data.Foldable/index.js new file mode 100644 index 0000000..bbad869 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Foldable/index.js @@ -0,0 +1,389 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dApply from "../Control.Apply/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dMaybe$dFirst from "../Data.Maybe.First/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +import {foldlArray, foldrArray} from "./foreign.js"; +const identity = x => x; +const monoidEndo = /* #__PURE__ */ (() => { + const semigroupEndo1 = {append: v => v1 => x => v(v1(x))}; + return {mempty: x => x, Semigroup0: () => semigroupEndo1}; +})(); +const monoidDual = /* #__PURE__ */ (() => { + const $0 = monoidEndo.Semigroup0(); + const semigroupDual1 = {append: v => v1 => $0.append(v1)(v)}; + return {mempty: monoidEndo.mempty, Semigroup0: () => semigroupDual1}; +})(); +const foldr = dict => dict.foldr; +const indexr = dictFoldable => idx => { + const $2 = dictFoldable.foldr(a => cursor => { + if (cursor.elem.tag === "Just") { return cursor; } + if (cursor.pos === idx) { return {elem: Data$dMaybe.$Maybe("Just", a), pos: cursor.pos}; } + return {pos: cursor.pos + 1 | 0, elem: cursor.elem}; + })({elem: Data$dMaybe.Nothing, pos: 0}); + return x => $2(x).elem; +}; +const $$null = dictFoldable => dictFoldable.foldr(v => v1 => false)(true); +const oneOf = dictFoldable => dictPlus => dictFoldable.foldr(dictPlus.Alt0().alt)(dictPlus.empty); +const oneOfMap = dictFoldable => dictPlus => { + const alt = dictPlus.Alt0().alt; + return f => dictFoldable.foldr(x => alt(f(x)))(dictPlus.empty); +}; +const traverse_ = dictApplicative => { + const $1 = dictApplicative.Apply0(); + const map = $1.Functor0().map; + return dictFoldable => f => dictFoldable.foldr(x => { + const $6 = f(x); + return b => $1.apply(map(v => Control$dApply.identity)($6))(b); + })(dictApplicative.pure(Data$dUnit.unit)); +}; +const for_ = dictApplicative => { + const traverse_1 = traverse_(dictApplicative); + return dictFoldable => { + const $3 = traverse_1(dictFoldable); + return b => a => $3(a)(b); + }; +}; +const sequence_ = dictApplicative => { + const traverse_1 = traverse_(dictApplicative); + return dictFoldable => traverse_1(dictFoldable)(identity); +}; +const foldl = dict => dict.foldl; +const indexl = dictFoldable => idx => { + const $2 = dictFoldable.foldl(cursor => a => { + if (cursor.elem.tag === "Just") { return cursor; } + if (cursor.pos === idx) { return {elem: Data$dMaybe.$Maybe("Just", a), pos: cursor.pos}; } + return {pos: cursor.pos + 1 | 0, elem: cursor.elem}; + })({elem: Data$dMaybe.Nothing, pos: 0}); + return x => $2(x).elem; +}; +const intercalate = dictFoldable => dictMonoid => { + const append = dictMonoid.Semigroup0().append; + return sep => xs => dictFoldable.foldl(v => v1 => { + if (v.init) { return {init: false, acc: v1}; } + return {init: false, acc: append(v.acc)(append(sep)(v1))}; + })({init: true, acc: dictMonoid.mempty})(xs).acc; +}; +const length = dictFoldable => dictSemiring => dictFoldable.foldl(c => v => dictSemiring.add(dictSemiring.one)(c))(dictSemiring.zero); +const maximumBy = dictFoldable => cmp => dictFoldable.foldl(v => v1 => { + if (v.tag === "Nothing") { return Data$dMaybe.$Maybe("Just", v1); } + if (v.tag === "Just") { + return Data$dMaybe.$Maybe( + "Just", + (() => { + if (cmp(v._1)(v1).tag === "GT") { return v._1; } + return v1; + })() + ); + } + $runtime.fail(); +})(Data$dMaybe.Nothing); +const maximum = dictOrd => dictFoldable => maximumBy(dictFoldable)(dictOrd.compare); +const minimumBy = dictFoldable => cmp => dictFoldable.foldl(v => v1 => { + if (v.tag === "Nothing") { return Data$dMaybe.$Maybe("Just", v1); } + if (v.tag === "Just") { + return Data$dMaybe.$Maybe( + "Just", + (() => { + if (cmp(v._1)(v1).tag === "LT") { return v._1; } + return v1; + })() + ); + } + $runtime.fail(); +})(Data$dMaybe.Nothing); +const minimum = dictOrd => dictFoldable => minimumBy(dictFoldable)(dictOrd.compare); +const product = dictFoldable => dictSemiring => dictFoldable.foldl(dictSemiring.mul)(dictSemiring.one); +const sum = dictFoldable => dictSemiring => dictFoldable.foldl(dictSemiring.add)(dictSemiring.zero); +const foldableTuple = {foldr: f => z => v => f(v._2)(z), foldl: f => z => v => f(z)(v._2), foldMap: dictMonoid => f => v => f(v._2)}; +const foldableMultiplicative = {foldr: f => z => v => f(v)(z), foldl: f => z => v => f(z)(v), foldMap: dictMonoid => f => v => f(v)}; +const foldableMaybe = { + foldr: v => v1 => v2 => { + if (v2.tag === "Nothing") { return v1; } + if (v2.tag === "Just") { return v(v2._1)(v1); } + $runtime.fail(); + }, + foldl: v => v1 => v2 => { + if (v2.tag === "Nothing") { return v1; } + if (v2.tag === "Just") { return v(v1)(v2._1); } + $runtime.fail(); + }, + foldMap: dictMonoid => v => v1 => { + if (v1.tag === "Nothing") { return dictMonoid.mempty; } + if (v1.tag === "Just") { return v(v1._1); } + $runtime.fail(); + } +}; +const foldableIdentity = {foldr: f => z => v => f(v)(z), foldl: f => z => v => f(z)(v), foldMap: dictMonoid => f => v => f(v)}; +const foldableEither = { + foldr: v => v1 => v2 => { + if (v2.tag === "Left") { return v1; } + if (v2.tag === "Right") { return v(v2._1)(v1); } + $runtime.fail(); + }, + foldl: v => v1 => v2 => { + if (v2.tag === "Left") { return v1; } + if (v2.tag === "Right") { return v(v1)(v2._1); } + $runtime.fail(); + }, + foldMap: dictMonoid => v => v1 => { + if (v1.tag === "Left") { return dictMonoid.mempty; } + if (v1.tag === "Right") { return v(v1._1); } + $runtime.fail(); + } +}; +const foldableDual = {foldr: f => z => v => f(v)(z), foldl: f => z => v => f(z)(v), foldMap: dictMonoid => f => v => f(v)}; +const foldableDisj = {foldr: f => z => v => f(v)(z), foldl: f => z => v => f(z)(v), foldMap: dictMonoid => f => v => f(v)}; +const foldableConst = {foldr: v => z => v1 => z, foldl: v => z => v1 => z, foldMap: dictMonoid => v => v1 => dictMonoid.mempty}; +const foldableConj = {foldr: f => z => v => f(v)(z), foldl: f => z => v => f(z)(v), foldMap: dictMonoid => f => v => f(v)}; +const foldableAdditive = {foldr: f => z => v => f(v)(z), foldl: f => z => v => f(z)(v), foldMap: dictMonoid => f => v => f(v)}; +const foldMapDefaultR = dictFoldable => dictMonoid => { + const append = dictMonoid.Semigroup0().append; + return f => dictFoldable.foldr(x => acc => append(f(x))(acc))(dictMonoid.mempty); +}; +const foldableArray = { + foldr: foldrArray, + foldl: foldlArray, + foldMap: dictMonoid => { + const append = dictMonoid.Semigroup0().append; + return f => foldableArray.foldr(x => acc => append(f(x))(acc))(dictMonoid.mempty); + } +}; +const foldMapDefaultL = dictFoldable => dictMonoid => { + const append = dictMonoid.Semigroup0().append; + return f => dictFoldable.foldl(acc => x => append(acc)(f(x)))(dictMonoid.mempty); +}; +const foldMap = dict => dict.foldMap; +const foldableApp = dictFoldable => ( + {foldr: f => i => v => dictFoldable.foldr(f)(i)(v), foldl: f => i => v => dictFoldable.foldl(f)(i)(v), foldMap: dictMonoid => dictFoldable.foldMap(dictMonoid)} +); +const foldableCompose = dictFoldable => dictFoldable1 => ( + { + foldr: f => i => v => dictFoldable.foldr((() => { + const $5 = dictFoldable1.foldr(f); + return b => a => $5(a)(b); + })())(i)(v), + foldl: f => i => v => dictFoldable.foldl(dictFoldable1.foldl(f))(i)(v), + foldMap: dictMonoid => { + const foldMap4 = dictFoldable.foldMap(dictMonoid); + const foldMap5 = dictFoldable1.foldMap(dictMonoid); + return f => v => foldMap4(foldMap5(f))(v); + } + } +); +const foldableCoproduct = dictFoldable => dictFoldable1 => ( + { + foldr: f => z => { + const $4 = dictFoldable.foldr(f)(z); + const $5 = dictFoldable1.foldr(f)(z); + return v2 => { + if (v2.tag === "Left") { return $4(v2._1); } + if (v2.tag === "Right") { return $5(v2._1); } + $runtime.fail(); + }; + }, + foldl: f => z => { + const $4 = dictFoldable.foldl(f)(z); + const $5 = dictFoldable1.foldl(f)(z); + return v2 => { + if (v2.tag === "Left") { return $4(v2._1); } + if (v2.tag === "Right") { return $5(v2._1); } + $runtime.fail(); + }; + }, + foldMap: dictMonoid => { + const foldMap4 = dictFoldable.foldMap(dictMonoid); + const foldMap5 = dictFoldable1.foldMap(dictMonoid); + return f => { + const $6 = foldMap4(f); + const $7 = foldMap5(f); + return v2 => { + if (v2.tag === "Left") { return $6(v2._1); } + if (v2.tag === "Right") { return $7(v2._1); } + $runtime.fail(); + }; + }; + } + } +); +const foldableFirst = { + foldr: f => z => v => { + if (v.tag === "Nothing") { return z; } + if (v.tag === "Just") { return f(v._1)(z); } + $runtime.fail(); + }, + foldl: f => z => v => { + if (v.tag === "Nothing") { return z; } + if (v.tag === "Just") { return f(z)(v._1); } + $runtime.fail(); + }, + foldMap: dictMonoid => f => v => { + if (v.tag === "Nothing") { return dictMonoid.mempty; } + if (v.tag === "Just") { return f(v._1); } + $runtime.fail(); + } +}; +const foldableLast = { + foldr: f => z => v => { + if (v.tag === "Nothing") { return z; } + if (v.tag === "Just") { return f(v._1)(z); } + $runtime.fail(); + }, + foldl: f => z => v => { + if (v.tag === "Nothing") { return z; } + if (v.tag === "Just") { return f(z)(v._1); } + $runtime.fail(); + }, + foldMap: dictMonoid => f => v => { + if (v.tag === "Nothing") { return dictMonoid.mempty; } + if (v.tag === "Just") { return f(v._1); } + $runtime.fail(); + } +}; +const foldableProduct = dictFoldable => dictFoldable1 => ( + { + foldr: f => z => v => dictFoldable.foldr(f)(dictFoldable1.foldr(f)(z)(v._2))(v._1), + foldl: f => z => v => dictFoldable1.foldl(f)(dictFoldable.foldl(f)(z)(v._1))(v._2), + foldMap: dictMonoid => { + const append = dictMonoid.Semigroup0().append; + const foldMap4 = dictFoldable.foldMap(dictMonoid); + const foldMap5 = dictFoldable1.foldMap(dictMonoid); + return f => v => append(foldMap4(f)(v._1))(foldMap5(f)(v._2)); + } + } +); +const foldlDefault = dictFoldable => { + const foldMap2 = dictFoldable.foldMap(monoidDual); + return c => u => xs => foldMap2(x => a => c(a)(x))(xs)(u); +}; +const foldrDefault = dictFoldable => { + const foldMap2 = dictFoldable.foldMap(monoidEndo); + return c => u => xs => foldMap2(x => c(x))(xs)(u); +}; +const lookup = dictFoldable => { + const foldMap2 = dictFoldable.foldMap(Data$dMaybe$dFirst.monoidFirst); + return dictEq => a => foldMap2(v => { + if (dictEq.eq(a)(v._1)) { return Data$dMaybe.$Maybe("Just", v._2); } + return Data$dMaybe.Nothing; + }); +}; +const surroundMap = dictFoldable => { + const foldMap2 = dictFoldable.foldMap(monoidEndo); + return dictSemigroup => d => t => f => foldMap2(a => m => dictSemigroup.append(d)(dictSemigroup.append(t(a))(m)))(f)(d); +}; +const surround = dictFoldable => { + const surroundMap1 = surroundMap(dictFoldable); + return dictSemigroup => { + const surroundMap2 = surroundMap1(dictSemigroup); + return d => surroundMap2(d)(identity); + }; +}; +const foldM = dictFoldable => dictMonad => { + const bind = dictMonad.Bind1().bind; + const pure = dictMonad.Applicative0().pure; + return f => b0 => dictFoldable.foldl(b => a => bind(b)(a$1 => f(a$1)(a)))(pure(b0)); +}; +const fold = dictFoldable => dictMonoid => dictFoldable.foldMap(dictMonoid)(identity); +const findMap = dictFoldable => p => dictFoldable.foldl(v => v1 => { + if (v.tag === "Nothing") { return p(v1); } + return v; +})(Data$dMaybe.Nothing); +const find = dictFoldable => p => dictFoldable.foldl(v => v1 => { + if (v.tag === "Nothing") { + if (p(v1)) { return Data$dMaybe.$Maybe("Just", v1); } + return v; + } + return v; +})(Data$dMaybe.Nothing); +const any = dictFoldable => dictHeytingAlgebra => dictFoldable.foldMap((() => { + const semigroupDisj1 = {append: v => v1 => dictHeytingAlgebra.disj(v)(v1)}; + return {mempty: dictHeytingAlgebra.ff, Semigroup0: () => semigroupDisj1}; +})()); +const elem = dictFoldable => { + const any1 = dictFoldable.foldMap((() => { + const semigroupDisj1 = {append: v => v1 => v || v1}; + return {mempty: false, Semigroup0: () => semigroupDisj1}; + })()); + return dictEq => x => any1(dictEq.eq(x)); +}; +const notElem = dictFoldable => { + const any1 = dictFoldable.foldMap((() => { + const semigroupDisj1 = {append: v => v1 => v || v1}; + return {mempty: false, Semigroup0: () => semigroupDisj1}; + })()); + return dictEq => x => { + const $4 = any1(dictEq.eq(x)); + return x$1 => !$4(x$1); + }; +}; +const or = dictFoldable => dictHeytingAlgebra => dictFoldable.foldMap((() => { + const semigroupDisj1 = {append: v => v1 => dictHeytingAlgebra.disj(v)(v1)}; + return {mempty: dictHeytingAlgebra.ff, Semigroup0: () => semigroupDisj1}; +})())(identity); +const all = dictFoldable => dictHeytingAlgebra => dictFoldable.foldMap((() => { + const semigroupConj1 = {append: v => v1 => dictHeytingAlgebra.conj(v)(v1)}; + return {mempty: dictHeytingAlgebra.tt, Semigroup0: () => semigroupConj1}; +})()); +const and = dictFoldable => dictHeytingAlgebra => dictFoldable.foldMap((() => { + const semigroupConj1 = {append: v => v1 => dictHeytingAlgebra.conj(v)(v1)}; + return {mempty: dictHeytingAlgebra.tt, Semigroup0: () => semigroupConj1}; +})())(identity); +export { + all, + and, + any, + elem, + find, + findMap, + fold, + foldM, + foldMap, + foldMapDefaultL, + foldMapDefaultR, + foldableAdditive, + foldableApp, + foldableArray, + foldableCompose, + foldableConj, + foldableConst, + foldableCoproduct, + foldableDisj, + foldableDual, + foldableEither, + foldableFirst, + foldableIdentity, + foldableLast, + foldableMaybe, + foldableMultiplicative, + foldableProduct, + foldableTuple, + foldl, + foldlDefault, + foldr, + foldrDefault, + for_, + identity, + indexl, + indexr, + intercalate, + length, + lookup, + maximum, + maximumBy, + minimum, + minimumBy, + monoidDual, + monoidEndo, + notElem, + $$null as null, + oneOf, + oneOfMap, + or, + product, + sequence_, + sum, + surround, + surroundMap, + traverse_ +}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Data.FoldableWithIndex/index.js b/.storybook/purescript-indexer/output-es/Data.FoldableWithIndex/index.js new file mode 100644 index 0000000..5e4ce72 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.FoldableWithIndex/index.js @@ -0,0 +1,422 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dApply from "../Control.Apply/index.js"; +import * as Data$dEither from "../Data.Either/index.js"; +import * as Data$dFoldable from "../Data.Foldable/index.js"; +import * as Data$dFunctorWithIndex from "../Data.FunctorWithIndex/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +const monoidEndo = /* #__PURE__ */ (() => { + const semigroupEndo1 = {append: v => v1 => x => v(v1(x))}; + return {mempty: x => x, Semigroup0: () => semigroupEndo1}; +})(); +const monoidDual = /* #__PURE__ */ (() => { + const $0 = monoidEndo.Semigroup0(); + const semigroupDual1 = {append: v => v1 => $0.append(v1)(v)}; + return {mempty: monoidEndo.mempty, Semigroup0: () => semigroupDual1}; +})(); +const foldrWithIndex = dict => dict.foldrWithIndex; +const traverseWithIndex_ = dictApplicative => { + const $1 = dictApplicative.Apply0(); + const map = $1.Functor0().map; + return dictFoldableWithIndex => f => dictFoldableWithIndex.foldrWithIndex(i => { + const $6 = f(i); + return x => { + const $8 = $6(x); + return b => $1.apply(map(v => Control$dApply.identity)($8))(b); + }; + })(dictApplicative.pure(Data$dUnit.unit)); +}; +const forWithIndex_ = dictApplicative => { + const traverseWithIndex_1 = traverseWithIndex_(dictApplicative); + return dictFoldableWithIndex => { + const $3 = traverseWithIndex_1(dictFoldableWithIndex); + return b => a => $3(a)(b); + }; +}; +const foldrDefault = dictFoldableWithIndex => f => dictFoldableWithIndex.foldrWithIndex(v => f); +const foldlWithIndex = dict => dict.foldlWithIndex; +const foldlDefault = dictFoldableWithIndex => f => dictFoldableWithIndex.foldlWithIndex(v => f); +const foldableWithIndexTuple = { + foldrWithIndex: f => z => v => f(Data$dUnit.unit)(v._2)(z), + foldlWithIndex: f => z => v => f(Data$dUnit.unit)(z)(v._2), + foldMapWithIndex: dictMonoid => f => v => f(Data$dUnit.unit)(v._2), + Foldable0: () => Data$dFoldable.foldableTuple +}; +const foldableWithIndexMultiplicative = { + foldrWithIndex: f => { + const $1 = f(Data$dUnit.unit); + return z => v => $1(v)(z); + }, + foldlWithIndex: f => f(Data$dUnit.unit), + foldMapWithIndex: dictMonoid => f => f(Data$dUnit.unit), + Foldable0: () => Data$dFoldable.foldableMultiplicative +}; +const foldableWithIndexMaybe = { + foldrWithIndex: f => { + const $1 = f(Data$dUnit.unit); + return v1 => v2 => { + if (v2.tag === "Nothing") { return v1; } + if (v2.tag === "Just") { return $1(v2._1)(v1); } + $runtime.fail(); + }; + }, + foldlWithIndex: f => { + const $1 = f(Data$dUnit.unit); + return v1 => v2 => { + if (v2.tag === "Nothing") { return v1; } + if (v2.tag === "Just") { return $1(v1)(v2._1); } + $runtime.fail(); + }; + }, + foldMapWithIndex: dictMonoid => f => { + const $2 = f(Data$dUnit.unit); + return v1 => { + if (v1.tag === "Nothing") { return dictMonoid.mempty; } + if (v1.tag === "Just") { return $2(v1._1); } + $runtime.fail(); + }; + }, + Foldable0: () => Data$dFoldable.foldableMaybe +}; +const foldableWithIndexLast = { + foldrWithIndex: f => { + const $1 = f(Data$dUnit.unit); + return z => v => { + if (v.tag === "Nothing") { return z; } + if (v.tag === "Just") { return $1(v._1)(z); } + $runtime.fail(); + }; + }, + foldlWithIndex: f => { + const $1 = f(Data$dUnit.unit); + return z => v => { + if (v.tag === "Nothing") { return z; } + if (v.tag === "Just") { return $1(z)(v._1); } + $runtime.fail(); + }; + }, + foldMapWithIndex: dictMonoid => f => { + const $2 = f(Data$dUnit.unit); + return v => { + if (v.tag === "Nothing") { return dictMonoid.mempty; } + if (v.tag === "Just") { return $2(v._1); } + $runtime.fail(); + }; + }, + Foldable0: () => Data$dFoldable.foldableLast +}; +const foldableWithIndexIdentity = { + foldrWithIndex: f => z => v => f(Data$dUnit.unit)(v)(z), + foldlWithIndex: f => z => v => f(Data$dUnit.unit)(z)(v), + foldMapWithIndex: dictMonoid => f => v => f(Data$dUnit.unit)(v), + Foldable0: () => Data$dFoldable.foldableIdentity +}; +const foldableWithIndexFirst = { + foldrWithIndex: f => { + const $1 = f(Data$dUnit.unit); + return z => v => { + if (v.tag === "Nothing") { return z; } + if (v.tag === "Just") { return $1(v._1)(z); } + $runtime.fail(); + }; + }, + foldlWithIndex: f => { + const $1 = f(Data$dUnit.unit); + return z => v => { + if (v.tag === "Nothing") { return z; } + if (v.tag === "Just") { return $1(z)(v._1); } + $runtime.fail(); + }; + }, + foldMapWithIndex: dictMonoid => f => { + const $2 = f(Data$dUnit.unit); + return v => { + if (v.tag === "Nothing") { return dictMonoid.mempty; } + if (v.tag === "Just") { return $2(v._1); } + $runtime.fail(); + }; + }, + Foldable0: () => Data$dFoldable.foldableFirst +}; +const foldableWithIndexEither = { + foldrWithIndex: v => v1 => v2 => { + if (v2.tag === "Left") { return v1; } + if (v2.tag === "Right") { return v(Data$dUnit.unit)(v2._1)(v1); } + $runtime.fail(); + }, + foldlWithIndex: v => v1 => v2 => { + if (v2.tag === "Left") { return v1; } + if (v2.tag === "Right") { return v(Data$dUnit.unit)(v1)(v2._1); } + $runtime.fail(); + }, + foldMapWithIndex: dictMonoid => v => v1 => { + if (v1.tag === "Left") { return dictMonoid.mempty; } + if (v1.tag === "Right") { return v(Data$dUnit.unit)(v1._1); } + $runtime.fail(); + }, + Foldable0: () => Data$dFoldable.foldableEither +}; +const foldableWithIndexDual = { + foldrWithIndex: f => { + const $1 = f(Data$dUnit.unit); + return z => v => $1(v)(z); + }, + foldlWithIndex: f => f(Data$dUnit.unit), + foldMapWithIndex: dictMonoid => f => f(Data$dUnit.unit), + Foldable0: () => Data$dFoldable.foldableDual +}; +const foldableWithIndexDisj = { + foldrWithIndex: f => { + const $1 = f(Data$dUnit.unit); + return z => v => $1(v)(z); + }, + foldlWithIndex: f => f(Data$dUnit.unit), + foldMapWithIndex: dictMonoid => f => f(Data$dUnit.unit), + Foldable0: () => Data$dFoldable.foldableDisj +}; +const foldableWithIndexConst = { + foldrWithIndex: v => z => v1 => z, + foldlWithIndex: v => z => v1 => z, + foldMapWithIndex: dictMonoid => v => v1 => dictMonoid.mempty, + Foldable0: () => Data$dFoldable.foldableConst +}; +const foldableWithIndexConj = { + foldrWithIndex: f => { + const $1 = f(Data$dUnit.unit); + return z => v => $1(v)(z); + }, + foldlWithIndex: f => f(Data$dUnit.unit), + foldMapWithIndex: dictMonoid => f => f(Data$dUnit.unit), + Foldable0: () => Data$dFoldable.foldableConj +}; +const foldableWithIndexAdditive = { + foldrWithIndex: f => { + const $1 = f(Data$dUnit.unit); + return z => v => $1(v)(z); + }, + foldlWithIndex: f => f(Data$dUnit.unit), + foldMapWithIndex: dictMonoid => f => f(Data$dUnit.unit), + Foldable0: () => Data$dFoldable.foldableAdditive +}; +const foldWithIndexM = dictFoldableWithIndex => dictMonad => { + const bind = dictMonad.Bind1().bind; + const pure = dictMonad.Applicative0().pure; + return f => a0 => dictFoldableWithIndex.foldlWithIndex(i => ma => b => bind(ma)((() => { + const $9 = f(i); + return a => $9(a)(b); + })()))(pure(a0)); +}; +const foldMapWithIndexDefaultR = dictFoldableWithIndex => dictMonoid => { + const append = dictMonoid.Semigroup0().append; + return f => dictFoldableWithIndex.foldrWithIndex(i => x => acc => append(f(i)(x))(acc))(dictMonoid.mempty); +}; +const foldableWithIndexArray = { + foldrWithIndex: f => z => { + const $2 = Data$dFoldable.foldrArray(v => y => f(v._1)(v._2)(y))(z); + const $3 = Data$dFunctorWithIndex.mapWithIndexArray(Data$dTuple.Tuple); + return x => $2($3(x)); + }, + foldlWithIndex: f => z => { + const $2 = Data$dFoldable.foldlArray(y => v => f(v._1)(y)(v._2))(z); + const $3 = Data$dFunctorWithIndex.mapWithIndexArray(Data$dTuple.Tuple); + return x => $2($3(x)); + }, + foldMapWithIndex: dictMonoid => { + const append = dictMonoid.Semigroup0().append; + return f => foldableWithIndexArray.foldrWithIndex(i => x => acc => append(f(i)(x))(acc))(dictMonoid.mempty); + }, + Foldable0: () => Data$dFoldable.foldableArray +}; +const foldMapWithIndexDefaultL = dictFoldableWithIndex => dictMonoid => { + const append = dictMonoid.Semigroup0().append; + return f => dictFoldableWithIndex.foldlWithIndex(i => acc => x => append(acc)(f(i)(x)))(dictMonoid.mempty); +}; +const foldMapWithIndex = dict => dict.foldMapWithIndex; +const foldableWithIndexApp = dictFoldableWithIndex => { + const $1 = dictFoldableWithIndex.Foldable0(); + const foldableApp = {foldr: f => i => v => $1.foldr(f)(i)(v), foldl: f => i => v => $1.foldl(f)(i)(v), foldMap: dictMonoid => $1.foldMap(dictMonoid)}; + return { + foldrWithIndex: f => z => v => dictFoldableWithIndex.foldrWithIndex(f)(z)(v), + foldlWithIndex: f => z => v => dictFoldableWithIndex.foldlWithIndex(f)(z)(v), + foldMapWithIndex: dictMonoid => dictFoldableWithIndex.foldMapWithIndex(dictMonoid), + Foldable0: () => foldableApp + }; +}; +const foldableWithIndexCompose = dictFoldableWithIndex => { + const $1 = dictFoldableWithIndex.Foldable0(); + return dictFoldableWithIndex1 => { + const $3 = dictFoldableWithIndex1.Foldable0(); + const foldableCompose1 = { + foldr: f => i => v => $1.foldr((() => { + const $7 = $3.foldr(f); + return b => a => $7(a)(b); + })())(i)(v), + foldl: f => i => v => $1.foldl($3.foldl(f))(i)(v), + foldMap: dictMonoid => { + const foldMap4 = $1.foldMap(dictMonoid); + const foldMap5 = $3.foldMap(dictMonoid); + return f => v => foldMap4(foldMap5(f))(v); + } + }; + return { + foldrWithIndex: f => i => v => dictFoldableWithIndex.foldrWithIndex(a => { + const $9 = dictFoldableWithIndex1.foldrWithIndex(Data$dTuple.curry(f)(a)); + return b => a$1 => $9(a$1)(b); + })(i)(v), + foldlWithIndex: f => i => v => dictFoldableWithIndex.foldlWithIndex(x => dictFoldableWithIndex1.foldlWithIndex(Data$dTuple.curry(f)(x)))(i)(v), + foldMapWithIndex: dictMonoid => { + const foldMapWithIndex3 = dictFoldableWithIndex.foldMapWithIndex(dictMonoid); + const foldMapWithIndex4 = dictFoldableWithIndex1.foldMapWithIndex(dictMonoid); + return f => v => foldMapWithIndex3(x => foldMapWithIndex4(Data$dTuple.curry(f)(x)))(v); + }, + Foldable0: () => foldableCompose1 + }; + }; +}; +const foldableWithIndexCoproduct = dictFoldableWithIndex => { + const foldableCoproduct = Data$dFoldable.foldableCoproduct(dictFoldableWithIndex.Foldable0()); + return dictFoldableWithIndex1 => { + const foldableCoproduct1 = foldableCoproduct(dictFoldableWithIndex1.Foldable0()); + return { + foldrWithIndex: f => z => { + const $6 = dictFoldableWithIndex.foldrWithIndex(x => f(Data$dEither.$Either("Left", x)))(z); + const $7 = dictFoldableWithIndex1.foldrWithIndex(x => f(Data$dEither.$Either("Right", x)))(z); + return v2 => { + if (v2.tag === "Left") { return $6(v2._1); } + if (v2.tag === "Right") { return $7(v2._1); } + $runtime.fail(); + }; + }, + foldlWithIndex: f => z => { + const $6 = dictFoldableWithIndex.foldlWithIndex(x => f(Data$dEither.$Either("Left", x)))(z); + const $7 = dictFoldableWithIndex1.foldlWithIndex(x => f(Data$dEither.$Either("Right", x)))(z); + return v2 => { + if (v2.tag === "Left") { return $6(v2._1); } + if (v2.tag === "Right") { return $7(v2._1); } + $runtime.fail(); + }; + }, + foldMapWithIndex: dictMonoid => { + const foldMapWithIndex3 = dictFoldableWithIndex.foldMapWithIndex(dictMonoid); + const foldMapWithIndex4 = dictFoldableWithIndex1.foldMapWithIndex(dictMonoid); + return f => { + const $8 = foldMapWithIndex3(x => f(Data$dEither.$Either("Left", x))); + const $9 = foldMapWithIndex4(x => f(Data$dEither.$Either("Right", x))); + return v2 => { + if (v2.tag === "Left") { return $8(v2._1); } + if (v2.tag === "Right") { return $9(v2._1); } + $runtime.fail(); + }; + }; + }, + Foldable0: () => foldableCoproduct1 + }; + }; +}; +const foldableWithIndexProduct = dictFoldableWithIndex => { + const foldableProduct = Data$dFoldable.foldableProduct(dictFoldableWithIndex.Foldable0()); + return dictFoldableWithIndex1 => { + const foldableProduct1 = foldableProduct(dictFoldableWithIndex1.Foldable0()); + return { + foldrWithIndex: f => z => v => dictFoldableWithIndex.foldrWithIndex(x => f(Data$dEither.$Either("Left", x)))(dictFoldableWithIndex1.foldrWithIndex(x => f(Data$dEither.$Either( + "Right", + x + )))(z)(v._2))(v._1), + foldlWithIndex: f => z => v => dictFoldableWithIndex1.foldlWithIndex(x => f(Data$dEither.$Either("Right", x)))(dictFoldableWithIndex.foldlWithIndex(x => f(Data$dEither.$Either( + "Left", + x + )))(z)(v._1))(v._2), + foldMapWithIndex: dictMonoid => { + const append = dictMonoid.Semigroup0().append; + const foldMapWithIndex3 = dictFoldableWithIndex.foldMapWithIndex(dictMonoid); + const foldMapWithIndex4 = dictFoldableWithIndex1.foldMapWithIndex(dictMonoid); + return f => v => append(foldMapWithIndex3(x => f(Data$dEither.$Either("Left", x)))(v._1))(foldMapWithIndex4(x => f(Data$dEither.$Either("Right", x)))(v._2)); + }, + Foldable0: () => foldableProduct1 + }; + }; +}; +const foldlWithIndexDefault = dictFoldableWithIndex => { + const foldMapWithIndex1 = dictFoldableWithIndex.foldMapWithIndex(monoidDual); + return c => u => xs => foldMapWithIndex1(i => { + const $6 = c(i); + return x => a => $6(a)(x); + })(xs)(u); +}; +const foldrWithIndexDefault = dictFoldableWithIndex => { + const foldMapWithIndex1 = dictFoldableWithIndex.foldMapWithIndex(monoidEndo); + return c => u => xs => foldMapWithIndex1(i => c(i))(xs)(u); +}; +const surroundMapWithIndex = dictFoldableWithIndex => { + const foldMapWithIndex1 = dictFoldableWithIndex.foldMapWithIndex(monoidEndo); + return dictSemigroup => d => t => f => foldMapWithIndex1(i => a => m => dictSemigroup.append(d)(dictSemigroup.append(t(i)(a))(m)))(f)(d); +}; +const foldMapDefault = dictFoldableWithIndex => dictMonoid => { + const foldMapWithIndex2 = dictFoldableWithIndex.foldMapWithIndex(dictMonoid); + return f => foldMapWithIndex2(v => f); +}; +const findWithIndex = dictFoldableWithIndex => p => dictFoldableWithIndex.foldlWithIndex(v => v1 => v2 => { + if (v1.tag === "Nothing") { + if (p(v)(v2)) { return Data$dMaybe.$Maybe("Just", {index: v, value: v2}); } + return v1; + } + return v1; +})(Data$dMaybe.Nothing); +const findMapWithIndex = dictFoldableWithIndex => f => dictFoldableWithIndex.foldlWithIndex(v => v1 => v2 => { + if (v1.tag === "Nothing") { return f(v)(v2); } + return v1; +})(Data$dMaybe.Nothing); +const anyWithIndex = dictFoldableWithIndex => dictHeytingAlgebra => { + const foldMapWithIndex2 = dictFoldableWithIndex.foldMapWithIndex((() => { + const semigroupDisj1 = {append: v => v1 => dictHeytingAlgebra.disj(v)(v1)}; + return {mempty: dictHeytingAlgebra.ff, Semigroup0: () => semigroupDisj1}; + })()); + return t => foldMapWithIndex2(i => t(i)); +}; +const allWithIndex = dictFoldableWithIndex => dictHeytingAlgebra => { + const foldMapWithIndex2 = dictFoldableWithIndex.foldMapWithIndex((() => { + const semigroupConj1 = {append: v => v1 => dictHeytingAlgebra.conj(v)(v1)}; + return {mempty: dictHeytingAlgebra.tt, Semigroup0: () => semigroupConj1}; + })()); + return t => foldMapWithIndex2(i => t(i)); +}; +export { + allWithIndex, + anyWithIndex, + findMapWithIndex, + findWithIndex, + foldMapDefault, + foldMapWithIndex, + foldMapWithIndexDefaultL, + foldMapWithIndexDefaultR, + foldWithIndexM, + foldableWithIndexAdditive, + foldableWithIndexApp, + foldableWithIndexArray, + foldableWithIndexCompose, + foldableWithIndexConj, + foldableWithIndexConst, + foldableWithIndexCoproduct, + foldableWithIndexDisj, + foldableWithIndexDual, + foldableWithIndexEither, + foldableWithIndexFirst, + foldableWithIndexIdentity, + foldableWithIndexLast, + foldableWithIndexMaybe, + foldableWithIndexMultiplicative, + foldableWithIndexProduct, + foldableWithIndexTuple, + foldlDefault, + foldlWithIndex, + foldlWithIndexDefault, + foldrDefault, + foldrWithIndex, + foldrWithIndexDefault, + forWithIndex_, + monoidDual, + monoidEndo, + surroundMapWithIndex, + traverseWithIndex_ +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Function.Uncurried/foreign.js b/.storybook/purescript-indexer/output-es/Data.Function.Uncurried/foreign.js new file mode 100644 index 0000000..b4bc68d --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Function.Uncurried/foreign.js @@ -0,0 +1,218 @@ +// module Data.Function.Uncurried + +export const mkFn0 = function (fn) { + return function () { + return fn(); + }; +}; + +export const mkFn2 = function (fn) { + /* jshint maxparams: 2 */ + return function (a, b) { + return fn(a)(b); + }; +}; + +export const mkFn3 = function (fn) { + /* jshint maxparams: 3 */ + return function (a, b, c) { + return fn(a)(b)(c); + }; +}; + +export const mkFn4 = function (fn) { + /* jshint maxparams: 4 */ + return function (a, b, c, d) { + return fn(a)(b)(c)(d); + }; +}; + +export const mkFn5 = function (fn) { + /* jshint maxparams: 5 */ + return function (a, b, c, d, e) { + return fn(a)(b)(c)(d)(e); + }; +}; + +export const mkFn6 = function (fn) { + /* jshint maxparams: 6 */ + return function (a, b, c, d, e, f) { + return fn(a)(b)(c)(d)(e)(f); + }; +}; + +export const mkFn7 = function (fn) { + /* jshint maxparams: 7 */ + return function (a, b, c, d, e, f, g) { + return fn(a)(b)(c)(d)(e)(f)(g); + }; +}; + +export const mkFn8 = function (fn) { + /* jshint maxparams: 8 */ + return function (a, b, c, d, e, f, g, h) { + return fn(a)(b)(c)(d)(e)(f)(g)(h); + }; +}; + +export const mkFn9 = function (fn) { + /* jshint maxparams: 9 */ + return function (a, b, c, d, e, f, g, h, i) { + return fn(a)(b)(c)(d)(e)(f)(g)(h)(i); + }; +}; + +export const mkFn10 = function (fn) { + /* jshint maxparams: 10 */ + return function (a, b, c, d, e, f, g, h, i, j) { + return fn(a)(b)(c)(d)(e)(f)(g)(h)(i)(j); + }; +}; + +export const runFn0 = function (fn) { + return fn(); +}; + +export const runFn2 = function (fn) { + return function (a) { + return function (b) { + return fn(a, b); + }; + }; +}; + +export const runFn3 = function (fn) { + return function (a) { + return function (b) { + return function (c) { + return fn(a, b, c); + }; + }; + }; +}; + +export const runFn4 = function (fn) { + return function (a) { + return function (b) { + return function (c) { + return function (d) { + return fn(a, b, c, d); + }; + }; + }; + }; +}; + +export const runFn5 = function (fn) { + return function (a) { + return function (b) { + return function (c) { + return function (d) { + return function (e) { + return fn(a, b, c, d, e); + }; + }; + }; + }; + }; +}; + +export const runFn6 = function (fn) { + return function (a) { + return function (b) { + return function (c) { + return function (d) { + return function (e) { + return function (f) { + return fn(a, b, c, d, e, f); + }; + }; + }; + }; + }; + }; +}; + +export const runFn7 = function (fn) { + return function (a) { + return function (b) { + return function (c) { + return function (d) { + return function (e) { + return function (f) { + return function (g) { + return fn(a, b, c, d, e, f, g); + }; + }; + }; + }; + }; + }; + }; +}; + +export const runFn8 = function (fn) { + return function (a) { + return function (b) { + return function (c) { + return function (d) { + return function (e) { + return function (f) { + return function (g) { + return function (h) { + return fn(a, b, c, d, e, f, g, h); + }; + }; + }; + }; + }; + }; + }; + }; +}; + +export const runFn9 = function (fn) { + return function (a) { + return function (b) { + return function (c) { + return function (d) { + return function (e) { + return function (f) { + return function (g) { + return function (h) { + return function (i) { + return fn(a, b, c, d, e, f, g, h, i); + }; + }; + }; + }; + }; + }; + }; + }; + }; +}; + +export const runFn10 = function (fn) { + return function (a) { + return function (b) { + return function (c) { + return function (d) { + return function (e) { + return function (f) { + return function (g) { + return function (h) { + return function (i) { + return function (j) { + return fn(a, b, c, d, e, f, g, h, i, j); + }; + }; + }; + }; + }; + }; + }; + }; + }; + }; +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Function.Uncurried/index.js b/.storybook/purescript-indexer/output-es/Data.Function.Uncurried/index.js new file mode 100644 index 0000000..16d861f --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Function.Uncurried/index.js @@ -0,0 +1,6 @@ +import * as $runtime from "../runtime.js"; +import {mkFn0, mkFn10, mkFn2, mkFn3, mkFn4, mkFn5, mkFn6, mkFn7, mkFn8, mkFn9, runFn0, runFn10, runFn2, runFn3, runFn4, runFn5, runFn6, runFn7, runFn8, runFn9} from "./foreign.js"; +const runFn1 = f => f; +const mkFn1 = f => f; +export {mkFn1, runFn1}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Data.Function/index.js b/.storybook/purescript-indexer/output-es/Data.Function/index.js new file mode 100644 index 0000000..57962e1 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Function/index.js @@ -0,0 +1,25 @@ +import * as $runtime from "../runtime.js"; +const on = f => g => x => y => f(g(x))(g(y)); +const flip = f => b => a => f(a)(b); +const $$const = a => v => a; +const applyN = 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 n = go$a0, acc = go$a1; + if (n <= 0) { + go$c = false; + go$r = acc; + continue; + } + go$a0 = n - 1 | 0; + go$a1 = f(acc); + continue; + }; + return go$r; + }; + return go; +}; +const applyFlipped = x => f => f(x); +const apply = f => x => f(x); +export {apply, applyFlipped, applyN, $$const as const, flip, on}; diff --git a/.storybook/purescript-indexer/output-es/Data.Functor.App/index.js b/.storybook/purescript-indexer/output-es/Data.Functor.App/index.js new file mode 100644 index 0000000..465c0f7 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Functor.App/index.js @@ -0,0 +1,78 @@ +import * as $runtime from "../runtime.js"; +import * as Unsafe$dCoerce from "../Unsafe.Coerce/index.js"; +const App = x => x; +const showApp = dictShow => ({show: v => "(App " + (dictShow.show(v) + ")")}); +const semigroupApp = dictApply => { + const map = dictApply.Functor0().map; + return dictSemigroup => ({append: v => v1 => dictApply.apply(map(dictSemigroup.append)(v))(v1)}); +}; +const plusApp = dictPlus => dictPlus; +const newtypeApp = {Coercible0: () => undefined}; +const monoidApp = dictApplicative => { + const $1 = dictApplicative.Apply0(); + const map = $1.Functor0().map; + return dictMonoid => { + const $4 = dictMonoid.Semigroup0(); + const semigroupApp2 = {append: v => v1 => $1.apply(map($4.append)(v))(v1)}; + return {mempty: dictApplicative.pure(dictMonoid.mempty), Semigroup0: () => semigroupApp2}; + }; +}; +const monadPlusApp = dictMonadPlus => dictMonadPlus; +const monadApp = dictMonad => dictMonad; +const lazyApp = dictLazy => dictLazy; +const hoistLowerApp = Unsafe$dCoerce.unsafeCoerce; +const hoistLiftApp = Unsafe$dCoerce.unsafeCoerce; +const hoistApp = f => v => f(v); +const functorApp = dictFunctor => dictFunctor; +const extendApp = dictExtend => dictExtend; +const eqApp = dictEq1 => dictEq => { + const eq11 = dictEq1.eq1(dictEq); + return {eq: x => y => eq11(x)(y)}; +}; +const ordApp = dictOrd1 => { + const $1 = dictOrd1.Eq10(); + return dictOrd => { + const compare11 = dictOrd1.compare1(dictOrd); + const eq11 = $1.eq1(dictOrd.Eq0()); + const eqApp2 = {eq: x => y => eq11(x)(y)}; + return {compare: x => y => compare11(x)(y), Eq0: () => eqApp2}; + }; +}; +const eq1App = dictEq1 => ({eq1: dictEq => dictEq1.eq1(dictEq)}); +const ord1App = dictOrd1 => { + const $1 = dictOrd1.Eq10(); + const eq1App1 = {eq1: dictEq => $1.eq1(dictEq)}; + return {compare1: dictOrd => dictOrd1.compare1(dictOrd), Eq10: () => eq1App1}; +}; +const comonadApp = dictComonad => dictComonad; +const bindApp = dictBind => dictBind; +const applyApp = dictApply => dictApply; +const applicativeApp = dictApplicative => dictApplicative; +const alternativeApp = dictAlternative => dictAlternative; +const altApp = dictAlt => dictAlt; +export { + App, + altApp, + alternativeApp, + applicativeApp, + applyApp, + bindApp, + comonadApp, + eq1App, + eqApp, + extendApp, + functorApp, + hoistApp, + hoistLiftApp, + hoistLowerApp, + lazyApp, + monadApp, + monadPlusApp, + monoidApp, + newtypeApp, + ord1App, + ordApp, + plusApp, + semigroupApp, + showApp +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Functor.Clown/index.js b/.storybook/purescript-indexer/output-es/Data.Functor.Clown/index.js new file mode 100644 index 0000000..218fa29 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Functor.Clown/index.js @@ -0,0 +1,23 @@ +import * as $runtime from "../runtime.js"; +const Clown = x => x; +const showClown = dictShow => ({show: v => "(Clown " + (dictShow.show(v) + ")")}); +const profunctorClown = dictContravariant => ({dimap: f => v => v1 => dictContravariant.cmap(f)(v1)}); +const ordClown = dictOrd => dictOrd; +const newtypeClown = {Coercible0: () => undefined}; +const hoistClown = f => v => f(v); +const functorClown = {map: v => v1 => v1}; +const eqClown = dictEq => dictEq; +const bifunctorClown = dictFunctor => ({bimap: f => v => v1 => dictFunctor.map(f)(v1)}); +const biapplyClown = dictApply => { + const $1 = dictApply.Functor0(); + const bifunctorClown1 = {bimap: f => v => v1 => $1.map(f)(v1)}; + return {biapply: v => v1 => dictApply.apply(v)(v1), Bifunctor0: () => bifunctorClown1}; +}; +const biapplicativeClown = dictApplicative => { + const $1 = dictApplicative.Apply0(); + const $2 = $1.Functor0(); + const bifunctorClown1 = {bimap: f => v => v1 => $2.map(f)(v1)}; + const biapplyClown1 = {biapply: v => v1 => $1.apply(v)(v1), Bifunctor0: () => bifunctorClown1}; + return {bipure: a => v => dictApplicative.pure(a), Biapply0: () => biapplyClown1}; +}; +export {Clown, biapplicativeClown, biapplyClown, bifunctorClown, eqClown, functorClown, hoistClown, newtypeClown, ordClown, profunctorClown, showClown}; diff --git a/.storybook/purescript-indexer/output-es/Data.Functor.Compose/index.js b/.storybook/purescript-indexer/output-es/Data.Functor.Compose/index.js new file mode 100644 index 0000000..4346b95 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Functor.Compose/index.js @@ -0,0 +1,121 @@ +import * as $runtime from "../runtime.js"; +const Compose = x => x; +const showCompose = dictShow => ({show: v => "(Compose " + (dictShow.show(v) + ")")}); +const newtypeCompose = {Coercible0: () => undefined}; +const functorCompose = dictFunctor => dictFunctor1 => ({map: f => v => dictFunctor.map(dictFunctor1.map(f))(v)}); +const eqCompose = dictEq1 => dictEq11 => dictEq => { + const eq11 = dictEq1.eq1((() => { + const eq11 = dictEq11.eq1(dictEq); + return {eq: x => y => eq11(x)(y)}; + })()); + return {eq: v => v1 => eq11(v)(v1)}; +}; +const ordCompose = dictOrd1 => { + const $1 = dictOrd1.Eq10(); + return dictOrd11 => { + const $3 = dictOrd11.Eq10(); + const $4 = dictOrd11.Eq10(); + return dictOrd => { + const compare11 = dictOrd1.compare1((() => { + const compare11 = dictOrd11.compare1(dictOrd); + const eq11 = $3.eq1(dictOrd.Eq0()); + const eqApp2 = {eq: x => y => eq11(x)(y)}; + return {compare: x => y => compare11(x)(y), Eq0: () => eqApp2}; + })()); + const eq11 = $1.eq1((() => { + const eq11 = $4.eq1(dictOrd.Eq0()); + return {eq: x => y => eq11(x)(y)}; + })()); + const eqCompose3 = {eq: v => v1 => eq11(v)(v1)}; + return {compare: v => v1 => compare11(v)(v1), Eq0: () => eqCompose3}; + }; + }; +}; +const eq1Compose = dictEq1 => dictEq11 => ( + { + eq1: dictEq => dictEq1.eq1((() => { + const eq11 = dictEq11.eq1(dictEq); + return {eq: x => y => eq11(x)(y)}; + })()) + } +); +const ord1Compose = dictOrd1 => { + const ordCompose1 = ordCompose(dictOrd1); + const $2 = dictOrd1.Eq10(); + return dictOrd11 => { + const ordCompose2 = ordCompose1(dictOrd11); + const $5 = dictOrd11.Eq10(); + const eq1Compose2 = { + eq1: dictEq => $2.eq1((() => { + const eq11 = $5.eq1(dictEq); + return {eq: x => y => eq11(x)(y)}; + })()) + }; + return {compare1: dictOrd => ordCompose2(dictOrd).compare, Eq10: () => eq1Compose2}; + }; +}; +const bihoistCompose = dictFunctor => natF => natG => v => natF(dictFunctor.map(natG)(v)); +const applyCompose = dictApply => { + const Functor0 = dictApply.Functor0(); + return dictApply1 => { + const $3 = dictApply1.Functor0(); + const functorCompose2 = {map: f => v => Functor0.map($3.map(f))(v)}; + return {apply: v => v1 => dictApply.apply(Functor0.map(dictApply1.apply)(v))(v1), Functor0: () => functorCompose2}; + }; +}; +const applicativeCompose = dictApplicative => { + const $1 = dictApplicative.Apply0(); + const Functor0 = $1.Functor0(); + return dictApplicative1 => { + const $4 = dictApplicative1.Apply0(); + const $5 = $4.Functor0(); + const functorCompose2 = {map: f => v => Functor0.map($5.map(f))(v)}; + const applyCompose2 = {apply: v => v1 => $1.apply(Functor0.map($4.apply)(v))(v1), Functor0: () => functorCompose2}; + return {pure: x => dictApplicative.pure(dictApplicative1.pure(x)), Apply0: () => applyCompose2}; + }; +}; +const altCompose = dictAlt => { + const $1 = dictAlt.Functor0(); + return dictFunctor => { + const functorCompose2 = {map: f => v => $1.map(dictFunctor.map(f))(v)}; + return {alt: v => v1 => dictAlt.alt(v)(v1), Functor0: () => functorCompose2}; + }; +}; +const plusCompose = dictPlus => { + const $1 = dictPlus.Alt0(); + const $2 = $1.Functor0(); + return dictFunctor => { + const functorCompose2 = {map: f => v => $2.map(dictFunctor.map(f))(v)}; + const altCompose2 = {alt: v => v1 => $1.alt(v)(v1), Functor0: () => functorCompose2}; + return {empty: dictPlus.empty, Alt0: () => altCompose2}; + }; +}; +const alternativeCompose = dictAlternative => { + const applicativeCompose1 = applicativeCompose(dictAlternative.Applicative0()); + const $2 = dictAlternative.Plus1(); + const $3 = $2.Alt0(); + const $4 = $3.Functor0(); + return dictApplicative => { + const applicativeCompose2 = applicativeCompose1(dictApplicative); + const $7 = dictApplicative.Apply0().Functor0(); + const functorCompose2 = {map: f => v => $4.map($7.map(f))(v)}; + const altCompose2 = {alt: v => v1 => $3.alt(v)(v1), Functor0: () => functorCompose2}; + return {Applicative0: () => applicativeCompose2, Plus1: () => ({empty: $2.empty, Alt0: () => altCompose2})}; + }; +}; +export { + Compose, + altCompose, + alternativeCompose, + applicativeCompose, + applyCompose, + bihoistCompose, + eq1Compose, + eqCompose, + functorCompose, + newtypeCompose, + ord1Compose, + ordCompose, + plusCompose, + showCompose +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Functor.Contravariant/index.js b/.storybook/purescript-indexer/output-es/Data.Functor.Contravariant/index.js new file mode 100644 index 0000000..72507ae --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Functor.Contravariant/index.js @@ -0,0 +1,8 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dVoid from "../Data.Void/index.js"; +const contravariantConst = {cmap: v => v1 => v1}; +const cmap = dict => dict.cmap; +const cmapFlipped = dictContravariant => x => f => dictContravariant.cmap(f)(x); +const coerce = dictContravariant => dictFunctor => a => dictFunctor.map(Data$dVoid.absurd)(dictContravariant.cmap(Data$dVoid.absurd)(a)); +const imapC = dictContravariant => v => f => dictContravariant.cmap(f); +export {cmap, cmapFlipped, coerce, contravariantConst, imapC}; diff --git a/.storybook/purescript-indexer/output-es/Data.Functor.Coproduct.Inject/index.js b/.storybook/purescript-indexer/output-es/Data.Functor.Coproduct.Inject/index.js new file mode 100644 index 0000000..989f9c6 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Functor.Coproduct.Inject/index.js @@ -0,0 +1,25 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dEither from "../Data.Either/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +const prj = dict => dict.prj; +const injectReflexive = {inj: x => x, prj: Data$dMaybe.Just}; +const injectLeft = { + inj: x => Data$dEither.$Either("Left", x), + prj: v2 => { + if (v2.tag === "Left") { return Data$dMaybe.$Maybe("Just", v2._1); } + if (v2.tag === "Right") { return Data$dMaybe.Nothing; } + $runtime.fail(); + } +}; +const inj = dict => dict.inj; +const injectRight = dictInject => ( + { + inj: x => Data$dEither.$Either("Right", dictInject.inj(x)), + prj: v2 => { + if (v2.tag === "Left") { return Data$dMaybe.Nothing; } + if (v2.tag === "Right") { return dictInject.prj(v2._1); } + $runtime.fail(); + } + } +); +export {inj, injectLeft, injectReflexive, injectRight, prj}; diff --git a/.storybook/purescript-indexer/output-es/Data.Functor.Coproduct.Nested/index.js b/.storybook/purescript-indexer/output-es/Data.Functor.Coproduct.Nested/index.js new file mode 100644 index 0000000..57f4e0a --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Functor.Coproduct.Nested/index.js @@ -0,0 +1,605 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dEither from "../Data.Either/index.js"; +import * as Data$dFunctor$dCoproduct from "../Data.Functor.Coproduct/index.js"; +const in9 = v => Data$dEither.$Either( + "Right", + Data$dEither.$Either( + "Right", + Data$dEither.$Either( + "Right", + Data$dEither.$Either( + "Right", + Data$dEither.$Either("Right", Data$dEither.$Either("Right", Data$dEither.$Either("Right", Data$dEither.$Either("Right", Data$dEither.$Either("Left", v))))) + ) + ) + ) +); +const in8 = v => Data$dEither.$Either( + "Right", + Data$dEither.$Either( + "Right", + Data$dEither.$Either( + "Right", + Data$dEither.$Either("Right", Data$dEither.$Either("Right", Data$dEither.$Either("Right", Data$dEither.$Either("Right", Data$dEither.$Either("Left", v))))) + ) + ) +); +const in7 = v => Data$dEither.$Either( + "Right", + Data$dEither.$Either( + "Right", + Data$dEither.$Either("Right", Data$dEither.$Either("Right", Data$dEither.$Either("Right", Data$dEither.$Either("Right", Data$dEither.$Either("Left", v))))) + ) +); +const in6 = v => Data$dEither.$Either( + "Right", + Data$dEither.$Either("Right", Data$dEither.$Either("Right", Data$dEither.$Either("Right", Data$dEither.$Either("Right", Data$dEither.$Either("Left", v))))) +); +const in5 = v => Data$dEither.$Either("Right", Data$dEither.$Either("Right", Data$dEither.$Either("Right", Data$dEither.$Either("Right", Data$dEither.$Either("Left", v))))); +const in4 = v => Data$dEither.$Either("Right", Data$dEither.$Either("Right", Data$dEither.$Either("Right", Data$dEither.$Either("Left", v)))); +const in3 = v => Data$dEither.$Either("Right", Data$dEither.$Either("Right", Data$dEither.$Either("Left", v))); +const in2 = v => Data$dEither.$Either("Right", Data$dEither.$Either("Left", v)); +const in10 = v => Data$dEither.$Either( + "Right", + Data$dEither.$Either( + "Right", + Data$dEither.$Either( + "Right", + Data$dEither.$Either( + "Right", + Data$dEither.$Either( + "Right", + Data$dEither.$Either("Right", Data$dEither.$Either("Right", Data$dEither.$Either("Right", Data$dEither.$Either("Right", Data$dEither.$Either("Left", v))))) + ) + ) + ) + ) +); +const in1 = Data$dFunctor$dCoproduct.left; +const coproduct9 = a => b => c => d => e => f => g => h => i => y => { + if (y.tag === "Left") { return a(y._1); } + if (y.tag === "Right") { + if (y._1.tag === "Left") { return b(y._1._1); } + if (y._1.tag === "Right") { + if (y._1._1.tag === "Left") { return c(y._1._1._1); } + if (y._1._1.tag === "Right") { + if (y._1._1._1.tag === "Left") { return d(y._1._1._1._1); } + if (y._1._1._1.tag === "Right") { + if (y._1._1._1._1.tag === "Left") { return e(y._1._1._1._1._1); } + if (y._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1.tag === "Left") { return f(y._1._1._1._1._1._1); } + if (y._1._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1._1.tag === "Left") { return g(y._1._1._1._1._1._1._1); } + if (y._1._1._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1._1._1.tag === "Left") { return h(y._1._1._1._1._1._1._1._1); } + if (y._1._1._1._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1._1._1._1.tag === "Left") { return i(y._1._1._1._1._1._1._1._1._1); } + if (y._1._1._1._1._1._1._1._1.tag === "Right") { + 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; + continue; + }; + return spin$r; + }; + return spin(y._1._1._1._1._1._1._1._1._1); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); +}; +const coproduct8 = a => b => c => d => e => f => g => h => y => { + if (y.tag === "Left") { return a(y._1); } + if (y.tag === "Right") { + if (y._1.tag === "Left") { return b(y._1._1); } + if (y._1.tag === "Right") { + if (y._1._1.tag === "Left") { return c(y._1._1._1); } + if (y._1._1.tag === "Right") { + if (y._1._1._1.tag === "Left") { return d(y._1._1._1._1); } + if (y._1._1._1.tag === "Right") { + if (y._1._1._1._1.tag === "Left") { return e(y._1._1._1._1._1); } + if (y._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1.tag === "Left") { return f(y._1._1._1._1._1._1); } + if (y._1._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1._1.tag === "Left") { return g(y._1._1._1._1._1._1._1); } + if (y._1._1._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1._1._1.tag === "Left") { return h(y._1._1._1._1._1._1._1._1); } + if (y._1._1._1._1._1._1._1.tag === "Right") { + 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; + continue; + }; + return spin$r; + }; + return spin(y._1._1._1._1._1._1._1._1); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); +}; +const coproduct7 = a => b => c => d => e => f => g => y => { + if (y.tag === "Left") { return a(y._1); } + if (y.tag === "Right") { + if (y._1.tag === "Left") { return b(y._1._1); } + if (y._1.tag === "Right") { + if (y._1._1.tag === "Left") { return c(y._1._1._1); } + if (y._1._1.tag === "Right") { + if (y._1._1._1.tag === "Left") { return d(y._1._1._1._1); } + if (y._1._1._1.tag === "Right") { + if (y._1._1._1._1.tag === "Left") { return e(y._1._1._1._1._1); } + if (y._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1.tag === "Left") { return f(y._1._1._1._1._1._1); } + if (y._1._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1._1.tag === "Left") { return g(y._1._1._1._1._1._1._1); } + if (y._1._1._1._1._1._1.tag === "Right") { + 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; + continue; + }; + return spin$r; + }; + return spin(y._1._1._1._1._1._1._1); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); +}; +const coproduct6 = a => b => c => d => e => f => y => { + if (y.tag === "Left") { return a(y._1); } + if (y.tag === "Right") { + if (y._1.tag === "Left") { return b(y._1._1); } + if (y._1.tag === "Right") { + if (y._1._1.tag === "Left") { return c(y._1._1._1); } + if (y._1._1.tag === "Right") { + if (y._1._1._1.tag === "Left") { return d(y._1._1._1._1); } + if (y._1._1._1.tag === "Right") { + if (y._1._1._1._1.tag === "Left") { return e(y._1._1._1._1._1); } + if (y._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1.tag === "Left") { return f(y._1._1._1._1._1._1); } + if (y._1._1._1._1._1.tag === "Right") { + 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; + continue; + }; + return spin$r; + }; + return spin(y._1._1._1._1._1._1); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); +}; +const coproduct5 = a => b => c => d => e => y => { + if (y.tag === "Left") { return a(y._1); } + if (y.tag === "Right") { + if (y._1.tag === "Left") { return b(y._1._1); } + if (y._1.tag === "Right") { + if (y._1._1.tag === "Left") { return c(y._1._1._1); } + if (y._1._1.tag === "Right") { + if (y._1._1._1.tag === "Left") { return d(y._1._1._1._1); } + if (y._1._1._1.tag === "Right") { + if (y._1._1._1._1.tag === "Left") { return e(y._1._1._1._1._1); } + if (y._1._1._1._1.tag === "Right") { + 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; + continue; + }; + return spin$r; + }; + return spin(y._1._1._1._1._1); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); +}; +const coproduct4 = a => b => c => d => y => { + if (y.tag === "Left") { return a(y._1); } + if (y.tag === "Right") { + if (y._1.tag === "Left") { return b(y._1._1); } + if (y._1.tag === "Right") { + if (y._1._1.tag === "Left") { return c(y._1._1._1); } + if (y._1._1.tag === "Right") { + if (y._1._1._1.tag === "Left") { return d(y._1._1._1._1); } + if (y._1._1._1.tag === "Right") { + 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; + continue; + }; + return spin$r; + }; + return spin(y._1._1._1._1); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); +}; +const coproduct3 = a => b => c => y => { + if (y.tag === "Left") { return a(y._1); } + if (y.tag === "Right") { + if (y._1.tag === "Left") { return b(y._1._1); } + if (y._1.tag === "Right") { + if (y._1._1.tag === "Left") { return c(y._1._1._1); } + if (y._1._1.tag === "Right") { + 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; + continue; + }; + return spin$r; + }; + return spin(y._1._1._1); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); +}; +const coproduct2 = a => b => y => { + if (y.tag === "Left") { return a(y._1); } + if (y.tag === "Right") { + if (y._1.tag === "Left") { return b(y._1._1); } + if (y._1.tag === "Right") { + 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; + continue; + }; + return spin$r; + }; + return spin(y._1._1); + } + $runtime.fail(); + } + $runtime.fail(); +}; +const coproduct10 = a => b => c => d => e => f => g => h => i => j => y => { + if (y.tag === "Left") { return a(y._1); } + if (y.tag === "Right") { + if (y._1.tag === "Left") { return b(y._1._1); } + if (y._1.tag === "Right") { + if (y._1._1.tag === "Left") { return c(y._1._1._1); } + if (y._1._1.tag === "Right") { + if (y._1._1._1.tag === "Left") { return d(y._1._1._1._1); } + if (y._1._1._1.tag === "Right") { + if (y._1._1._1._1.tag === "Left") { return e(y._1._1._1._1._1); } + if (y._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1.tag === "Left") { return f(y._1._1._1._1._1._1); } + if (y._1._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1._1.tag === "Left") { return g(y._1._1._1._1._1._1._1); } + if (y._1._1._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1._1._1.tag === "Left") { return h(y._1._1._1._1._1._1._1._1); } + if (y._1._1._1._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1._1._1._1.tag === "Left") { return i(y._1._1._1._1._1._1._1._1._1); } + if (y._1._1._1._1._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1._1._1._1._1.tag === "Left") { return j(y._1._1._1._1._1._1._1._1._1._1); } + if (y._1._1._1._1._1._1._1._1._1.tag === "Right") { + 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; + continue; + }; + return spin$r; + }; + return spin(y._1._1._1._1._1._1._1._1._1._1); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); +}; +const coproduct1 = y => { + if (y.tag === "Left") { return y._1; } + if (y.tag === "Right") { + 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; + continue; + }; + return spin$r; + }; + return spin(y._1); + } + $runtime.fail(); +}; +const at9 = b => f => y => { + if (y.tag === "Right") { + if (y._1.tag === "Right") { + if (y._1._1.tag === "Right") { + if (y._1._1._1.tag === "Right") { + if (y._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1._1._1._1.tag === "Left") { return f(y._1._1._1._1._1._1._1._1._1); } + return b; + } + return b; + } + return b; + } + return b; + } + return b; + } + return b; + } + return b; + } + return b; + } + return b; +}; +const at8 = b => f => y => { + if (y.tag === "Right") { + if (y._1.tag === "Right") { + if (y._1._1.tag === "Right") { + if (y._1._1._1.tag === "Right") { + if (y._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1._1._1.tag === "Left") { return f(y._1._1._1._1._1._1._1._1); } + return b; + } + return b; + } + return b; + } + return b; + } + return b; + } + return b; + } + return b; + } + return b; +}; +const at7 = b => f => y => { + if (y.tag === "Right") { + if (y._1.tag === "Right") { + if (y._1._1.tag === "Right") { + if (y._1._1._1.tag === "Right") { + if (y._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1._1.tag === "Left") { return f(y._1._1._1._1._1._1._1); } + return b; + } + return b; + } + return b; + } + return b; + } + return b; + } + return b; + } + return b; +}; +const at6 = b => f => y => { + if (y.tag === "Right") { + if (y._1.tag === "Right") { + if (y._1._1.tag === "Right") { + if (y._1._1._1.tag === "Right") { + if (y._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1.tag === "Left") { return f(y._1._1._1._1._1._1); } + return b; + } + return b; + } + return b; + } + return b; + } + return b; + } + return b; +}; +const at5 = b => f => y => { + if (y.tag === "Right") { + if (y._1.tag === "Right") { + if (y._1._1.tag === "Right") { + if (y._1._1._1.tag === "Right") { + if (y._1._1._1._1.tag === "Left") { return f(y._1._1._1._1._1); } + return b; + } + return b; + } + return b; + } + return b; + } + return b; +}; +const at4 = b => f => y => { + if (y.tag === "Right") { + if (y._1.tag === "Right") { + if (y._1._1.tag === "Right") { + if (y._1._1._1.tag === "Left") { return f(y._1._1._1._1); } + return b; + } + return b; + } + return b; + } + return b; +}; +const at3 = b => f => y => { + if (y.tag === "Right") { + if (y._1.tag === "Right") { + if (y._1._1.tag === "Left") { return f(y._1._1._1); } + return b; + } + return b; + } + return b; +}; +const at2 = b => f => y => { + if (y.tag === "Right") { + if (y._1.tag === "Left") { return f(y._1._1); } + return b; + } + return b; +}; +const at10 = b => f => y => { + if (y.tag === "Right") { + if (y._1.tag === "Right") { + if (y._1._1.tag === "Right") { + if (y._1._1._1.tag === "Right") { + if (y._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1._1._1._1.tag === "Right") { + if (y._1._1._1._1._1._1._1._1._1.tag === "Left") { return f(y._1._1._1._1._1._1._1._1._1._1); } + return b; + } + return b; + } + return b; + } + return b; + } + return b; + } + return b; + } + return b; + } + return b; + } + return b; + } + return b; +}; +const at1 = b => f => y => { + if (y.tag === "Left") { return f(y._1); } + return b; +}; +export { + at1, + at10, + at2, + at3, + at4, + at5, + at6, + at7, + at8, + at9, + coproduct1, + coproduct10, + coproduct2, + coproduct3, + coproduct4, + coproduct5, + coproduct6, + coproduct7, + coproduct8, + coproduct9, + in1, + in10, + in2, + in3, + in4, + in5, + in6, + in7, + in8, + in9 +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Functor.Coproduct/index.js b/.storybook/purescript-indexer/output-es/Data.Functor.Coproduct/index.js new file mode 100644 index 0000000..5e6456e --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Functor.Coproduct/index.js @@ -0,0 +1,181 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dBifunctor from "../Data.Bifunctor/index.js"; +import * as Data$dEither from "../Data.Either/index.js"; +import * as Data$dOrdering from "../Data.Ordering/index.js"; +const Coproduct = x => x; +const showCoproduct = dictShow => dictShow1 => ( + { + show: v => { + if (v.tag === "Left") { return "(left " + (dictShow.show(v._1) + ")"); } + if (v.tag === "Right") { return "(right " + (dictShow1.show(v._1) + ")"); } + $runtime.fail(); + } + } +); +const right = ga => Data$dEither.$Either("Right", ga); +const newtypeCoproduct = {Coercible0: () => undefined}; +const left = fa => Data$dEither.$Either("Left", fa); +const functorCoproduct = dictFunctor => dictFunctor1 => ({map: f => v => Data$dBifunctor.bifunctorEither.bimap(dictFunctor.map(f))(dictFunctor1.map(f))(v)}); +const eq1Coproduct = dictEq1 => dictEq11 => ( + { + eq1: dictEq => { + const eq12 = dictEq1.eq1(dictEq); + const eq13 = dictEq11.eq1(dictEq); + return v => v1 => { + if (v.tag === "Left") { + if (v1.tag === "Left") { return eq12(v._1)(v1._1); } + return false; + } + if (v.tag === "Right") { + if (v1.tag === "Right") { return eq13(v._1)(v1._1); } + return false; + } + return false; + }; + } + } +); +const eqCoproduct = dictEq1 => dictEq11 => dictEq => ( + { + eq: (() => { + const eq12 = dictEq1.eq1(dictEq); + const eq13 = dictEq11.eq1(dictEq); + return v => v1 => { + if (v.tag === "Left") { + if (v1.tag === "Left") { return eq12(v._1)(v1._1); } + return false; + } + if (v.tag === "Right") { + if (v1.tag === "Right") { return eq13(v._1)(v1._1); } + return false; + } + return false; + }; + })() + } +); +const ord1Coproduct = dictOrd1 => { + const $1 = dictOrd1.Eq10(); + return dictOrd11 => { + const $3 = dictOrd11.Eq10(); + const eq1Coproduct2 = { + eq1: dictEq => { + const eq12 = $1.eq1(dictEq); + const eq13 = $3.eq1(dictEq); + return v => v1 => { + if (v.tag === "Left") { + if (v1.tag === "Left") { return eq12(v._1)(v1._1); } + return false; + } + if (v.tag === "Right") { + if (v1.tag === "Right") { return eq13(v._1)(v1._1); } + return false; + } + return false; + }; + } + }; + return { + compare1: dictOrd => { + const compare12 = dictOrd1.compare1(dictOrd); + const compare13 = dictOrd11.compare1(dictOrd); + return v => v1 => { + if (v.tag === "Left") { + if (v1.tag === "Left") { return compare12(v._1)(v1._1); } + return Data$dOrdering.LT; + } + if (v1.tag === "Left") { return Data$dOrdering.GT; } + if (v.tag === "Right") { + if (v1.tag === "Right") { return compare13(v._1)(v1._1); } + $runtime.fail(); + } + $runtime.fail(); + }; + }, + Eq10: () => eq1Coproduct2 + }; + }; +}; +const ordCoproduct = dictOrd1 => { + const ord1Coproduct1 = ord1Coproduct(dictOrd1); + const $2 = dictOrd1.Eq10(); + return dictOrd11 => { + const compare1 = ord1Coproduct1(dictOrd11).compare1; + const $5 = dictOrd11.Eq10(); + return dictOrd => { + const $7 = dictOrd.Eq0(); + const eqCoproduct3 = { + eq: (() => { + const eq12 = $2.eq1($7); + const eq13 = $5.eq1($7); + return v => v1 => { + if (v.tag === "Left") { + if (v1.tag === "Left") { return eq12(v._1)(v1._1); } + return false; + } + if (v.tag === "Right") { + if (v1.tag === "Right") { return eq13(v._1)(v1._1); } + return false; + } + return false; + }; + })() + }; + return {compare: compare1(dictOrd), Eq0: () => eqCoproduct3}; + }; + }; +}; +const coproduct = v => v1 => v2 => { + if (v2.tag === "Left") { return v(v2._1); } + if (v2.tag === "Right") { return v1(v2._1); } + $runtime.fail(); +}; +const extendCoproduct = dictExtend => { + const functorCoproduct1 = functorCoproduct(dictExtend.Functor0()); + return dictExtend1 => { + const functorCoproduct2 = functorCoproduct1(dictExtend1.Functor0()); + return { + extend: f => { + const $5 = dictExtend.extend(x => f(Data$dEither.$Either("Left", x))); + const $6 = dictExtend1.extend(x => f(Data$dEither.$Either("Right", x))); + return x => { + if (x.tag === "Left") { return Data$dEither.$Either("Left", $5(x._1)); } + if (x.tag === "Right") { return Data$dEither.$Either("Right", $6(x._1)); } + $runtime.fail(); + }; + }, + Functor0: () => functorCoproduct2 + }; + }; +}; +const comonadCoproduct = dictComonad => { + const extendCoproduct1 = extendCoproduct(dictComonad.Extend0()); + return dictComonad1 => { + const extendCoproduct2 = extendCoproduct1(dictComonad1.Extend0()); + return { + extract: v2 => { + if (v2.tag === "Left") { return dictComonad.extract(v2._1); } + if (v2.tag === "Right") { return dictComonad1.extract(v2._1); } + $runtime.fail(); + }, + Extend0: () => extendCoproduct2 + }; + }; +}; +const bihoistCoproduct = natF => natG => v => Data$dBifunctor.bifunctorEither.bimap(natF)(natG)(v); +export { + Coproduct, + bihoistCoproduct, + comonadCoproduct, + coproduct, + eq1Coproduct, + eqCoproduct, + extendCoproduct, + functorCoproduct, + left, + newtypeCoproduct, + ord1Coproduct, + ordCoproduct, + right, + showCoproduct +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Functor.Costar/index.js b/.storybook/purescript-indexer/output-es/Data.Functor.Costar/index.js new file mode 100644 index 0000000..211a14d --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Functor.Costar/index.js @@ -0,0 +1,83 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +const Costar = x => x; +const semigroupoidCostar = dictExtend => ({compose: v => v1 => w => v(dictExtend.extend(v1)(w))}); +const profunctorCostar = dictFunctor => ( + { + dimap: f => g => v => { + const $4 = dictFunctor.map(f); + return x => g(v($4(x))); + } + } +); +const strongCostar = dictComonad => { + const Functor0 = dictComonad.Extend0().Functor0(); + const profunctorCostar1 = { + dimap: f => g => v => { + const $5 = Functor0.map(f); + return x => g(v($5(x))); + } + }; + return { + first: v => x => Data$dTuple.$Tuple(v(Functor0.map(Data$dTuple.fst)(x)), dictComonad.extract(x)._2), + second: v => x => Data$dTuple.$Tuple(dictComonad.extract(x)._1, v(Functor0.map(Data$dTuple.snd)(x))), + Profunctor0: () => profunctorCostar1 + }; +}; +const newtypeCostar = {Coercible0: () => undefined}; +const hoistCostar = f => v => x => v(f(x)); +const functorCostar = {map: f => v => x => f(v(x))}; +const invariantCostar = {imap: f => v => v$1 => x => f(v$1(x))}; +const distributiveCostar = { + distribute: dictFunctor => f => a => dictFunctor.map(v => v(a))(f), + collect: dictFunctor => f => { + const $2 = distributiveCostar.distribute(dictFunctor); + const $3 = dictFunctor.map(f); + return x => $2($3(x)); + }, + Functor0: () => functorCostar +}; +const closedCostar = dictFunctor => { + const profunctorCostar1 = { + dimap: f => g => v => { + const $4 = dictFunctor.map(f); + return x => g(v($4(x))); + } + }; + return {closed: v => g => x => v(dictFunctor.map(v1 => v1(x))(g)), Profunctor0: () => profunctorCostar1}; +}; +const categoryCostar = dictComonad => { + const $1 = dictComonad.Extend0(); + const semigroupoidCostar1 = {compose: v => v1 => w => v($1.extend(v1)(w))}; + return {identity: dictComonad.extract, Semigroupoid0: () => semigroupoidCostar1}; +}; +const bifunctorCostar = dictContravariant => ( + { + bimap: f => g => v => { + const $4 = dictContravariant.cmap(f); + return x => g(v($4(x))); + } + } +); +const applyCostar = {apply: v => v1 => a => v(a)(v1(a)), Functor0: () => functorCostar}; +const bindCostar = {bind: v => f => x => f(v(x))(x), Apply0: () => applyCostar}; +const applicativeCostar = {pure: a => v => a, Apply0: () => applyCostar}; +const monadCostar = {Applicative0: () => applicativeCostar, Bind1: () => bindCostar}; +export { + Costar, + applicativeCostar, + applyCostar, + bifunctorCostar, + bindCostar, + categoryCostar, + closedCostar, + distributiveCostar, + functorCostar, + hoistCostar, + invariantCostar, + monadCostar, + newtypeCostar, + profunctorCostar, + semigroupoidCostar, + strongCostar +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Functor.Flip/index.js b/.storybook/purescript-indexer/output-es/Data.Functor.Flip/index.js new file mode 100644 index 0000000..2aedf57 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Functor.Flip/index.js @@ -0,0 +1,30 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dBifunctor from "../Data.Bifunctor/index.js"; +import * as Data$dProfunctor from "../Data.Profunctor/index.js"; +const Flip = x => x; +const showFlip = dictShow => ({show: v => "(Flip " + (dictShow.show(v) + ")")}); +const semigroupoidFlip = dictSemigroupoid => ({compose: v => v1 => dictSemigroupoid.compose(v1)(v)}); +const ordFlip = dictOrd => dictOrd; +const newtypeFlip = {Coercible0: () => undefined}; +const functorFlip = dictBifunctor => ({map: f => v => dictBifunctor.bimap(f)(Data$dBifunctor.identity)(v)}); +const eqFlip = dictEq => dictEq; +const contravariantFlip = dictProfunctor => ({cmap: f => v => dictProfunctor.dimap(f)(Data$dProfunctor.identity)(v)}); +const categoryFlip = dictCategory => { + const $1 = dictCategory.Semigroupoid0(); + const semigroupoidFlip1 = {compose: v => v1 => $1.compose(v1)(v)}; + return {identity: dictCategory.identity, Semigroupoid0: () => semigroupoidFlip1}; +}; +const bifunctorFlip = dictBifunctor => ({bimap: f => g => v => dictBifunctor.bimap(g)(f)(v)}); +const biapplyFlip = dictBiapply => { + const $1 = dictBiapply.Bifunctor0(); + const bifunctorFlip1 = {bimap: f => g => v => $1.bimap(g)(f)(v)}; + return {biapply: v => v1 => dictBiapply.biapply(v)(v1), Bifunctor0: () => bifunctorFlip1}; +}; +const biapplicativeFlip = dictBiapplicative => { + const $1 = dictBiapplicative.Biapply0(); + const $2 = $1.Bifunctor0(); + const bifunctorFlip1 = {bimap: f => g => v => $2.bimap(g)(f)(v)}; + const biapplyFlip1 = {biapply: v => v1 => $1.biapply(v)(v1), Bifunctor0: () => bifunctorFlip1}; + return {bipure: a => b => dictBiapplicative.bipure(b)(a), Biapply0: () => biapplyFlip1}; +}; +export {Flip, biapplicativeFlip, biapplyFlip, bifunctorFlip, categoryFlip, contravariantFlip, eqFlip, functorFlip, newtypeFlip, ordFlip, semigroupoidFlip, showFlip}; diff --git a/.storybook/purescript-indexer/output-es/Data.Functor.Invariant/index.js b/.storybook/purescript-indexer/output-es/Data.Functor.Invariant/index.js new file mode 100644 index 0000000..8e06ad1 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Functor.Invariant/index.js @@ -0,0 +1,15 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dSemigroupoid from "../Control.Semigroupoid/index.js"; +import * as Data$dFunctor from "../Data.Functor/index.js"; +const invariantMultiplicative = {imap: f => v => v1 => f(v1)}; +const invariantEndo = {imap: ab => ba => v => x => ab(v(ba(x)))}; +const invariantDual = {imap: f => v => v1 => f(v1)}; +const invariantDisj = {imap: f => v => v1 => f(v1)}; +const invariantConj = {imap: f => v => v1 => f(v1)}; +const invariantAdditive = {imap: f => v => v1 => f(v1)}; +const imapF = dictFunctor => f => v => dictFunctor.map(f); +const invariantArray = {imap: f => v => Data$dFunctor.arrayMap(f)}; +const invariantFn = {imap: f => v => Control$dSemigroupoid.semigroupoidFn.compose(f)}; +const imap = dict => dict.imap; +const invariantAlternate = dictInvariant => ({imap: f => g => v => dictInvariant.imap(f)(g)(v)}); +export {imap, imapF, invariantAdditive, invariantAlternate, invariantArray, invariantConj, invariantDisj, invariantDual, invariantEndo, invariantFn, invariantMultiplicative}; diff --git a/.storybook/purescript-indexer/output-es/Data.Functor.Joker/index.js b/.storybook/purescript-indexer/output-es/Data.Functor.Joker/index.js new file mode 100644 index 0000000..72648c1 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Functor.Joker/index.js @@ -0,0 +1,79 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dEither from "../Data.Either/index.js"; +const Joker = x => x; +const showJoker = dictShow => ({show: v => "(Joker " + (dictShow.show(v) + ")")}); +const profunctorJoker = dictFunctor => ({dimap: v => g => v1 => dictFunctor.map(g)(v1)}); +const ordJoker = dictOrd => dictOrd; +const newtypeJoker = {Coercible0: () => undefined}; +const hoistJoker = f => v => f(v); +const functorJoker = dictFunctor => ({map: f => v => dictFunctor.map(f)(v)}); +const eqJoker = dictEq => dictEq; +const choiceJoker = dictFunctor => { + const profunctorJoker1 = {dimap: v => g => v1 => dictFunctor.map(g)(v1)}; + return {left: v => dictFunctor.map(Data$dEither.Left)(v), right: v => dictFunctor.map(Data$dEither.Right)(v), Profunctor0: () => profunctorJoker1}; +}; +const bifunctorJoker = dictFunctor => ({bimap: v => g => v1 => dictFunctor.map(g)(v1)}); +const biapplyJoker = dictApply => { + const $1 = dictApply.Functor0(); + const bifunctorJoker1 = {bimap: v => g => v1 => $1.map(g)(v1)}; + return {biapply: v => v1 => dictApply.apply(v)(v1), Bifunctor0: () => bifunctorJoker1}; +}; +const biapplicativeJoker = dictApplicative => { + const $1 = dictApplicative.Apply0(); + const $2 = $1.Functor0(); + const bifunctorJoker1 = {bimap: v => g => v1 => $2.map(g)(v1)}; + const biapplyJoker1 = {biapply: v => v1 => $1.apply(v)(v1), Bifunctor0: () => bifunctorJoker1}; + return {bipure: v => b => dictApplicative.pure(b), Biapply0: () => biapplyJoker1}; +}; +const applyJoker = dictApply => { + const $1 = dictApply.Functor0(); + const functorJoker1 = {map: f => v => $1.map(f)(v)}; + return {apply: v => v1 => dictApply.apply(v)(v1), Functor0: () => functorJoker1}; +}; +const bindJoker = dictBind => { + const $1 = dictBind.Apply0(); + const $2 = $1.Functor0(); + const functorJoker1 = {map: f => v => $2.map(f)(v)}; + const applyJoker1 = {apply: v => v1 => $1.apply(v)(v1), Functor0: () => functorJoker1}; + return {bind: v => amb => dictBind.bind(v)(x => amb(x)), Apply0: () => applyJoker1}; +}; +const applicativeJoker = dictApplicative => { + const $1 = dictApplicative.Apply0(); + const $2 = $1.Functor0(); + const functorJoker1 = {map: f => v => $2.map(f)(v)}; + const applyJoker1 = {apply: v => v1 => $1.apply(v)(v1), Functor0: () => functorJoker1}; + return {pure: x => dictApplicative.pure(x), Apply0: () => applyJoker1}; +}; +const monadJoker = dictMonad => { + const $1 = dictMonad.Applicative0(); + const $2 = $1.Apply0(); + const $3 = $2.Functor0(); + const functorJoker1 = {map: f => v => $3.map(f)(v)}; + const applyJoker1 = {apply: v => v1 => $2.apply(v)(v1), Functor0: () => functorJoker1}; + const applicativeJoker1 = {pure: x => $1.pure(x), Apply0: () => applyJoker1}; + const $7 = dictMonad.Bind1(); + const $8 = $7.Apply0(); + const $9 = $8.Functor0(); + const functorJoker1$1 = {map: f => v => $9.map(f)(v)}; + const applyJoker1$1 = {apply: v => v1 => $8.apply(v)(v1), Functor0: () => functorJoker1$1}; + const bindJoker1 = {bind: v => amb => $7.bind(v)(x => amb(x)), Apply0: () => applyJoker1$1}; + return {Applicative0: () => applicativeJoker1, Bind1: () => bindJoker1}; +}; +export { + Joker, + applicativeJoker, + applyJoker, + biapplicativeJoker, + biapplyJoker, + bifunctorJoker, + bindJoker, + choiceJoker, + eqJoker, + functorJoker, + hoistJoker, + monadJoker, + newtypeJoker, + ordJoker, + profunctorJoker, + showJoker +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Functor.Product.Nested/index.js b/.storybook/purescript-indexer/output-es/Data.Functor.Product.Nested/index.js new file mode 100644 index 0000000..95741f2 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Functor.Product.Nested/index.js @@ -0,0 +1,51 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +const product9 = a => b => c => d => e => f => g => h => i => Data$dTuple.$Tuple( + a, + Data$dTuple.$Tuple( + b, + Data$dTuple.$Tuple(c, Data$dTuple.$Tuple(d, Data$dTuple.$Tuple(e, Data$dTuple.$Tuple(f, Data$dTuple.$Tuple(g, Data$dTuple.$Tuple(h, Data$dTuple.$Tuple(i, Data$dUnit.unit))))))) + ) +); +const product8 = a => b => c => d => e => f => g => h => Data$dTuple.$Tuple( + a, + Data$dTuple.$Tuple(b, Data$dTuple.$Tuple(c, Data$dTuple.$Tuple(d, Data$dTuple.$Tuple(e, Data$dTuple.$Tuple(f, Data$dTuple.$Tuple(g, Data$dTuple.$Tuple(h, Data$dUnit.unit))))))) +); +const product7 = a => b => c => d => e => f => g => Data$dTuple.$Tuple( + a, + Data$dTuple.$Tuple(b, Data$dTuple.$Tuple(c, Data$dTuple.$Tuple(d, Data$dTuple.$Tuple(e, Data$dTuple.$Tuple(f, Data$dTuple.$Tuple(g, Data$dUnit.unit)))))) +); +const product6 = a => b => c => d => e => f => Data$dTuple.$Tuple( + a, + Data$dTuple.$Tuple(b, Data$dTuple.$Tuple(c, Data$dTuple.$Tuple(d, Data$dTuple.$Tuple(e, Data$dTuple.$Tuple(f, Data$dUnit.unit))))) +); +const product5 = a => b => c => d => e => Data$dTuple.$Tuple(a, Data$dTuple.$Tuple(b, Data$dTuple.$Tuple(c, Data$dTuple.$Tuple(d, Data$dTuple.$Tuple(e, Data$dUnit.unit))))); +const product4 = a => b => c => d => Data$dTuple.$Tuple(a, Data$dTuple.$Tuple(b, Data$dTuple.$Tuple(c, Data$dTuple.$Tuple(d, Data$dUnit.unit)))); +const product3 = a => b => c => Data$dTuple.$Tuple(a, Data$dTuple.$Tuple(b, Data$dTuple.$Tuple(c, Data$dUnit.unit))); +const product2 = a => b => Data$dTuple.$Tuple(a, Data$dTuple.$Tuple(b, Data$dUnit.unit)); +const product10 = a => b => c => d => e => f => g => h => i => j => Data$dTuple.$Tuple( + a, + Data$dTuple.$Tuple( + b, + Data$dTuple.$Tuple( + c, + Data$dTuple.$Tuple( + d, + Data$dTuple.$Tuple(e, Data$dTuple.$Tuple(f, Data$dTuple.$Tuple(g, Data$dTuple.$Tuple(h, Data$dTuple.$Tuple(i, Data$dTuple.$Tuple(j, Data$dUnit.unit)))))) + ) + ) + ) +); +const product1 = a => Data$dTuple.$Tuple(a, Data$dUnit.unit); +const get9 = v => v._2._2._2._2._2._2._2._2._1; +const get8 = v => v._2._2._2._2._2._2._2._1; +const get7 = v => v._2._2._2._2._2._2._1; +const get6 = v => v._2._2._2._2._2._1; +const get5 = v => v._2._2._2._2._1; +const get4 = v => v._2._2._2._1; +const get3 = v => v._2._2._1; +const get2 = v => v._2._1; +const get10 = v => v._2._2._2._2._2._2._2._2._2._1; +const get1 = v => v._1; +export {get1, get10, get2, get3, get4, get5, get6, get7, get8, get9, product1, product10, product2, product3, product4, product5, product6, product7, product8, product9}; diff --git a/.storybook/purescript-indexer/output-es/Data.Functor.Product/index.js b/.storybook/purescript-indexer/output-es/Data.Functor.Product/index.js new file mode 100644 index 0000000..576f864 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Functor.Product/index.js @@ -0,0 +1,116 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +const Product = x => x; +const showProduct = dictShow => dictShow1 => ({show: v => "(product " + (dictShow.show(v._1) + (" " + (dictShow1.show(v._2) + ")")))}); +const product = fa => ga => Data$dTuple.$Tuple(fa, ga); +const newtypeProduct = {Coercible0: () => undefined}; +const functorProduct = dictFunctor => dictFunctor1 => ({map: f => v => Data$dTuple.$Tuple(dictFunctor.map(f)(v._1), dictFunctor1.map(f)(v._2))}); +const eq1Product = dictEq1 => dictEq11 => ( + { + eq1: dictEq => { + const eq12 = dictEq1.eq1(dictEq); + const eq13 = dictEq11.eq1(dictEq); + return v => v1 => eq12(v._1)(v1._1) && eq13(v._2)(v1._2); + } + } +); +const eqProduct = dictEq1 => dictEq11 => dictEq => ( + { + eq: (() => { + const eq12 = dictEq1.eq1(dictEq); + const eq13 = dictEq11.eq1(dictEq); + return v => v1 => eq12(v._1)(v1._1) && eq13(v._2)(v1._2); + })() + } +); +const ord1Product = dictOrd1 => { + const $1 = dictOrd1.Eq10(); + return dictOrd11 => { + const $3 = dictOrd11.Eq10(); + const eq1Product2 = { + eq1: dictEq => { + const eq12 = $1.eq1(dictEq); + const eq13 = $3.eq1(dictEq); + return v => v1 => eq12(v._1)(v1._1) && eq13(v._2)(v1._2); + } + }; + return { + compare1: dictOrd => { + const compare12 = dictOrd1.compare1(dictOrd); + const compare13 = dictOrd11.compare1(dictOrd); + return v => v1 => { + const v2 = compare12(v._1)(v1._1); + if (v2.tag === "EQ") { return compare13(v._2)(v1._2); } + return v2; + }; + }, + Eq10: () => eq1Product2 + }; + }; +}; +const ordProduct = dictOrd1 => { + const ord1Product1 = ord1Product(dictOrd1); + const $2 = dictOrd1.Eq10(); + return dictOrd11 => { + const compare1 = ord1Product1(dictOrd11).compare1; + const $5 = dictOrd11.Eq10(); + return dictOrd => { + const $7 = dictOrd.Eq0(); + const eqProduct3 = { + eq: (() => { + const eq12 = $2.eq1($7); + const eq13 = $5.eq1($7); + return v => v1 => eq12(v._1)(v1._1) && eq13(v._2)(v1._2); + })() + }; + return {compare: compare1(dictOrd), Eq0: () => eqProduct3}; + }; + }; +}; +const bihoistProduct = natF => natG => v => Data$dTuple.$Tuple(natF(v._1), natG(v._2)); +const applyProduct = dictApply => { + const functorProduct1 = functorProduct(dictApply.Functor0()); + return dictApply1 => { + const functorProduct2 = functorProduct1(dictApply1.Functor0()); + return {apply: v => v1 => Data$dTuple.$Tuple(dictApply.apply(v._1)(v1._1), dictApply1.apply(v._2)(v1._2)), Functor0: () => functorProduct2}; + }; +}; +const bindProduct = dictBind => { + const applyProduct1 = applyProduct(dictBind.Apply0()); + return dictBind1 => { + const applyProduct2 = applyProduct1(dictBind1.Apply0()); + return {bind: v => f => Data$dTuple.$Tuple(dictBind.bind(v._1)(x => f(x)._1), dictBind1.bind(v._2)(x => f(x)._2)), Apply0: () => applyProduct2}; + }; +}; +const applicativeProduct = dictApplicative => { + const applyProduct1 = applyProduct(dictApplicative.Apply0()); + return dictApplicative1 => { + const applyProduct2 = applyProduct1(dictApplicative1.Apply0()); + return {pure: a => Data$dTuple.$Tuple(dictApplicative.pure(a), dictApplicative1.pure(a)), Apply0: () => applyProduct2}; + }; +}; +const monadProduct = dictMonad => { + const applicativeProduct1 = applicativeProduct(dictMonad.Applicative0()); + const bindProduct1 = bindProduct(dictMonad.Bind1()); + return dictMonad1 => { + const applicativeProduct2 = applicativeProduct1(dictMonad1.Applicative0()); + const bindProduct2 = bindProduct1(dictMonad1.Bind1()); + return {Applicative0: () => applicativeProduct2, Bind1: () => bindProduct2}; + }; +}; +export { + Product, + applicativeProduct, + applyProduct, + bihoistProduct, + bindProduct, + eq1Product, + eqProduct, + functorProduct, + monadProduct, + newtypeProduct, + ord1Product, + ordProduct, + product, + showProduct +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Functor.Product2/index.js b/.storybook/purescript-indexer/output-es/Data.Functor.Product2/index.js new file mode 100644 index 0000000..afb272e --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Functor.Product2/index.js @@ -0,0 +1,40 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dOrdering from "../Data.Ordering/index.js"; +const $Product2 = (_1, _2) => ({tag: "Product2", _1, _2}); +const Product2 = value0 => value1 => $Product2(value0, value1); +const showProduct2 = dictShow => dictShow1 => ({show: v => "(Product2 " + (dictShow.show(v._1) + (" " + (dictShow1.show(v._2) + ")")))}); +const profunctorProduct2 = dictProfunctor => dictProfunctor1 => ({dimap: f => g => v => $Product2(dictProfunctor.dimap(f)(g)(v._1), dictProfunctor1.dimap(f)(g)(v._2))}); +const functorProduct2 = dictFunctor => dictFunctor1 => ({map: f => v => $Product2(dictFunctor.map(f)(v._1), dictFunctor1.map(f)(v._2))}); +const eqProduct2 = dictEq => dictEq1 => ({eq: x => y => dictEq.eq(x._1)(y._1) && dictEq1.eq(x._2)(y._2)}); +const ordProduct2 = dictOrd => { + const $1 = dictOrd.Eq0(); + return dictOrd1 => { + const $3 = dictOrd1.Eq0(); + const eqProduct22 = {eq: x => y => $1.eq(x._1)(y._1) && $3.eq(x._2)(y._2)}; + return { + compare: x => y => { + const v = dictOrd.compare(x._1)(y._1); + if (v.tag === "LT") { return Data$dOrdering.LT; } + if (v.tag === "GT") { return Data$dOrdering.GT; } + return dictOrd1.compare(x._2)(y._2); + }, + Eq0: () => eqProduct22 + }; + }; +}; +const bifunctorProduct2 = dictBifunctor => dictBifunctor1 => ({bimap: f => g => v => $Product2(dictBifunctor.bimap(f)(g)(v._1), dictBifunctor1.bimap(f)(g)(v._2))}); +const biapplyProduct2 = dictBiapply => { + const bifunctorProduct21 = bifunctorProduct2(dictBiapply.Bifunctor0()); + return dictBiapply1 => { + const bifunctorProduct22 = bifunctorProduct21(dictBiapply1.Bifunctor0()); + return {biapply: v => v1 => $Product2(dictBiapply.biapply(v._1)(v1._1), dictBiapply1.biapply(v._2)(v1._2)), Bifunctor0: () => bifunctorProduct22}; + }; +}; +const biapplicativeProduct2 = dictBiapplicative => { + const biapplyProduct21 = biapplyProduct2(dictBiapplicative.Biapply0()); + return dictBiapplicative1 => { + const biapplyProduct22 = biapplyProduct21(dictBiapplicative1.Biapply0()); + return {bipure: a => b => $Product2(dictBiapplicative.bipure(a)(b), dictBiapplicative1.bipure(a)(b)), Biapply0: () => biapplyProduct22}; + }; +}; +export {$Product2, Product2, biapplicativeProduct2, biapplyProduct2, bifunctorProduct2, eqProduct2, functorProduct2, ordProduct2, profunctorProduct2, showProduct2}; diff --git a/.storybook/purescript-indexer/output-es/Data.Functor.Variant/index.js b/.storybook/purescript-indexer/output-es/Data.Functor.Variant/index.js new file mode 100644 index 0000000..94666e1 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Functor.Variant/index.js @@ -0,0 +1,218 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dList$dTypes from "../Data.List.Types/index.js"; +import * as Data$dShow from "../Data.Show/index.js"; +import * as Data$dTraversable from "../Data.Traversable/index.js"; +import * as Data$dVariant$dInternal from "../Data.Variant.Internal/index.js"; +import * as Partial from "../Partial/index.js"; +import * as Record$dUnsafe from "../Record.Unsafe/index.js"; +import * as Type$dProxy from "../Type.Proxy/index.js"; +import * as Unsafe$dCoerce from "../Unsafe.Coerce/index.js"; +const UnvariantF = x => x; +const variantFShows = dict => dict.variantFShows; +const variantFMaps = dict => dict.variantFMaps; +const unvariantF = v => f => f({reflectSymbol: v$1 => v.type})()({map: v.map})(Type$dProxy.Proxy)(v.value); +const traverseVFRL = dict => dict.traverseVFRL; +const traverseSome = () => () => () => dictVariantTags => dictVariantFMaps => () => () => dictFunctor => r => k => v => { + if (Record$dUnsafe.unsafeHas(v.type)(r)) { + const map1 = Data$dVariant$dInternal.lookup("map")(v.type)(dictVariantTags.variantTags(Type$dProxy.Proxy))(dictVariantFMaps.variantFMaps(Type$dProxy.Proxy)); + return dictFunctor.map(value => ({type: v.type, map: map1, value: value}))(Record$dUnsafe.unsafeGet(v.type)(r)(v.value)); + } + return k(v); +}; +const traverse = () => () => () => dictVariantTags => dictVariantFMaps => () => () => dictApplicative => { + const Functor0 = dictApplicative.Apply0().Functor0(); + return dictTraversable => { + const traverse1 = dictTraversable.traverse(dictApplicative); + return r => f => traverseSome()()()(dictVariantTags)(dictVariantFMaps)()()(Functor0)(r)((() => { + const $13 = traverse1(f); + const $14 = Functor0.map(Unsafe$dCoerce.unsafeCoerce); + return x => $14($13(x)); + })()); + }; +}; +const showVariantFNil = {variantFShows: v => v1 => Data$dList$dTypes.Nil}; +const showVariantFCons = dictVariantFShows => dictShow => dictShow1 => ( + {variantFShows: v => p => Data$dList$dTypes.$List("Cons", dictShow.show, dictVariantFShows.variantFShows(Type$dProxy.Proxy)(p))} +); +const showVariantF = () => dictVariantTags => dictVariantFShows => dictShow => ( + { + show: v1 => "(inj @" + ( + Data$dShow.showStringImpl(v1.type) + ( + " " + ( + Data$dVariant$dInternal.lookup("show")(v1.type)(dictVariantTags.variantTags(Type$dProxy.Proxy))(dictVariantFShows.variantFShows(Type$dProxy.Proxy)(Type$dProxy.Proxy))(v1.value) + ")" + ) + ) + ) + } +); +const overSome = () => () => () => dictVariantTags => dictVariantFMaps => () => () => r => k => v => { + if (Record$dUnsafe.unsafeHas(v.type)(r)) { + return { + type: v.type, + map: Data$dVariant$dInternal.lookup("map")(v.type)(dictVariantTags.variantTags(Type$dProxy.Proxy))(dictVariantFMaps.variantFMaps(Type$dProxy.Proxy)), + value: Record$dUnsafe.unsafeGet(v.type)(r)(v.value) + }; + } + return k(v); +}; +const onMatch = () => () => () => r => k => v => { + if (Record$dUnsafe.unsafeHas(v.type)(r)) { return Record$dUnsafe.unsafeGet(v.type)(r)(v.value); } + return k(v); +}; +const on = () => dictIsSymbol => p => f => g => r => { + if (r.type === dictIsSymbol.reflectSymbol(p)) { return f(r.value); } + return g(r); +}; +const prj = () => dictAlternative => { + const pure = dictAlternative.Applicative0().pure; + const empty = dictAlternative.Plus1().empty; + return dictIsSymbol => p => r => { + if (r.type === dictIsSymbol.reflectSymbol(p)) { return pure(r.value); } + return empty; + }; +}; +const mapVariantFNil = {variantFMaps: v => Data$dList$dTypes.Nil}; +const mapVariantFCons = dictVariantFMaps => dictFunctor => ({variantFMaps: v => Data$dList$dTypes.$List("Cons", dictFunctor.map, dictVariantFMaps.variantFMaps(Type$dProxy.Proxy))}); +const inj = () => dictIsSymbol => dictFunctor => p => value => ({type: dictIsSymbol.reflectSymbol(p), value: value, map: dictFunctor.map}); +const overOne = () => () => dictIsSymbol => dictFunctor => p => f => g => r => { + if (r.type === dictIsSymbol.reflectSymbol(p)) { return {type: dictIsSymbol.reflectSymbol(p), value: f(r.value), map: dictFunctor.map}; } + return g(r); +}; +const revariantF = v => v(dictIsSymbol => () => dictFunctor => p => value => ({type: dictIsSymbol.reflectSymbol(p), value: value, map: dictFunctor.map})); +const traverseOne = () => () => dictIsSymbol => dictFunctor => dictFunctor1 => p => f => { + const $7 = dictFunctor1.map(value => ({type: dictIsSymbol.reflectSymbol(p), value: value, map: dictFunctor.map})); + return g => r => { + if (r.type === dictIsSymbol.reflectSymbol(p)) { return $7(f(r.value)); } + return g(r); + }; +}; +const functorVariantF = {map: f => a => ({type: a.type, value: a.map(f)(a.value), map: a.map})}; +const over = () => () => () => dictVariantTags => dictVariantFMaps => () => () => r => f => overSome()()()(dictVariantTags)(dictVariantFMaps)()()(r)(x => ( + {type: x.type, value: x.map(f)(x.value), map: x.map} +)); +const foldrVFRL = dict => dict.foldrVFRL; +const foldlVFRL = dict => dict.foldlVFRL; +const foldMapVFRL = dict => dict.foldMapVFRL; +const foldableCons = dictIsSymbol => dictFoldable => dictFoldableVFRL => () => ( + { + foldrVFRL: v => f => b => { + const $7 = dictFoldable.foldr(f)(b); + const $8 = dictFoldableVFRL.foldrVFRL(Type$dProxy.Proxy)(f)(b); + return r => { + if (r.type === dictIsSymbol.reflectSymbol(Type$dProxy.Proxy)) { return $7(r.value); } + return $8(r); + }; + }, + foldlVFRL: v => f => b => { + const $7 = dictFoldable.foldl(f)(b); + const $8 = dictFoldableVFRL.foldlVFRL(Type$dProxy.Proxy)(f)(b); + return r => { + if (r.type === dictIsSymbol.reflectSymbol(Type$dProxy.Proxy)) { return $7(r.value); } + return $8(r); + }; + }, + foldMapVFRL: dictMonoid => { + const foldMap1 = dictFoldable.foldMap(dictMonoid); + const foldMapVFRL2 = dictFoldableVFRL.foldMapVFRL(dictMonoid); + return v => f => { + const $9 = foldMap1(f); + const $10 = foldMapVFRL2(Type$dProxy.Proxy)(f); + return r => { + if (r.type === dictIsSymbol.reflectSymbol(Type$dProxy.Proxy)) { return $9(r.value); } + return $10(r); + }; + }; + } + } +); +const foldableVariantF = () => dictFoldableVFRL => ( + { + foldr: dictFoldableVFRL.foldrVFRL(Type$dProxy.Proxy), + foldl: dictFoldableVFRL.foldlVFRL(Type$dProxy.Proxy), + foldMap: dictMonoid => dictFoldableVFRL.foldMapVFRL(dictMonoid)(Type$dProxy.Proxy) + } +); +const traversableVariantF = () => dictTraversableVFRL => { + const foldableVariantF2 = foldableVariantF()(dictTraversableVFRL.FoldableVFRL0()); + return { + traverse: dictApplicative => dictTraversableVFRL.traverseVFRL(dictApplicative)(Type$dProxy.Proxy), + sequence: dictApplicative => traversableVariantF()(dictTraversableVFRL).traverse(dictApplicative)(Data$dTraversable.identity), + Functor0: () => functorVariantF, + Foldable1: () => foldableVariantF2 + }; +}; +const expand = () => Unsafe$dCoerce.unsafeCoerce; +const traversableCons = dictIsSymbol => dictTraversable => { + const $2 = dictTraversable.Functor0(); + const foldableCons2 = foldableCons(dictIsSymbol)(dictTraversable.Foldable1()); + return dictTraversableVFRL => { + const foldableCons3 = foldableCons2(dictTraversableVFRL.FoldableVFRL0())(); + return () => () => ( + { + traverseVFRL: dictApplicative => { + const traverse2 = dictTraversable.traverse(dictApplicative); + const map1 = dictApplicative.Apply0().Functor0().map; + const traverseVFRL2 = dictTraversableVFRL.traverseVFRL(dictApplicative); + return v => f => { + const $14 = traverse2(f); + const $15 = map1(value => ({type: dictIsSymbol.reflectSymbol(Type$dProxy.Proxy), value: value, map: $2.map})); + const $16 = traverseVFRL2(Type$dProxy.Proxy)(f); + const $17 = map1(Unsafe$dCoerce.unsafeCoerce); + return r => { + if (r.type === dictIsSymbol.reflectSymbol(Type$dProxy.Proxy)) { return $15($14(r.value)); } + return $17($16(r)); + }; + }; + }, + FoldableVFRL0: () => foldableCons3 + } + ); + }; +}; +const $$default = a => v => a; +const contract = dictAlternative => dictContractable => { + const contractWith = dictContractable.contractWith(dictAlternative); + return v => contractWith(Type$dProxy.Proxy)(Type$dProxy.Proxy)(v.type)(v); +}; +const case_ = r => Partial._crashWith("Data.Functor.Variant: pattern match failure [" + (r.type + "]")); +const foldableNil = {foldrVFRL: v => v1 => v2 => case_, foldlVFRL: v => v1 => v2 => case_, foldMapVFRL: dictMonoid => v => v1 => case_}; +const match = () => () => () => r => onMatch()()()(r)(case_); +const traversableNil = {traverseVFRL: dictApplicative => v => v1 => case_, FoldableVFRL0: () => foldableNil}; +export { + UnvariantF, + case_, + contract, + $$default as default, + expand, + foldMapVFRL, + foldableCons, + foldableNil, + foldableVariantF, + foldlVFRL, + foldrVFRL, + functorVariantF, + inj, + mapVariantFCons, + mapVariantFNil, + match, + on, + onMatch, + over, + overOne, + overSome, + prj, + revariantF, + showVariantF, + showVariantFCons, + showVariantFNil, + traversableCons, + traversableNil, + traversableVariantF, + traverse, + traverseOne, + traverseSome, + traverseVFRL, + unvariantF, + variantFMaps, + variantFShows +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Functor/foreign.js b/.storybook/purescript-indexer/output-es/Data.Functor/foreign.js new file mode 100644 index 0000000..095e533 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Functor/foreign.js @@ -0,0 +1,10 @@ +export const 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; + }; +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Functor/index.js b/.storybook/purescript-indexer/output-es/Data.Functor/index.js new file mode 100644 index 0000000..313e7fd --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Functor/index.js @@ -0,0 +1,16 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dSemigroupoid from "../Control.Semigroupoid/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +import * as Type$dProxy from "../Type.Proxy/index.js"; +import {arrayMap} from "./foreign.js"; +const map = dict => dict.map; +const mapFlipped = dictFunctor => fa => f => dictFunctor.map(f)(fa); +const $$void = dictFunctor => dictFunctor.map(v => Data$dUnit.unit); +const voidLeft = dictFunctor => f => x => dictFunctor.map(v => x)(f); +const voidRight = dictFunctor => x => dictFunctor.map(v => x); +const functorProxy = {map: v => v1 => Type$dProxy.Proxy}; +const functorFn = /* #__PURE__ */ (() => ({map: Control$dSemigroupoid.semigroupoidFn.compose}))(); +const functorArray = {map: arrayMap}; +const flap = dictFunctor => ff => x => dictFunctor.map(f => f(x))(ff); +export {flap, functorArray, functorFn, functorProxy, map, mapFlipped, $$void as void, voidLeft, voidRight}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Data.FunctorWithIndex/foreign.js b/.storybook/purescript-indexer/output-es/Data.FunctorWithIndex/foreign.js new file mode 100644 index 0000000..884e842 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.FunctorWithIndex/foreign.js @@ -0,0 +1,10 @@ +export const 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; + }; +}; diff --git a/.storybook/purescript-indexer/output-es/Data.FunctorWithIndex/index.js b/.storybook/purescript-indexer/output-es/Data.FunctorWithIndex/index.js new file mode 100644 index 0000000..e4f5d43 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.FunctorWithIndex/index.js @@ -0,0 +1,92 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dBifunctor from "../Data.Bifunctor/index.js"; +import * as Data$dConst from "../Data.Const/index.js"; +import * as Data$dEither from "../Data.Either/index.js"; +import * as Data$dFunctor from "../Data.Functor/index.js"; +import * as Data$dFunctor$dCoproduct from "../Data.Functor.Coproduct/index.js"; +import * as Data$dFunctor$dProduct from "../Data.Functor.Product/index.js"; +import * as Data$dIdentity from "../Data.Identity/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dMonoid$dAdditive from "../Data.Monoid.Additive/index.js"; +import * as Data$dMonoid$dConj from "../Data.Monoid.Conj/index.js"; +import * as Data$dMonoid$dDisj from "../Data.Monoid.Disj/index.js"; +import * as Data$dMonoid$dDual from "../Data.Monoid.Dual/index.js"; +import * as Data$dMonoid$dMultiplicative from "../Data.Monoid.Multiplicative/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +import {mapWithIndexArray} from "./foreign.js"; +const mapWithIndex = dict => dict.mapWithIndex; +const mapDefault = dictFunctorWithIndex => f => dictFunctorWithIndex.mapWithIndex(v => f); +const functorWithIndexTuple = {mapWithIndex: f => Data$dTuple.functorTuple.map(f(Data$dUnit.unit)), Functor0: () => Data$dTuple.functorTuple}; +const functorWithIndexProduct = dictFunctorWithIndex => { + const functorProduct = Data$dFunctor$dProduct.functorProduct(dictFunctorWithIndex.Functor0()); + return dictFunctorWithIndex1 => { + const functorProduct1 = functorProduct(dictFunctorWithIndex1.Functor0()); + return { + mapWithIndex: f => v => Data$dTuple.$Tuple( + dictFunctorWithIndex.mapWithIndex(x => f(Data$dEither.$Either("Left", x)))(v._1), + dictFunctorWithIndex1.mapWithIndex(x => f(Data$dEither.$Either("Right", x)))(v._2) + ), + Functor0: () => functorProduct1 + }; + }; +}; +const functorWithIndexMultiplicative = {mapWithIndex: f => f(Data$dUnit.unit), Functor0: () => Data$dMonoid$dMultiplicative.functorMultiplicative}; +const functorWithIndexMaybe = {mapWithIndex: f => Data$dMaybe.functorMaybe.map(f(Data$dUnit.unit)), Functor0: () => Data$dMaybe.functorMaybe}; +const functorWithIndexLast = {mapWithIndex: f => Data$dMaybe.functorMaybe.map(f(Data$dUnit.unit)), Functor0: () => Data$dMaybe.functorMaybe}; +const functorWithIndexIdentity = {mapWithIndex: f => v => f(Data$dUnit.unit)(v), Functor0: () => Data$dIdentity.functorIdentity}; +const functorWithIndexFirst = {mapWithIndex: f => Data$dMaybe.functorMaybe.map(f(Data$dUnit.unit)), Functor0: () => Data$dMaybe.functorMaybe}; +const functorWithIndexEither = {mapWithIndex: f => Data$dEither.functorEither.map(f(Data$dUnit.unit)), Functor0: () => Data$dEither.functorEither}; +const functorWithIndexDual = {mapWithIndex: f => f(Data$dUnit.unit), Functor0: () => Data$dMonoid$dDual.functorDual}; +const functorWithIndexDisj = {mapWithIndex: f => f(Data$dUnit.unit), Functor0: () => Data$dMonoid$dDisj.functorDisj}; +const functorWithIndexCoproduct = dictFunctorWithIndex => { + const functorCoproduct = Data$dFunctor$dCoproduct.functorCoproduct(dictFunctorWithIndex.Functor0()); + return dictFunctorWithIndex1 => { + const functorCoproduct1 = functorCoproduct(dictFunctorWithIndex1.Functor0()); + return { + mapWithIndex: f => v => Data$dBifunctor.bifunctorEither.bimap(dictFunctorWithIndex.mapWithIndex(x => f(Data$dEither.$Either("Left", x))))(dictFunctorWithIndex1.mapWithIndex(x => f(Data$dEither.$Either( + "Right", + x + ))))(v), + Functor0: () => functorCoproduct1 + }; + }; +}; +const functorWithIndexConst = {mapWithIndex: v => v1 => v1, Functor0: () => Data$dConst.functorConst}; +const functorWithIndexConj = {mapWithIndex: f => f(Data$dUnit.unit), Functor0: () => Data$dMonoid$dConj.functorConj}; +const functorWithIndexCompose = dictFunctorWithIndex => { + const $1 = dictFunctorWithIndex.Functor0(); + return dictFunctorWithIndex1 => { + const $3 = dictFunctorWithIndex1.Functor0(); + const functorCompose1 = {map: f => v => $1.map($3.map(f))(v)}; + return {mapWithIndex: f => v => dictFunctorWithIndex.mapWithIndex(x => dictFunctorWithIndex1.mapWithIndex(Data$dTuple.curry(f)(x)))(v), Functor0: () => functorCompose1}; + }; +}; +const functorWithIndexArray = {mapWithIndex: mapWithIndexArray, Functor0: () => Data$dFunctor.functorArray}; +const functorWithIndexApp = dictFunctorWithIndex => { + const functorApp = dictFunctorWithIndex.Functor0(); + return {mapWithIndex: f => v => dictFunctorWithIndex.mapWithIndex(f)(v), Functor0: () => functorApp}; +}; +const functorWithIndexAdditive = {mapWithIndex: f => f(Data$dUnit.unit), Functor0: () => Data$dMonoid$dAdditive.functorAdditive}; +export { + functorWithIndexAdditive, + functorWithIndexApp, + functorWithIndexArray, + functorWithIndexCompose, + functorWithIndexConj, + functorWithIndexConst, + functorWithIndexCoproduct, + functorWithIndexDisj, + functorWithIndexDual, + functorWithIndexEither, + functorWithIndexFirst, + functorWithIndexIdentity, + functorWithIndexLast, + functorWithIndexMaybe, + functorWithIndexMultiplicative, + functorWithIndexProduct, + functorWithIndexTuple, + mapDefault, + mapWithIndex +}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Data.Generic.Rep/index.js b/.storybook/purescript-indexer/output-es/Data.Generic.Rep/index.js new file mode 100644 index 0000000..64af52f --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Generic.Rep/index.js @@ -0,0 +1,31 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dShow from "../Data.Show/index.js"; +import * as Type$dProxy from "../Type.Proxy/index.js"; +const $NoArguments = () => ({tag: "NoArguments"}); +const $Product = (_1, _2) => ({tag: "Product", _1, _2}); +const $Sum = (tag, _1) => ({tag, _1}); +const Inl = value0 => $Sum("Inl", value0); +const Inr = value0 => $Sum("Inr", value0); +const Product = value0 => value1 => $Product(value0, value1); +const NoArguments = /* #__PURE__ */ $NoArguments(); +const Constructor = x => x; +const Argument = x => x; +const to = dict => dict.to; +const showSum = dictShow => dictShow1 => ( + { + show: v => { + if (v.tag === "Inl") { return "(Inl " + (dictShow.show(v._1) + ")"); } + if (v.tag === "Inr") { return "(Inr " + (dictShow1.show(v._1) + ")"); } + $runtime.fail(); + } + } +); +const showProduct = dictShow => dictShow1 => ({show: v => "(Product " + (dictShow.show(v._1) + (" " + (dictShow1.show(v._2) + ")")))}); +const showNoArguments = {show: v => "NoArguments"}; +const showConstructor = dictIsSymbol => dictShow => ( + {show: v => "(Constructor @" + (Data$dShow.showStringImpl(dictIsSymbol.reflectSymbol(Type$dProxy.Proxy)) + (" " + (dictShow.show(v) + ")")))} +); +const showArgument = dictShow => ({show: v => "(Argument " + (dictShow.show(v) + ")")}); +const repOf = dictGeneric => v => Type$dProxy.Proxy; +const from = dict => dict.from; +export {$NoArguments, $Product, $Sum, Argument, Constructor, Inl, Inr, NoArguments, Product, from, repOf, showArgument, showConstructor, showNoArguments, showProduct, showSum, to}; diff --git a/.storybook/purescript-indexer/output-es/Data.HeytingAlgebra.Generic/index.js b/.storybook/purescript-indexer/output-es/Data.HeytingAlgebra.Generic/index.js new file mode 100644 index 0000000..cbe02a5 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.HeytingAlgebra.Generic/index.js @@ -0,0 +1,70 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dGeneric$dRep from "../Data.Generic.Rep/index.js"; +const genericTT$p = dict => dict["genericTT'"]; +const genericTT = dictGeneric => dictGenericHeytingAlgebra => dictGeneric.to(dictGenericHeytingAlgebra["genericTT'"]); +const genericNot$p = dict => dict["genericNot'"]; +const genericNot = dictGeneric => dictGenericHeytingAlgebra => x => dictGeneric.to(dictGenericHeytingAlgebra["genericNot'"](dictGeneric.from(x))); +const genericImplies$p = dict => dict["genericImplies'"]; +const genericImplies = dictGeneric => dictGenericHeytingAlgebra => x => y => dictGeneric.to(dictGenericHeytingAlgebra["genericImplies'"](dictGeneric.from(x))(dictGeneric.from(y))); +const genericHeytingAlgebraNoArguments = { + "genericFF'": Data$dGeneric$dRep.NoArguments, + "genericTT'": Data$dGeneric$dRep.NoArguments, + "genericImplies'": v => v1 => Data$dGeneric$dRep.NoArguments, + "genericConj'": v => v1 => Data$dGeneric$dRep.NoArguments, + "genericDisj'": v => v1 => Data$dGeneric$dRep.NoArguments, + "genericNot'": v => Data$dGeneric$dRep.NoArguments +}; +const genericHeytingAlgebraArgument = dictHeytingAlgebra => ( + { + "genericFF'": dictHeytingAlgebra.ff, + "genericTT'": dictHeytingAlgebra.tt, + "genericImplies'": v => v1 => dictHeytingAlgebra.implies(v)(v1), + "genericConj'": v => v1 => dictHeytingAlgebra.conj(v)(v1), + "genericDisj'": v => v1 => dictHeytingAlgebra.disj(v)(v1), + "genericNot'": v => dictHeytingAlgebra.not(v) + } +); +const genericFF$p = dict => dict["genericFF'"]; +const genericFF = dictGeneric => dictGenericHeytingAlgebra => dictGeneric.to(dictGenericHeytingAlgebra["genericFF'"]); +const genericDisj$p = dict => dict["genericDisj'"]; +const genericDisj = dictGeneric => dictGenericHeytingAlgebra => x => y => dictGeneric.to(dictGenericHeytingAlgebra["genericDisj'"](dictGeneric.from(x))(dictGeneric.from(y))); +const genericConj$p = dict => dict["genericConj'"]; +const genericHeytingAlgebraConstructor = dictGenericHeytingAlgebra => ( + { + "genericFF'": dictGenericHeytingAlgebra["genericFF'"], + "genericTT'": dictGenericHeytingAlgebra["genericTT'"], + "genericImplies'": v => v1 => dictGenericHeytingAlgebra["genericImplies'"](v)(v1), + "genericConj'": v => v1 => dictGenericHeytingAlgebra["genericConj'"](v)(v1), + "genericDisj'": v => v1 => dictGenericHeytingAlgebra["genericDisj'"](v)(v1), + "genericNot'": v => dictGenericHeytingAlgebra["genericNot'"](v) + } +); +const genericHeytingAlgebraProduct = dictGenericHeytingAlgebra => dictGenericHeytingAlgebra1 => ( + { + "genericFF'": Data$dGeneric$dRep.$Product(dictGenericHeytingAlgebra["genericFF'"], dictGenericHeytingAlgebra1["genericFF'"]), + "genericTT'": Data$dGeneric$dRep.$Product(dictGenericHeytingAlgebra["genericTT'"], dictGenericHeytingAlgebra1["genericTT'"]), + "genericImplies'": v => v1 => Data$dGeneric$dRep.$Product(dictGenericHeytingAlgebra["genericImplies'"](v._1)(v1._1), dictGenericHeytingAlgebra1["genericImplies'"](v._2)(v1._2)), + "genericConj'": v => v1 => Data$dGeneric$dRep.$Product(dictGenericHeytingAlgebra["genericConj'"](v._1)(v1._1), dictGenericHeytingAlgebra1["genericConj'"](v._2)(v1._2)), + "genericDisj'": v => v1 => Data$dGeneric$dRep.$Product(dictGenericHeytingAlgebra["genericDisj'"](v._1)(v1._1), dictGenericHeytingAlgebra1["genericDisj'"](v._2)(v1._2)), + "genericNot'": v => Data$dGeneric$dRep.$Product(dictGenericHeytingAlgebra["genericNot'"](v._1), dictGenericHeytingAlgebra1["genericNot'"](v._2)) + } +); +const genericConj = dictGeneric => dictGenericHeytingAlgebra => x => y => dictGeneric.to(dictGenericHeytingAlgebra["genericConj'"](dictGeneric.from(x))(dictGeneric.from(y))); +export { + genericConj, + genericConj$p, + genericDisj, + genericDisj$p, + genericFF, + genericFF$p, + genericHeytingAlgebraArgument, + genericHeytingAlgebraConstructor, + genericHeytingAlgebraNoArguments, + genericHeytingAlgebraProduct, + genericImplies, + genericImplies$p, + genericNot, + genericNot$p, + genericTT, + genericTT$p +}; diff --git a/.storybook/purescript-indexer/output-es/Data.HeytingAlgebra/foreign.js b/.storybook/purescript-indexer/output-es/Data.HeytingAlgebra/foreign.js new file mode 100644 index 0000000..80990b4 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.HeytingAlgebra/foreign.js @@ -0,0 +1,15 @@ +export const boolConj = function (b1) { + return function (b2) { + return b1 && b2; + }; +}; + +export const boolDisj = function (b1) { + return function (b2) { + return b1 || b2; + }; +}; + +export const boolNot = function (b) { + return !b; +}; diff --git a/.storybook/purescript-indexer/output-es/Data.HeytingAlgebra/index.js b/.storybook/purescript-indexer/output-es/Data.HeytingAlgebra/index.js new file mode 100644 index 0000000..94f8bd9 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.HeytingAlgebra/index.js @@ -0,0 +1,109 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +import * as Record$dUnsafe from "../Record.Unsafe/index.js"; +import * as Type$dProxy from "../Type.Proxy/index.js"; +import {boolConj, boolDisj, boolNot} from "./foreign.js"; +const ttRecord = dict => dict.ttRecord; +const tt = dict => dict.tt; +const notRecord = dict => dict.notRecord; +const not = dict => dict.not; +const impliesRecord = dict => dict.impliesRecord; +const implies = dict => dict.implies; +const heytingAlgebraUnit = { + ff: Data$dUnit.unit, + tt: Data$dUnit.unit, + implies: v => v1 => Data$dUnit.unit, + conj: v => v1 => Data$dUnit.unit, + disj: v => v1 => Data$dUnit.unit, + not: v => Data$dUnit.unit +}; +const heytingAlgebraRecordNil = { + conjRecord: v => v1 => v2 => ({}), + disjRecord: v => v1 => v2 => ({}), + ffRecord: v => v1 => ({}), + impliesRecord: v => v1 => v2 => ({}), + notRecord: v => v1 => ({}), + ttRecord: v => v1 => ({}) +}; +const heytingAlgebraProxy = { + conj: v => v1 => Type$dProxy.Proxy, + disj: v => v1 => Type$dProxy.Proxy, + implies: v => v1 => Type$dProxy.Proxy, + ff: Type$dProxy.Proxy, + not: v => Type$dProxy.Proxy, + tt: Type$dProxy.Proxy +}; +const ffRecord = dict => dict.ffRecord; +const ff = dict => dict.ff; +const disjRecord = dict => dict.disjRecord; +const disj = dict => dict.disj; +const heytingAlgebraBoolean = {ff: false, tt: true, implies: a => b => heytingAlgebraBoolean.disj(heytingAlgebraBoolean.not(a))(b), conj: boolConj, disj: boolDisj, not: boolNot}; +const conjRecord = dict => dict.conjRecord; +const heytingAlgebraRecord = () => dictHeytingAlgebraRecord => ( + { + ff: dictHeytingAlgebraRecord.ffRecord(Type$dProxy.Proxy)(Type$dProxy.Proxy), + tt: dictHeytingAlgebraRecord.ttRecord(Type$dProxy.Proxy)(Type$dProxy.Proxy), + conj: dictHeytingAlgebraRecord.conjRecord(Type$dProxy.Proxy), + disj: dictHeytingAlgebraRecord.disjRecord(Type$dProxy.Proxy), + implies: dictHeytingAlgebraRecord.impliesRecord(Type$dProxy.Proxy), + not: dictHeytingAlgebraRecord.notRecord(Type$dProxy.Proxy) + } +); +const conj = dict => dict.conj; +const heytingAlgebraFunction = dictHeytingAlgebra => ( + { + ff: v => dictHeytingAlgebra.ff, + tt: v => dictHeytingAlgebra.tt, + implies: f => g => a => dictHeytingAlgebra.implies(f(a))(g(a)), + conj: f => g => a => dictHeytingAlgebra.conj(f(a))(g(a)), + disj: f => g => a => dictHeytingAlgebra.disj(f(a))(g(a)), + not: f => a => dictHeytingAlgebra.not(f(a)) + } +); +const heytingAlgebraRecordCons = dictIsSymbol => () => dictHeytingAlgebraRecord => dictHeytingAlgebra => ( + { + conjRecord: v => ra => rb => { + const key = dictIsSymbol.reflectSymbol(Type$dProxy.Proxy); + const $$get = Record$dUnsafe.unsafeGet(key); + return Record$dUnsafe.unsafeSet(key)(dictHeytingAlgebra.conj($$get(ra))($$get(rb)))(dictHeytingAlgebraRecord.conjRecord(Type$dProxy.Proxy)(ra)(rb)); + }, + disjRecord: v => ra => rb => { + const key = dictIsSymbol.reflectSymbol(Type$dProxy.Proxy); + const $$get = Record$dUnsafe.unsafeGet(key); + return Record$dUnsafe.unsafeSet(key)(dictHeytingAlgebra.disj($$get(ra))($$get(rb)))(dictHeytingAlgebraRecord.disjRecord(Type$dProxy.Proxy)(ra)(rb)); + }, + impliesRecord: v => ra => rb => { + const key = dictIsSymbol.reflectSymbol(Type$dProxy.Proxy); + const $$get = Record$dUnsafe.unsafeGet(key); + return Record$dUnsafe.unsafeSet(key)(dictHeytingAlgebra.implies($$get(ra))($$get(rb)))(dictHeytingAlgebraRecord.impliesRecord(Type$dProxy.Proxy)(ra)(rb)); + }, + ffRecord: v => row => Record$dUnsafe.unsafeSet(dictIsSymbol.reflectSymbol(Type$dProxy.Proxy))(dictHeytingAlgebra.ff)(dictHeytingAlgebraRecord.ffRecord(Type$dProxy.Proxy)(row)), + notRecord: v => row => { + const key = dictIsSymbol.reflectSymbol(Type$dProxy.Proxy); + return Record$dUnsafe.unsafeSet(key)(dictHeytingAlgebra.not(Record$dUnsafe.unsafeGet(key)(row)))(dictHeytingAlgebraRecord.notRecord(Type$dProxy.Proxy)(row)); + }, + ttRecord: v => row => Record$dUnsafe.unsafeSet(dictIsSymbol.reflectSymbol(Type$dProxy.Proxy))(dictHeytingAlgebra.tt)(dictHeytingAlgebraRecord.ttRecord(Type$dProxy.Proxy)(row)) + } +); +export { + conj, + conjRecord, + disj, + disjRecord, + ff, + ffRecord, + heytingAlgebraBoolean, + heytingAlgebraFunction, + heytingAlgebraProxy, + heytingAlgebraRecord, + heytingAlgebraRecordCons, + heytingAlgebraRecordNil, + heytingAlgebraUnit, + implies, + impliesRecord, + not, + notRecord, + tt, + ttRecord +}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Data.Identity/index.js b/.storybook/purescript-indexer/output-es/Data.Identity/index.js new file mode 100644 index 0000000..4a9486c --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Identity/index.js @@ -0,0 +1,55 @@ +import * as $runtime from "../runtime.js"; +const Identity = x => x; +const showIdentity = dictShow => ({show: v => "(Identity " + (dictShow.show(v) + ")")}); +const semiringIdentity = dictSemiring => dictSemiring; +const semigroupIdentity = dictSemigroup => dictSemigroup; +const ringIdentity = dictRing => dictRing; +const ordIdentity = dictOrd => dictOrd; +const newtypeIdentity = {Coercible0: () => undefined}; +const monoidIdentity = dictMonoid => dictMonoid; +const lazyIdentity = dictLazy => dictLazy; +const heytingAlgebraIdentity = dictHeytingAlgebra => dictHeytingAlgebra; +const functorIdentity = {map: f => m => f(m)}; +const invariantIdentity = {imap: f => v => m => f(m)}; +const extendIdentity = {extend: f => m => f(m), Functor0: () => functorIdentity}; +const euclideanRingIdentity = dictEuclideanRing => dictEuclideanRing; +const eqIdentity = dictEq => dictEq; +const eq1Identity = {eq1: dictEq => dictEq.eq}; +const ord1Identity = {compare1: dictOrd => dictOrd.compare, Eq10: () => eq1Identity}; +const comonadIdentity = {extract: v => v, Extend0: () => extendIdentity}; +const commutativeRingIdentity = dictCommutativeRing => dictCommutativeRing; +const boundedIdentity = dictBounded => dictBounded; +const booleanAlgebraIdentity = dictBooleanAlgebra => dictBooleanAlgebra; +const applyIdentity = {apply: v => v1 => v(v1), Functor0: () => functorIdentity}; +const bindIdentity = {bind: v => f => f(v), Apply0: () => applyIdentity}; +const applicativeIdentity = {pure: Identity, Apply0: () => applyIdentity}; +const monadIdentity = {Applicative0: () => applicativeIdentity, Bind1: () => bindIdentity}; +const altIdentity = {alt: x => v => x, Functor0: () => functorIdentity}; +export { + Identity, + altIdentity, + applicativeIdentity, + applyIdentity, + bindIdentity, + booleanAlgebraIdentity, + boundedIdentity, + commutativeRingIdentity, + comonadIdentity, + eq1Identity, + eqIdentity, + euclideanRingIdentity, + extendIdentity, + functorIdentity, + heytingAlgebraIdentity, + invariantIdentity, + lazyIdentity, + monadIdentity, + monoidIdentity, + newtypeIdentity, + ord1Identity, + ordIdentity, + ringIdentity, + semigroupIdentity, + semiringIdentity, + showIdentity +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Int.Bits/foreign.js b/.storybook/purescript-indexer/output-es/Data.Int.Bits/foreign.js new file mode 100644 index 0000000..49bbaff --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Int.Bits/foreign.js @@ -0,0 +1,48 @@ +// module Data.Int.Bits + +export const and = function (n1) { + return function (n2) { + /* jshint bitwise: false */ + return n1 & n2; + }; +}; + +export const or = function (n1) { + return function (n2) { + /* jshint bitwise: false */ + return n1 | n2; + }; +}; + +export const xor = function (n1) { + return function (n2) { + /* jshint bitwise: false */ + return n1 ^ n2; + }; +}; + +export const shl = function (n1) { + return function (n2) { + /* jshint bitwise: false */ + return n1 << n2; + }; +}; + +export const shr = function (n1) { + return function (n2) { + /* jshint bitwise: false */ + return n1 >> n2; + }; +}; + +export const zshr = function (n1) { + return function (n2) { + /* jshint bitwise: false */ + return n1 >>> n2; + }; +}; + +export const complement = function (n) { + /* jshint bitwise: false */ + return ~n; +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Int.Bits/index.js b/.storybook/purescript-indexer/output-es/Data.Int.Bits/index.js new file mode 100644 index 0000000..50e2b4a --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Int.Bits/index.js @@ -0,0 +1,5 @@ +// | This module defines bitwise operations for the `Int` type. +import * as $runtime from "../runtime.js"; +import {and, complement, or, shl, shr, xor, zshr} from "./foreign.js"; +export {}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Data.Int/foreign.js b/.storybook/purescript-indexer/output-es/Data.Int/foreign.js new file mode 100644 index 0000000..9829cce --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Int/foreign.js @@ -0,0 +1,65 @@ +export const fromNumberImpl = function (just) { + return function (nothing) { + return function (n) { + /* jshint bitwise: false */ + return (n | 0) === n ? just(n) : nothing; + }; + }; +}; + +export const toNumber = function (n) { + return n; +}; + +export const 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) { + /* jshint bitwise: false */ + if (pattern.test(s)) { + var i = parseInt(s, radix); + return (i | 0) === i ? just(i) : nothing; + } else { + return nothing; + } + }; + }; + }; +}; + +export const toStringAs = function (radix) { + return function (i) { + return i.toString(radix); + }; +}; + + +export const quot = function (x) { + return function (y) { + /* jshint bitwise: false */ + return x / y | 0; + }; +}; + +export const rem = function (x) { + return function (y) { + return x % y; + }; +}; + +export const pow = function (x) { + return function (y) { + /* jshint bitwise: false */ + return Math.pow(x,y) | 0; + }; +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Int/index.js b/.storybook/purescript-indexer/output-es/Data.Int/index.js new file mode 100644 index 0000000..6f85b8e --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Int/index.js @@ -0,0 +1,137 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dNumber from "../Data.Number/index.js"; +import * as Data$dOrdering from "../Data.Ordering/index.js"; +import {fromNumberImpl, fromStringAsImpl, pow, quot, rem, toNumber, toStringAs} from "./foreign.js"; +const $Parity = tag => ({tag}); +const Even = /* #__PURE__ */ $Parity("Even"); +const Odd = /* #__PURE__ */ $Parity("Odd"); +const showParity = { + show: v => { + if (v.tag === "Even") { return "Even"; } + if (v.tag === "Odd") { return "Odd"; } + $runtime.fail(); + } +}; +const radix = n => { + if (n >= 2 && n <= 36) { return Data$dMaybe.$Maybe("Just", n); } + return Data$dMaybe.Nothing; +}; +const odd = x => (x & 1) !== 0; +const octal = 8; +const hexadecimal = 16; +const fromStringAs = /* #__PURE__ */ fromStringAsImpl(Data$dMaybe.Just)(Data$dMaybe.Nothing); +const fromString = /* #__PURE__ */ fromStringAs(10); +const fromNumber = /* #__PURE__ */ fromNumberImpl(Data$dMaybe.Just)(Data$dMaybe.Nothing); +const unsafeClamp = x => { + if (!Data$dNumber.isFinite(x)) { return 0; } + if (x >= toNumber(2147483647)) { return 2147483647; } + if (x <= toNumber(-2147483648)) { return -2147483648; } + const $1 = fromNumber(x); + if ($1.tag === "Nothing") { return 0; } + if ($1.tag === "Just") { return $1._1; } + $runtime.fail(); +}; +const round = x => unsafeClamp(Data$dNumber.round(x)); +const trunc = x => unsafeClamp(Data$dNumber.trunc(x)); +const floor = x => unsafeClamp(Data$dNumber.floor(x)); +const even = x => (x & 1) === 0; +const parity = n => { + if ((n & 1) === 0) { return Even; } + return Odd; +}; +const eqParity = { + eq: x => y => { + if (x.tag === "Even") { return y.tag === "Even"; } + if (x.tag === "Odd") { return y.tag === "Odd"; } + return false; + } +}; +const ordParity = { + compare: x => y => { + if (x.tag === "Even") { + if (y.tag === "Even") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "Even") { return Data$dOrdering.GT; } + if (x.tag === "Odd") { + if (y.tag === "Odd") { return Data$dOrdering.EQ; } + $runtime.fail(); + } + $runtime.fail(); + }, + Eq0: () => eqParity +}; +const semiringParity = { + zero: Even, + add: x => y => { + if ( + (() => { + if (x.tag === "Even") { return y.tag === "Even"; } + if (x.tag === "Odd") { return y.tag === "Odd"; } + return false; + })() + ) { + return Even; + } + return Odd; + }, + one: Odd, + mul: v => v1 => { + if (v.tag === "Odd") { + if (v1.tag === "Odd") { return Odd; } + return Even; + } + return Even; + } +}; +const ringParity = /* #__PURE__ */ (() => ({sub: semiringParity.add, Semiring0: () => semiringParity}))(); +const divisionRingParity = {recip: x => x, Ring0: () => ringParity}; +const decimal = 10; +const commutativeRingParity = {Ring0: () => ringParity}; +const euclideanRingParity = { + degree: v => { + if (v.tag === "Even") { return 0; } + if (v.tag === "Odd") { return 1; } + $runtime.fail(); + }, + div: x => v => x, + mod: v => v1 => Even, + CommutativeRing0: () => commutativeRingParity +}; +const ceil = x => unsafeClamp(Data$dNumber.ceil(x)); +const boundedParity = {bottom: Even, top: Odd, Ord0: () => ordParity}; +const binary = 2; +const base36 = 36; +export { + $Parity, + Even, + Odd, + base36, + binary, + boundedParity, + ceil, + commutativeRingParity, + decimal, + divisionRingParity, + eqParity, + euclideanRingParity, + even, + floor, + fromNumber, + fromString, + fromStringAs, + hexadecimal, + octal, + odd, + ordParity, + parity, + radix, + ringParity, + round, + semiringParity, + showParity, + trunc, + unsafeClamp +}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Data.Interval.Duration.Iso/index.js b/.storybook/purescript-indexer/output-es/Data.Interval.Duration.Iso/index.js new file mode 100644 index 0000000..8c352ef --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Interval.Duration.Iso/index.js @@ -0,0 +1,203 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dEither from "../Data.Either/index.js"; +import * as Data$dFoldable from "../Data.Foldable/index.js"; +import * as Data$dInterval$dDuration from "../Data.Interval.Duration/index.js"; +import * as Data$dList from "../Data.List/index.js"; +import * as Data$dList$dTypes from "../Data.List.Types/index.js"; +import * as Data$dMap$dInternal from "../Data.Map.Internal/index.js"; +import * as Data$dNonEmpty from "../Data.NonEmpty/index.js"; +import * as Data$dNumber from "../Data.Number/index.js"; +import * as Data$dOrdering from "../Data.Ordering/index.js"; +const $Error = (tag, _1) => ({tag, _1}); +const foldMap1 = /* #__PURE__ */ (() => Data$dList$dTypes.foldableList.foldMap(Data$dList$dTypes.monoidList))(); +const foldMap2 = /* #__PURE__ */ (() => Data$dList$dTypes.foldableList.foldMap((() => { + const semigroupAdditive1 = {append: v => v1 => v + v1}; + return {mempty: 0.0, Semigroup0: () => semigroupAdditive1}; +})()))(); +const fold = /* #__PURE__ */ (() => Data$dFoldable.foldableArray.foldMap((() => { + const semigroupFn = {append: f => g => x => Data$dList$dTypes.foldableList.foldr(Data$dList$dTypes.Cons)(g(x))(f(x))}; + return {mempty: v => Data$dList$dTypes.Nil, Semigroup0: () => semigroupFn}; +})())(Data$dFoldable.identity))(); +const IsEmpty = /* #__PURE__ */ $Error("IsEmpty"); +const InvalidWeekComponentUsage = /* #__PURE__ */ $Error("InvalidWeekComponentUsage"); +const ContainsNegativeValue = value0 => $Error("ContainsNegativeValue", value0); +const InvalidFractionalUse = value0 => $Error("InvalidFractionalUse", value0); +const unIsoDuration = v => v; +const showIsoDuration = {show: v => "(IsoDuration (Duration " + Data$dInterval$dDuration.show(v) + "))"}; +const showError = { + show: v => { + if (v.tag === "IsEmpty") { return "(IsEmpty)"; } + if (v.tag === "InvalidWeekComponentUsage") { return "(InvalidWeekComponentUsage)"; } + if (v.tag === "ContainsNegativeValue") { + if (v._1.tag === "Minute") { return "(ContainsNegativeValue Minute)"; } + if (v._1.tag === "Second") { return "(ContainsNegativeValue Second)"; } + if (v._1.tag === "Hour") { return "(ContainsNegativeValue Hour)"; } + if (v._1.tag === "Day") { return "(ContainsNegativeValue Day)"; } + if (v._1.tag === "Week") { return "(ContainsNegativeValue Week)"; } + if (v._1.tag === "Month") { return "(ContainsNegativeValue Month)"; } + if (v._1.tag === "Year") { return "(ContainsNegativeValue Year)"; } + $runtime.fail(); + } + if (v.tag === "InvalidFractionalUse") { + if (v._1.tag === "Minute") { return "(InvalidFractionalUse Minute)"; } + if (v._1.tag === "Second") { return "(InvalidFractionalUse Second)"; } + if (v._1.tag === "Hour") { return "(InvalidFractionalUse Hour)"; } + if (v._1.tag === "Day") { return "(InvalidFractionalUse Day)"; } + if (v._1.tag === "Week") { return "(InvalidFractionalUse Week)"; } + if (v._1.tag === "Month") { return "(InvalidFractionalUse Month)"; } + if (v._1.tag === "Year") { return "(InvalidFractionalUse Year)"; } + $runtime.fail(); + } + $runtime.fail(); + } +}; +const prettyError = v => { + if (v.tag === "IsEmpty") { return "Duration is empty (has no components)"; } + if (v.tag === "InvalidWeekComponentUsage") { return "Week component of Duration is used with other components"; } + if (v.tag === "ContainsNegativeValue") { + if (v._1.tag === "Minute") { return "Component `Minute` contains negative value"; } + if (v._1.tag === "Second") { return "Component `Second` contains negative value"; } + if (v._1.tag === "Hour") { return "Component `Hour` contains negative value"; } + if (v._1.tag === "Day") { return "Component `Day` contains negative value"; } + if (v._1.tag === "Week") { return "Component `Week` contains negative value"; } + if (v._1.tag === "Month") { return "Component `Month` contains negative value"; } + if (v._1.tag === "Year") { return "Component `Year` contains negative value"; } + $runtime.fail(); + } + if (v.tag === "InvalidFractionalUse") { + if (v._1.tag === "Minute") { return "Invalid usage of Fractional value at component `Minute`"; } + if (v._1.tag === "Second") { return "Invalid usage of Fractional value at component `Second`"; } + if (v._1.tag === "Hour") { return "Invalid usage of Fractional value at component `Hour`"; } + if (v._1.tag === "Day") { return "Invalid usage of Fractional value at component `Day`"; } + if (v._1.tag === "Week") { return "Invalid usage of Fractional value at component `Week`"; } + if (v._1.tag === "Month") { return "Invalid usage of Fractional value at component `Month`"; } + if (v._1.tag === "Year") { return "Invalid usage of Fractional value at component `Year`"; } + $runtime.fail(); + } + $runtime.fail(); +}; +const eqIsoDuration = {eq: x => y => Data$dInterval$dDuration.eq(x)(y)}; +const ordIsoDuration = {compare: x => y => Data$dInterval$dDuration.compare(x)(y), Eq0: () => eqIsoDuration}; +const eqError = { + eq: x => y => { + if (x.tag === "IsEmpty") { return y.tag === "IsEmpty"; } + if (x.tag === "InvalidWeekComponentUsage") { return y.tag === "InvalidWeekComponentUsage"; } + if (x.tag === "ContainsNegativeValue") { + if (y.tag === "ContainsNegativeValue") { + if (x._1.tag === "Second") { return y._1.tag === "Second"; } + if (x._1.tag === "Minute") { return y._1.tag === "Minute"; } + if (x._1.tag === "Hour") { return y._1.tag === "Hour"; } + if (x._1.tag === "Day") { return y._1.tag === "Day"; } + if (x._1.tag === "Week") { return y._1.tag === "Week"; } + if (x._1.tag === "Month") { return y._1.tag === "Month"; } + if (x._1.tag === "Year") { return y._1.tag === "Year"; } + return false; + } + return false; + } + if (x.tag === "InvalidFractionalUse") { + if (y.tag === "InvalidFractionalUse") { + if (x._1.tag === "Second") { return y._1.tag === "Second"; } + if (x._1.tag === "Minute") { return y._1.tag === "Minute"; } + if (x._1.tag === "Hour") { return y._1.tag === "Hour"; } + if (x._1.tag === "Day") { return y._1.tag === "Day"; } + if (x._1.tag === "Week") { return y._1.tag === "Week"; } + if (x._1.tag === "Month") { return y._1.tag === "Month"; } + if (x._1.tag === "Year") { return y._1.tag === "Year"; } + return false; + } + return false; + } + return false; + } +}; +const ordError = { + compare: x => y => { + if (x.tag === "IsEmpty") { + if (y.tag === "IsEmpty") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "IsEmpty") { return Data$dOrdering.GT; } + if (x.tag === "InvalidWeekComponentUsage") { + if (y.tag === "InvalidWeekComponentUsage") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "InvalidWeekComponentUsage") { return Data$dOrdering.GT; } + if (x.tag === "ContainsNegativeValue") { + if (y.tag === "ContainsNegativeValue") { return Data$dInterval$dDuration.ordDurationComponent.compare(x._1)(y._1); } + return Data$dOrdering.LT; + } + if (y.tag === "ContainsNegativeValue") { return Data$dOrdering.GT; } + if (x.tag === "InvalidFractionalUse") { + if (y.tag === "InvalidFractionalUse") { return Data$dInterval$dDuration.ordDurationComponent.compare(x._1)(y._1); } + $runtime.fail(); + } + $runtime.fail(); + }, + Eq0: () => eqError +}; +const checkWeekUsage = v => { + if ( + (() => { + const $1 = Data$dMap$dInternal.lookup(Data$dInterval$dDuration.ordDurationComponent)(Data$dInterval$dDuration.Week)(v.asMap); + return (() => { + if ($1.tag === "Nothing") { return false; } + if ($1.tag === "Just") { return true; } + $runtime.fail(); + })() && Data$dMap$dInternal.size(v.asMap) > 1; + })() + ) { + return Data$dList$dTypes.$List("Cons", InvalidWeekComponentUsage, Data$dList$dTypes.Nil); + } + return Data$dList$dTypes.Nil; +}; +const checkNegativeValues = v => foldMap1(v1 => { + if (v1._2 >= 0.0) { return Data$dList$dTypes.Nil; } + return Data$dList$dTypes.$List("Cons", $Error("ContainsNegativeValue", v1._1), Data$dList$dTypes.Nil); +})(v.asList); +const checkFractionalUse = v => { + const v1 = Data$dList.span(x => Data$dNumber.floor(x._2) === x._2)(v.asList).rest; + if (v1.tag === "Cons") { + if (foldMap2(x => Data$dNumber.abs(x._2))(v1._2) > 0.0) { return Data$dList$dTypes.$List("Cons", $Error("InvalidFractionalUse", v1._1._1), Data$dList$dTypes.Nil); } + return Data$dList$dTypes.Nil; + } + return Data$dList$dTypes.Nil; +}; +const checkEmptiness = v => { + if (v.asList.tag === "Nil") { return Data$dList$dTypes.$List("Cons", IsEmpty, Data$dList$dTypes.Nil); } + return Data$dList$dTypes.Nil; +}; +const checkValidIsoDuration = v => fold([checkWeekUsage, checkEmptiness, checkFractionalUse, checkNegativeValues])({ + asList: Data$dList.reverse(Data$dMap$dInternal.toUnfoldable(Data$dList$dTypes.unfoldableList)(v)), + asMap: v +}); +const mkIsoDuration = d => { + const $1 = checkValidIsoDuration(d); + if ($1.tag === "Nil") { return Data$dEither.$Either("Right", d); } + if ($1.tag === "Cons") { return Data$dEither.$Either("Left", Data$dNonEmpty.$NonEmpty($1._1, $1._2)); } + $runtime.fail(); +}; +export { + $Error, + ContainsNegativeValue, + InvalidFractionalUse, + InvalidWeekComponentUsage, + IsEmpty, + checkEmptiness, + checkFractionalUse, + checkNegativeValues, + checkValidIsoDuration, + checkWeekUsage, + eqError, + eqIsoDuration, + fold, + foldMap1, + foldMap2, + mkIsoDuration, + ordError, + ordIsoDuration, + prettyError, + showError, + showIsoDuration, + unIsoDuration +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Interval.Duration/index.js b/.storybook/purescript-indexer/output-es/Data.Interval.Duration/index.js new file mode 100644 index 0000000..80b1a4d --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Interval.Duration/index.js @@ -0,0 +1,130 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dEq from "../Data.Eq/index.js"; +import * as Data$dMap$dInternal from "../Data.Map.Internal/index.js"; +import * as Data$dOrd from "../Data.Ord/index.js"; +import * as Data$dOrdering from "../Data.Ordering/index.js"; +import * as Data$dSemiring from "../Data.Semiring/index.js"; +import * as Data$dShow from "../Data.Show/index.js"; +const $DurationComponent = tag => ({tag}); +const Second = /* #__PURE__ */ $DurationComponent("Second"); +const Minute = /* #__PURE__ */ $DurationComponent("Minute"); +const Hour = /* #__PURE__ */ $DurationComponent("Hour"); +const Day = /* #__PURE__ */ $DurationComponent("Day"); +const Week = /* #__PURE__ */ $DurationComponent("Week"); +const Month = /* #__PURE__ */ $DurationComponent("Month"); +const Year = /* #__PURE__ */ $DurationComponent("Year"); +const Duration = x => x; +const showDurationComponent = { + show: v => { + if (v.tag === "Minute") { return "Minute"; } + if (v.tag === "Second") { return "Second"; } + if (v.tag === "Hour") { return "Hour"; } + if (v.tag === "Day") { return "Day"; } + if (v.tag === "Week") { return "Week"; } + if (v.tag === "Month") { return "Month"; } + if (v.tag === "Year") { return "Year"; } + $runtime.fail(); + } +}; +const show = /* #__PURE__ */ (() => Data$dMap$dInternal.showMap(showDurationComponent)(Data$dShow.showNumber).show)(); +const showDuration = {show: v => "(Duration " + (show(v) + ")")}; +const newtypeDuration = {Coercible0: () => undefined}; +const eqDurationComponent = { + eq: x => y => { + if (x.tag === "Second") { return y.tag === "Second"; } + if (x.tag === "Minute") { return y.tag === "Minute"; } + if (x.tag === "Hour") { return y.tag === "Hour"; } + if (x.tag === "Day") { return y.tag === "Day"; } + if (x.tag === "Week") { return y.tag === "Week"; } + if (x.tag === "Month") { return y.tag === "Month"; } + if (x.tag === "Year") { return y.tag === "Year"; } + return false; + } +}; +const eq = /* #__PURE__ */ (() => Data$dMap$dInternal.eqMap(eqDurationComponent)(Data$dEq.eqNumber).eq)(); +const ordDurationComponent = { + compare: x => y => { + if (x.tag === "Second") { + if (y.tag === "Second") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "Second") { return Data$dOrdering.GT; } + if (x.tag === "Minute") { + if (y.tag === "Minute") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "Minute") { return Data$dOrdering.GT; } + if (x.tag === "Hour") { + if (y.tag === "Hour") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "Hour") { return Data$dOrdering.GT; } + if (x.tag === "Day") { + if (y.tag === "Day") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "Day") { return Data$dOrdering.GT; } + if (x.tag === "Week") { + if (y.tag === "Week") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "Week") { return Data$dOrdering.GT; } + if (x.tag === "Month") { + if (y.tag === "Month") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "Month") { return Data$dOrdering.GT; } + if (x.tag === "Year") { + if (y.tag === "Year") { return Data$dOrdering.EQ; } + $runtime.fail(); + } + $runtime.fail(); + }, + Eq0: () => eqDurationComponent +}; +const compare = /* #__PURE__ */ (() => Data$dMap$dInternal.ordMap(ordDurationComponent)(Data$dOrd.ordNumber).compare)(); +const semigroupDuration = {append: v => v1 => Data$dMap$dInternal.unionWith(ordDurationComponent)(Data$dSemiring.numAdd)(v)(v1)}; +const monoidDuration = {mempty: Data$dMap$dInternal.Leaf, Semigroup0: () => semigroupDuration}; +const eqDuration = {eq: x => y => eq(x)(y)}; +const ordDuration = {compare: x => y => compare(x)(y), Eq0: () => eqDuration}; +const durationFromComponent = k => v => Data$dMap$dInternal.$Map("Two", Data$dMap$dInternal.Leaf, k, v, Data$dMap$dInternal.Leaf); +const hour = /* #__PURE__ */ durationFromComponent(Hour); +const millisecond = x => Data$dMap$dInternal.$Map("Two", Data$dMap$dInternal.Leaf, Second, x / 1000.0, Data$dMap$dInternal.Leaf); +const minute = /* #__PURE__ */ durationFromComponent(Minute); +const month = /* #__PURE__ */ durationFromComponent(Month); +const second = /* #__PURE__ */ durationFromComponent(Second); +const week = /* #__PURE__ */ durationFromComponent(Week); +const year = /* #__PURE__ */ durationFromComponent(Year); +const day = /* #__PURE__ */ durationFromComponent(Day); +export { + $DurationComponent, + Day, + Duration, + Hour, + Minute, + Month, + Second, + Week, + Year, + compare, + day, + durationFromComponent, + eq, + eqDuration, + eqDurationComponent, + hour, + millisecond, + minute, + monoidDuration, + month, + newtypeDuration, + ordDuration, + ordDurationComponent, + second, + semigroupDuration, + show, + showDuration, + showDurationComponent, + week, + year +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Interval/index.js b/.storybook/purescript-indexer/output-es/Data.Interval/index.js new file mode 100644 index 0000000..b8ec141 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Interval/index.js @@ -0,0 +1,313 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dBifoldable from "../Data.Bifoldable/index.js"; +import * as Data$dBitraversable from "../Data.Bitraversable/index.js"; +import * as Data$dFoldable from "../Data.Foldable/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dOrd from "../Data.Ord/index.js"; +import * as Data$dOrdering from "../Data.Ordering/index.js"; +import * as Data$dShow from "../Data.Show/index.js"; +import * as Data$dTraversable from "../Data.Traversable/index.js"; +const $Interval = (tag, _1, _2) => ({tag, _1, _2}); +const $RecurringInterval = (_1, _2) => ({tag: "RecurringInterval", _1, _2}); +const show = v => { + if (v.tag === "Just") { return "(Just " + (Data$dShow.showIntImpl(v._1) + ")"); } + if (v.tag === "Nothing") { return "Nothing"; } + $runtime.fail(); +}; +const compare = /* #__PURE__ */ (() => Data$dMaybe.ordMaybe(Data$dOrd.ordInt).compare)(); +const StartEnd = value0 => value1 => $Interval("StartEnd", value0, value1); +const DurationEnd = value0 => value1 => $Interval("DurationEnd", value0, value1); +const StartDuration = value0 => value1 => $Interval("StartDuration", value0, value1); +const DurationOnly = value0 => $Interval("DurationOnly", value0); +const RecurringInterval = value0 => value1 => $RecurringInterval(value0, value1); +const showInterval = dictShow => dictShow1 => ( + { + show: v => { + if (v.tag === "StartEnd") { return "(StartEnd " + (dictShow1.show(v._1) + (" " + (dictShow1.show(v._2) + ")"))); } + if (v.tag === "DurationEnd") { return "(DurationEnd " + (dictShow.show(v._1) + (" " + (dictShow1.show(v._2) + ")"))); } + if (v.tag === "StartDuration") { return "(StartDuration " + (dictShow1.show(v._1) + (" " + (dictShow.show(v._2) + ")"))); } + if (v.tag === "DurationOnly") { return "(DurationOnly " + (dictShow.show(v._1) + ")"); } + $runtime.fail(); + } + } +); +const showRecurringInterval = dictShow => dictShow1 => { + const show1 = showInterval(dictShow)(dictShow1).show; + return {show: v => "(RecurringInterval " + (show(v._1) + (" " + (show1(v._2) + ")")))}; +}; +const over = dictFunctor => f => v => dictFunctor.map(RecurringInterval(v._1))(f(v._2)); +const foldableInterval = { + foldl: v => v1 => v2 => { + if (v2.tag === "StartEnd") { return v(v(v1)(v2._1))(v2._2); } + if (v2.tag === "DurationEnd") { return v(v1)(v2._2); } + if (v2.tag === "StartDuration") { return v(v1)(v2._1); } + return v1; + }, + foldr: x => Data$dFoldable.foldrDefault(foldableInterval)(x), + foldMap: dictMonoid => { + const append = dictMonoid.Semigroup0().append; + return f => foldableInterval.foldl(acc => x => append(acc)(f(x)))(dictMonoid.mempty); + } +}; +const foldableRecurringInterval = { + foldl: f => i => x => { + if (x._2.tag === "StartEnd") { return f(f(i)(x._2._1))(x._2._2); } + if (x._2.tag === "DurationEnd") { return f(i)(x._2._2); } + if (x._2.tag === "StartDuration") { return f(i)(x._2._1); } + return i; + }, + foldr: f => i => { + const $2 = Data$dFoldable.foldrDefault(foldableInterval)(f)(i); + return x => $2(x._2); + }, + foldMap: dictMonoid => { + const append = dictMonoid.Semigroup0().append; + return f => foldableRecurringInterval.foldl(acc => x => append(acc)(f(x)))(dictMonoid.mempty); + } +}; +const eqInterval = dictEq => dictEq1 => ( + { + eq: x => y => { + if (x.tag === "StartEnd") { + if (y.tag === "StartEnd") { return dictEq1.eq(x._1)(y._1) && dictEq1.eq(x._2)(y._2); } + return false; + } + if (x.tag === "DurationEnd") { + if (y.tag === "DurationEnd") { return dictEq.eq(x._1)(y._1) && dictEq1.eq(x._2)(y._2); } + return false; + } + if (x.tag === "StartDuration") { + if (y.tag === "StartDuration") { return dictEq1.eq(x._1)(y._1) && dictEq.eq(x._2)(y._2); } + return false; + } + if (x.tag === "DurationOnly") { + if (y.tag === "DurationOnly") { return dictEq.eq(x._1)(y._1); } + return false; + } + return false; + } + } +); +const eqRecurringInterval = dictEq => dictEq1 => { + const eq1 = eqInterval(dictEq)(dictEq1).eq; + return { + eq: x => y => (() => { + if (x._1.tag === "Nothing") { return y._1.tag === "Nothing"; } + if (x._1.tag === "Just") { + if (y._1.tag === "Just") { return x._1._1 === y._1._1; } + return false; + } + return false; + })() && eq1(x._2)(y._2) + }; +}; +const ordInterval = dictOrd => { + const eqInterval1 = eqInterval(dictOrd.Eq0()); + return dictOrd1 => { + const eqInterval2 = eqInterval1(dictOrd1.Eq0()); + return { + compare: x => y => { + if (x.tag === "StartEnd") { + if (y.tag === "StartEnd") { + const v = dictOrd1.compare(x._1)(y._1); + if (v.tag === "LT") { return Data$dOrdering.LT; } + if (v.tag === "GT") { return Data$dOrdering.GT; } + return dictOrd1.compare(x._2)(y._2); + } + return Data$dOrdering.LT; + } + if (y.tag === "StartEnd") { return Data$dOrdering.GT; } + if (x.tag === "DurationEnd") { + if (y.tag === "DurationEnd") { + const v = dictOrd.compare(x._1)(y._1); + if (v.tag === "LT") { return Data$dOrdering.LT; } + if (v.tag === "GT") { return Data$dOrdering.GT; } + return dictOrd1.compare(x._2)(y._2); + } + return Data$dOrdering.LT; + } + if (y.tag === "DurationEnd") { return Data$dOrdering.GT; } + if (x.tag === "StartDuration") { + if (y.tag === "StartDuration") { + const v = dictOrd1.compare(x._1)(y._1); + if (v.tag === "LT") { return Data$dOrdering.LT; } + if (v.tag === "GT") { return Data$dOrdering.GT; } + return dictOrd.compare(x._2)(y._2); + } + return Data$dOrdering.LT; + } + if (y.tag === "StartDuration") { return Data$dOrdering.GT; } + if (x.tag === "DurationOnly") { + if (y.tag === "DurationOnly") { return dictOrd.compare(x._1)(y._1); } + $runtime.fail(); + } + $runtime.fail(); + }, + Eq0: () => eqInterval2 + }; + }; +}; +const ordRecurringInterval = dictOrd => { + const ordInterval1 = ordInterval(dictOrd); + const eqRecurringInterval1 = eqRecurringInterval(dictOrd.Eq0()); + return dictOrd1 => { + const compare1 = ordInterval1(dictOrd1).compare; + const eqRecurringInterval2 = eqRecurringInterval1(dictOrd1.Eq0()); + return { + compare: x => y => { + const v = compare(x._1)(y._1); + if (v.tag === "LT") { return Data$dOrdering.LT; } + if (v.tag === "GT") { return Data$dOrdering.GT; } + return compare1(x._2)(y._2); + }, + Eq0: () => eqRecurringInterval2 + }; + }; +}; +const bifunctorInterval = { + bimap: v => v1 => v2 => { + if (v2.tag === "StartEnd") { return $Interval("StartEnd", v1(v2._1), v1(v2._2)); } + if (v2.tag === "DurationEnd") { return $Interval("DurationEnd", v(v2._1), v1(v2._2)); } + if (v2.tag === "StartDuration") { return $Interval("StartDuration", v1(v2._1), v(v2._2)); } + if (v2.tag === "DurationOnly") { return $Interval("DurationOnly", v(v2._1)); } + $runtime.fail(); + } +}; +const bifunctorRecurringInterval = {bimap: f => g => v => $RecurringInterval(v._1, bifunctorInterval.bimap(f)(g)(v._2))}; +const functorInterval = /* #__PURE__ */ (() => ({map: bifunctorInterval.bimap(x => x)}))(); +const extendInterval = { + extend: v => v1 => { + if (v1.tag === "StartEnd") { return $Interval("StartEnd", v(v1), v(v1)); } + if (v1.tag === "DurationEnd") { return $Interval("DurationEnd", v1._1, v(v1)); } + if (v1.tag === "StartDuration") { return $Interval("StartDuration", v(v1), v1._2); } + if (v1.tag === "DurationOnly") { return $Interval("DurationOnly", v1._1); } + $runtime.fail(); + }, + Functor0: () => functorInterval +}; +const functorRecurringInterval = {map: f => v => $RecurringInterval(v._1, bifunctorInterval.bimap(x => x)(f)(v._2))}; +const extendRecurringInterval = { + extend: f => v => $RecurringInterval( + v._1, + extendInterval.extend((() => { + const $2 = f(v); + return v$1 => $2; + })())(v._2) + ), + Functor0: () => functorRecurringInterval +}; +const traversableInterval = { + traverse: dictApplicative => { + const Apply0 = dictApplicative.Apply0(); + const Functor0 = Apply0.Functor0(); + return v => v1 => { + if (v1.tag === "StartEnd") { return Apply0.apply(Functor0.map(StartEnd)(v(v1._1)))(v(v1._2)); } + if (v1.tag === "DurationEnd") { return Functor0.map(DurationEnd(v1._1))(v(v1._2)); } + if (v1.tag === "StartDuration") { return Functor0.map(v2 => $Interval("StartDuration", v2, v1._2))(v(v1._1)); } + if (v1.tag === "DurationOnly") { return dictApplicative.pure($Interval("DurationOnly", v1._1)); } + $runtime.fail(); + }; + }, + sequence: dictApplicative => traversableInterval.traverse(dictApplicative)(Data$dTraversable.identity), + Functor0: () => functorInterval, + Foldable1: () => foldableInterval +}; +const traversableRecurringInterval = { + traverse: dictApplicative => { + const over1 = over(dictApplicative.Apply0().Functor0()); + const traverse1 = traversableInterval.traverse(dictApplicative); + return f => i => over1(traverse1(f))(i); + }, + sequence: dictApplicative => traversableRecurringInterval.traverse(dictApplicative)(Data$dTraversable.identity), + Functor0: () => functorRecurringInterval, + Foldable1: () => foldableRecurringInterval +}; +const bifoldableInterval = { + bifoldl: v => v1 => v2 => v3 => { + if (v3.tag === "StartEnd") { return v1(v1(v2)(v3._1))(v3._2); } + if (v3.tag === "DurationEnd") { return v1(v(v2)(v3._1))(v3._2); } + if (v3.tag === "StartDuration") { return v1(v(v2)(v3._2))(v3._1); } + if (v3.tag === "DurationOnly") { return v(v2)(v3._1); } + $runtime.fail(); + }, + bifoldr: x => Data$dBifoldable.bifoldrDefault(bifoldableInterval)(x), + bifoldMap: dictMonoid => { + const append = dictMonoid.Semigroup0().append; + return f => g => bifoldableInterval.bifoldl(m => a => append(m)(f(a)))(m => b => append(m)(g(b)))(dictMonoid.mempty); + } +}; +const bifoldableRecurringInterval = { + bifoldl: f => g => i => x => { + if (x._2.tag === "StartEnd") { return g(g(i)(x._2._1))(x._2._2); } + if (x._2.tag === "DurationEnd") { return g(f(i)(x._2._1))(x._2._2); } + if (x._2.tag === "StartDuration") { return g(f(i)(x._2._2))(x._2._1); } + if (x._2.tag === "DurationOnly") { return f(i)(x._2._1); } + $runtime.fail(); + }, + bifoldr: f => g => i => { + const $3 = Data$dBifoldable.bifoldrDefault(bifoldableInterval)(f)(g)(i); + return x => $3(x._2); + }, + bifoldMap: dictMonoid => { + const append = dictMonoid.Semigroup0().append; + return f => g => bifoldableRecurringInterval.bifoldl(m => a => append(m)(f(a)))(m => b => append(m)(g(b)))(dictMonoid.mempty); + } +}; +const bitraversableInterval = { + bitraverse: dictApplicative => { + const Apply0 = dictApplicative.Apply0(); + const map1 = Apply0.Functor0().map; + return v => v1 => v2 => { + if (v2.tag === "StartEnd") { return Apply0.apply(map1(StartEnd)(v1(v2._1)))(v1(v2._2)); } + if (v2.tag === "DurationEnd") { return Apply0.apply(map1(DurationEnd)(v(v2._1)))(v1(v2._2)); } + if (v2.tag === "StartDuration") { return Apply0.apply(map1(StartDuration)(v1(v2._1)))(v(v2._2)); } + if (v2.tag === "DurationOnly") { return map1(DurationOnly)(v(v2._1)); } + $runtime.fail(); + }; + }, + bisequence: dictApplicative => bitraversableInterval.bitraverse(dictApplicative)(Data$dBitraversable.identity)(Data$dBitraversable.identity), + Bifunctor0: () => bifunctorInterval, + Bifoldable1: () => bifoldableInterval +}; +const bitraversableRecurringInterval = { + bitraverse: dictApplicative => { + const over1 = over(dictApplicative.Apply0().Functor0()); + const bitraverse1 = bitraversableInterval.bitraverse(dictApplicative); + return l => r => i => over1(bitraverse1(l)(r))(i); + }, + bisequence: dictApplicative => bitraversableRecurringInterval.bitraverse(dictApplicative)(Data$dBitraversable.identity)(Data$dBitraversable.identity), + Bifunctor0: () => bifunctorRecurringInterval, + Bifoldable1: () => bifoldableRecurringInterval +}; +export { + $Interval, + $RecurringInterval, + DurationEnd, + DurationOnly, + RecurringInterval, + StartDuration, + StartEnd, + bifoldableInterval, + bifoldableRecurringInterval, + bifunctorInterval, + bifunctorRecurringInterval, + bitraversableInterval, + bitraversableRecurringInterval, + compare, + eqInterval, + eqRecurringInterval, + extendInterval, + extendRecurringInterval, + foldableInterval, + foldableRecurringInterval, + functorInterval, + functorRecurringInterval, + ordInterval, + ordRecurringInterval, + over, + show, + showInterval, + showRecurringInterval, + traversableInterval, + traversableRecurringInterval +}; diff --git a/.storybook/purescript-indexer/output-es/Data.JSDate/foreign.js b/.storybook/purescript-indexer/output-es/Data.JSDate/foreign.js new file mode 100644 index 0000000..8db78c4 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.JSDate/foreign.js @@ -0,0 +1,83 @@ +// global exports +var createDate = function(y, m, d, h, mi, s, ms) { + var date = new Date(Date.UTC(y, m, d, h, mi, s, ms)); + if (y >= 0 && y < 100) { + date.setUTCFullYear(y); + } + return date; +}; + +var createLocalDate = function(y, m, d, h, mi, s, ms) { + var date = new Date(y, m, d, h, mi, s, ms); + if (y >= 0 && y < 100) { + date.setFullYear(y); + } + return date; +}; + +export function now() { + return new Date(); +} + +export function isValid(date) { + return !isNaN(date.getTime()); +} + +export function toInstantImpl(just) { + return function(nothing) { + return function(date) { + var t = date.getTime(); + return isNaN(t) ? nothing : just(t); + }; + }; +} + +export function fromInstant(instant) { + return new Date(instant); +} + +export function jsdate(parts) { + return createDate( + parts.year, + parts.month, + parts.day, + parts.hour, + parts.minute, + parts.second, + parts.millisecond + ); +} + +export function jsdateLocal(parts) { + return function() { + return createLocalDate( + parts.year, + parts.month, + parts.day, + parts.hour, + parts.minute, + parts.second, + parts.millisecond + ); + }; +} + +export function dateMethod(method, date) { + return date[method](); +} + +export function dateMethodEff(method, date) { + return function() { + return date[method](); + }; +} + +export function parse(dateString) { + return function() { + return new Date(dateString); + }; +} + +export function fromTime(time) { + return new Date(time); +} diff --git a/.storybook/purescript-indexer/output-es/Data.JSDate/index.js b/.storybook/purescript-indexer/output-es/Data.JSDate/index.js new file mode 100644 index 0000000..b034911 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.JSDate/index.js @@ -0,0 +1,123 @@ +// | A module providing a type and operations for the native JavaScript `Date` +// | object. +// | +// | The `JSDate` type and associated functions are provided for interop +// | purposes with JavaScript, but for working with dates in PureScript it is +// | recommended that `DateTime` representation is used instead - `DateTime` +// | offers greater type safety, a more PureScript-friendly interface, and has +// | a `Generic` instance. +import * as $runtime from "../runtime.js"; +import * as Data$dDateTime$dInstant from "../Data.DateTime.Instant/index.js"; +import * as Data$dIdentity from "../Data.Identity/index.js"; +import * as Data$dInt from "../Data.Int/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dOrd from "../Data.Ord/index.js"; +import * as Data$dShow from "../Data.Show/index.js"; +import * as Foreign from "../Foreign/index.js"; +import {dateMethod, dateMethodEff, fromInstant, fromTime, isValid, jsdate, jsdateLocal, now, parse, toInstantImpl} from "./foreign.js"; +const toUTCString = dt => dateMethod("toUTCString", dt); +const toTimeString = dt => dateMethod("toTimeString", dt); +const toString = dt => dateMethod("toString", dt); +const toInstant = /* #__PURE__ */ (() => { + const $0 = toInstantImpl(Data$dMaybe.Just)(Data$dMaybe.Nothing); + return a => { + const $2 = $0(a); + if ($2.tag === "Just") { + if ($2._1 >= -8639977881600000.0 && $2._1 <= 8639977881599999.0) { return Data$dMaybe.$Maybe("Just", $2._1); } + return Data$dMaybe.Nothing; + } + if ($2.tag === "Nothing") { return Data$dMaybe.Nothing; } + $runtime.fail(); + }; +})(); +const toISOString = dt => dateMethodEff("toISOString", dt); +const toDateTime = x => { + const $1 = toInstant(x); + if ($1.tag === "Just") { return Data$dMaybe.$Maybe("Just", Data$dDateTime$dInstant.toDateTime($1._1)); } + return Data$dMaybe.Nothing; +}; +const toDateString = dt => dateMethod("toDateString", dt); +const toDate = x => { + const $1 = toInstant(x); + if ($1.tag === "Just") { return Data$dMaybe.$Maybe("Just", Data$dDateTime$dInstant.toDateTime($1._1)._1); } + return Data$dMaybe.Nothing; +}; +const readDate = /* #__PURE__ */ Foreign.unsafeReadTagged(Data$dIdentity.monadIdentity)("Date"); +const getUTCSeconds = dt => dateMethod("getUTCSeconds", dt); +const getUTCMonth = dt => dateMethod("getUTCMonth", dt); +const getUTCMinutes = dt => dateMethod("getUTCMinutes", dt); +const getUTCMilliseconds = dt => dateMethod("getUTCMilliseconds", dt); +const getUTCHours = dt => dateMethod("getUTCHours", dt); +const getUTCFullYear = dt => dateMethod("getUTCFullYear", dt); +const getUTCDay = dt => dateMethod("getUTCDay", dt); +const getUTCDate = dt => dateMethod("getUTCDate", dt); +const getTimezoneOffset = dt => dateMethodEff("getTimezoneOffset", dt); +const getTime = dt => dateMethod("getTime", dt); +const showJSDate = {show: a => "(fromTime " + (Data$dShow.showNumberImpl(dateMethod("getTime", a)) + ")")}; +const getSeconds = dt => dateMethodEff("getSeconds", dt); +const getMonth = dt => dateMethodEff("getMonth", dt); +const getMinutes = dt => dateMethodEff("getMinutes", dt); +const getMilliseconds = dt => dateMethodEff("getMilliseconds", dt); +const getHours = dt => dateMethodEff("getHours", dt); +const getFullYear = dt => dateMethodEff("getFullYear", dt); +const getDay = dt => dateMethodEff("getDay", dt); +const getDate = dt => dateMethodEff("getDate", dt); +const fromDateTime = v => jsdate({ + year: Data$dInt.toNumber(v._1._1), + month: Data$dInt.toNumber((() => { + if (v._1._2.tag === "January") { return 0; } + if (v._1._2.tag === "February") { return 1; } + if (v._1._2.tag === "March") { return 2; } + if (v._1._2.tag === "April") { return 3; } + if (v._1._2.tag === "May") { return 4; } + if (v._1._2.tag === "June") { return 5; } + if (v._1._2.tag === "July") { return 6; } + if (v._1._2.tag === "August") { return 7; } + if (v._1._2.tag === "September") { return 8; } + if (v._1._2.tag === "October") { return 9; } + if (v._1._2.tag === "November") { return 10; } + if (v._1._2.tag === "December") { return 11; } + $runtime.fail(); + })()), + day: Data$dInt.toNumber(v._1._3), + hour: Data$dInt.toNumber(v._2._1), + minute: Data$dInt.toNumber(v._2._2), + second: Data$dInt.toNumber(v._2._3), + millisecond: Data$dInt.toNumber(v._2._4) +}); +const eqJSDate = {eq: a => b => dateMethod("getTime", a) === dateMethod("getTime", b)}; +const ordJSDate = {compare: a => b => Data$dOrd.ordNumber.compare(dateMethod("getTime", a))(dateMethod("getTime", b)), Eq0: () => eqJSDate}; +export { + eqJSDate, + fromDateTime, + getDate, + getDay, + getFullYear, + getHours, + getMilliseconds, + getMinutes, + getMonth, + getSeconds, + getTime, + getTimezoneOffset, + getUTCDate, + getUTCDay, + getUTCFullYear, + getUTCHours, + getUTCMilliseconds, + getUTCMinutes, + getUTCMonth, + getUTCSeconds, + ordJSDate, + readDate, + showJSDate, + toDate, + toDateString, + toDateTime, + toISOString, + toInstant, + toString, + toTimeString, + toUTCString +}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Data.Lazy/foreign.js b/.storybook/purescript-indexer/output-es/Data.Lazy/foreign.js new file mode 100644 index 0000000..cabd8ae --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Lazy/foreign.js @@ -0,0 +1,14 @@ +export const defer = function (thunk) { + var v = null; + return function() { + if (thunk === undefined) return v; + + v = thunk(); + thunk = undefined; // eslint-disable-line no-param-reassign + return v; + }; +}; + +export const force = function (l) { + return l(); +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Lazy/index.js b/.storybook/purescript-indexer/output-es/Data.Lazy/index.js new file mode 100644 index 0000000..b871f97 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Lazy/index.js @@ -0,0 +1,153 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +import {defer, force} from "./foreign.js"; +const showLazy = dictShow => ({show: x => "(defer \\_ -> " + (dictShow.show(force(x)) + ")")}); +const semiringLazy = dictSemiring => ( + { + add: a => b => defer(v => dictSemiring.add(force(a))(force(b))), + zero: defer(v => dictSemiring.zero), + mul: a => b => defer(v => dictSemiring.mul(force(a))(force(b))), + one: defer(v => dictSemiring.one) + } +); +const semigroupLazy = dictSemigroup => ({append: a => b => defer(v => dictSemigroup.append(force(a))(force(b)))}); +const ringLazy = dictRing => { + const semiringLazy1 = semiringLazy(dictRing.Semiring0()); + return {sub: a => b => defer(v => dictRing.sub(force(a))(force(b))), Semiring0: () => semiringLazy1}; +}; +const monoidLazy = dictMonoid => { + const semigroupLazy1 = semigroupLazy(dictMonoid.Semigroup0()); + return {mempty: defer(v => dictMonoid.mempty), Semigroup0: () => semigroupLazy1}; +}; +const lazyLazy = {defer: f => defer(v => force(f(Data$dUnit.unit)))}; +const functorLazy = {map: f => l => defer(v => f(force(l)))}; +const functorWithIndexLazy = {mapWithIndex: f => functorLazy.map(f(Data$dUnit.unit)), Functor0: () => functorLazy}; +const invariantLazy = {imap: f => v => functorLazy.map(f)}; +const foldableLazy = {foldr: f => z => l => f(force(l))(z), foldl: f => z => l => f(z)(force(l)), foldMap: dictMonoid => f => l => f(force(l))}; +const foldableWithIndexLazy = { + foldrWithIndex: f => foldableLazy.foldr(f(Data$dUnit.unit)), + foldlWithIndex: f => foldableLazy.foldl(f(Data$dUnit.unit)), + foldMapWithIndex: dictMonoid => f => foldableLazy.foldMap(dictMonoid)(f(Data$dUnit.unit)), + Foldable0: () => foldableLazy +}; +const traversableLazy = { + traverse: dictApplicative => { + const map1 = dictApplicative.Apply0().Functor0().map; + return f => l => map1(x => defer(v => x))(f(force(l))); + }, + sequence: dictApplicative => { + const map1 = dictApplicative.Apply0().Functor0().map; + return l => map1(x => defer(v => x))(force(l)); + }, + Functor0: () => functorLazy, + Foldable1: () => foldableLazy +}; +const traversableWithIndexLazy = { + traverseWithIndex: dictApplicative => { + const traverse1 = traversableLazy.traverse(dictApplicative); + return f => traverse1(f(Data$dUnit.unit)); + }, + FunctorWithIndex0: () => functorWithIndexLazy, + FoldableWithIndex1: () => foldableWithIndexLazy, + Traversable2: () => traversableLazy +}; +const foldable1Lazy = {foldMap1: dictSemigroup => f => l => f(force(l)), foldr1: v => l => force(l), foldl1: v => l => force(l), Foldable0: () => foldableLazy}; +const traversable1Lazy = { + traverse1: dictApply => { + const map1 = dictApply.Functor0().map; + return f => l => map1(x => defer(v => x))(f(force(l))); + }, + sequence1: dictApply => { + const map1 = dictApply.Functor0().map; + return l => map1(x => defer(v => x))(force(l)); + }, + Foldable10: () => foldable1Lazy, + Traversable1: () => traversableLazy +}; +const extendLazy = {extend: f => x => defer(v => f(x)), Functor0: () => functorLazy}; +const eqLazy = dictEq => ({eq: x => y => dictEq.eq(force(x))(force(y))}); +const ordLazy = dictOrd => { + const $1 = dictOrd.Eq0(); + const eqLazy1 = {eq: x => y => $1.eq(force(x))(force(y))}; + return {compare: x => y => dictOrd.compare(force(x))(force(y)), Eq0: () => eqLazy1}; +}; +const eq1Lazy = {eq1: dictEq => x => y => dictEq.eq(force(x))(force(y))}; +const ord1Lazy = {compare1: dictOrd => ordLazy(dictOrd).compare, Eq10: () => eq1Lazy}; +const comonadLazy = {extract: force, Extend0: () => extendLazy}; +const commutativeRingLazy = dictCommutativeRing => { + const ringLazy1 = ringLazy(dictCommutativeRing.Ring0()); + return {Ring0: () => ringLazy1}; +}; +const euclideanRingLazy = dictEuclideanRing => { + const ringLazy1 = ringLazy(dictEuclideanRing.CommutativeRing0().Ring0()); + return { + degree: x => dictEuclideanRing.degree(force(x)), + div: a => b => defer(v => dictEuclideanRing.div(force(a))(force(b))), + mod: a => b => defer(v => dictEuclideanRing.mod(force(a))(force(b))), + CommutativeRing0: () => ({Ring0: () => ringLazy1}) + }; +}; +const boundedLazy = dictBounded => { + const ordLazy1 = ordLazy(dictBounded.Ord0()); + return {top: defer(v => dictBounded.top), bottom: defer(v => dictBounded.bottom), Ord0: () => ordLazy1}; +}; +const applyLazy = {apply: f => x => defer(v => force(f)(force(x))), Functor0: () => functorLazy}; +const bindLazy = {bind: l => f => defer(v => force(f(force(l)))), Apply0: () => applyLazy}; +const heytingAlgebraLazy = dictHeytingAlgebra => ( + { + ff: defer(v => dictHeytingAlgebra.ff), + tt: defer(v => dictHeytingAlgebra.tt), + implies: a => b => { + const $3 = defer(v => dictHeytingAlgebra.implies(force(a))); + return defer(v => force($3)(force(b))); + }, + conj: a => b => { + const $3 = defer(v => dictHeytingAlgebra.conj(force(a))); + return defer(v => force($3)(force(b))); + }, + disj: a => b => { + const $3 = defer(v => dictHeytingAlgebra.disj(force(a))); + return defer(v => force($3)(force(b))); + }, + not: a => defer(v => dictHeytingAlgebra.not(force(a))) + } +); +const booleanAlgebraLazy = dictBooleanAlgebra => { + const heytingAlgebraLazy1 = heytingAlgebraLazy(dictBooleanAlgebra.HeytingAlgebra0()); + return {HeytingAlgebra0: () => heytingAlgebraLazy1}; +}; +const applicativeLazy = {pure: a => defer(v => a), Apply0: () => applyLazy}; +const monadLazy = {Applicative0: () => applicativeLazy, Bind1: () => bindLazy}; +export { + applicativeLazy, + applyLazy, + bindLazy, + booleanAlgebraLazy, + boundedLazy, + commutativeRingLazy, + comonadLazy, + eq1Lazy, + eqLazy, + euclideanRingLazy, + extendLazy, + foldable1Lazy, + foldableLazy, + foldableWithIndexLazy, + functorLazy, + functorWithIndexLazy, + heytingAlgebraLazy, + invariantLazy, + lazyLazy, + monadLazy, + monoidLazy, + ord1Lazy, + ordLazy, + ringLazy, + semigroupLazy, + semiringLazy, + showLazy, + traversable1Lazy, + traversableLazy, + traversableWithIndexLazy +}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Data.List.Internal/index.js b/.storybook/purescript-indexer/output-es/Data.List.Internal/index.js new file mode 100644 index 0000000..3ac3dba --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.List.Internal/index.js @@ -0,0 +1,162 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dList$dTypes from "../Data.List.Types/index.js"; +const $KickUp = (_1, _2, _3) => ({tag: "KickUp", _1, _2, _3}); +const $Set = (tag, _1, _2, _3, _4, _5) => ({tag, _1, _2, _3, _4, _5}); +const $TreeContext = (tag, _1, _2, _3, _4) => ({tag, _1, _2, _3, _4}); +const Leaf = /* #__PURE__ */ $Set("Leaf"); +const Two = value0 => value1 => value2 => $Set("Two", value0, value1, value2); +const Three = value0 => value1 => value2 => value3 => value4 => $Set("Three", value0, value1, value2, value3, value4); +const TwoLeft = value0 => value1 => $TreeContext("TwoLeft", value0, value1); +const TwoRight = value0 => value1 => $TreeContext("TwoRight", value0, value1); +const ThreeLeft = value0 => value1 => value2 => value3 => $TreeContext("ThreeLeft", value0, value1, value2, value3); +const ThreeMiddle = value0 => value1 => value2 => value3 => $TreeContext("ThreeMiddle", value0, value1, value2, value3); +const ThreeRight = value0 => value1 => value2 => value3 => $TreeContext("ThreeRight", value0, value1, value2, value3); +const KickUp = value0 => value1 => value2 => $KickUp(value0, value1, value2); +const fromZipper = fromZipper$a0$copy => fromZipper$a1$copy => { + let fromZipper$a0 = fromZipper$a0$copy, fromZipper$a1 = fromZipper$a1$copy, fromZipper$c = true, fromZipper$r; + while (fromZipper$c) { + const v = fromZipper$a0, v1 = fromZipper$a1; + if (v.tag === "Nil") { + fromZipper$c = false; + fromZipper$r = v1; + continue; + } + if (v.tag === "Cons") { + if (v._1.tag === "TwoLeft") { + fromZipper$a0 = v._2; + fromZipper$a1 = $Set("Two", v1, v._1._1, v._1._2); + continue; + } + if (v._1.tag === "TwoRight") { + fromZipper$a0 = v._2; + fromZipper$a1 = $Set("Two", v._1._1, v._1._2, v1); + continue; + } + if (v._1.tag === "ThreeLeft") { + fromZipper$a0 = v._2; + fromZipper$a1 = $Set("Three", v1, v._1._1, v._1._2, v._1._3, v._1._4); + continue; + } + if (v._1.tag === "ThreeMiddle") { + fromZipper$a0 = v._2; + fromZipper$a1 = $Set("Three", v._1._1, v._1._2, v1, v._1._3, v._1._4); + continue; + } + if (v._1.tag === "ThreeRight") { + fromZipper$a0 = v._2; + fromZipper$a1 = $Set("Three", v._1._1, v._1._2, v._1._3, v._1._4, v1); + continue; + } + $runtime.fail(); + } + $runtime.fail(); + }; + return fromZipper$r; +}; +const insertAndLookupBy = comp => k => orig => { + const up = up$a0$copy => up$a1$copy => { + let up$a0 = up$a0$copy, up$a1 = up$a1$copy, up$c = true, up$r; + while (up$c) { + const v = up$a0, v1 = up$a1; + if (v.tag === "Nil") { + up$c = false; + up$r = $Set("Two", v1._1, v1._2, v1._3); + continue; + } + if (v.tag === "Cons") { + if (v._1.tag === "TwoLeft") { + up$c = false; + up$r = fromZipper(v._2)($Set("Three", v1._1, v1._2, v1._3, v._1._1, v._1._2)); + continue; + } + if (v._1.tag === "TwoRight") { + up$c = false; + up$r = fromZipper(v._2)($Set("Three", v._1._1, v._1._2, v1._1, v1._2, v1._3)); + continue; + } + if (v._1.tag === "ThreeLeft") { + up$a0 = v._2; + up$a1 = $KickUp($Set("Two", v1._1, v1._2, v1._3), v._1._1, $Set("Two", v._1._2, v._1._3, v._1._4)); + continue; + } + if (v._1.tag === "ThreeMiddle") { + up$a0 = v._2; + up$a1 = $KickUp($Set("Two", v._1._1, v._1._2, v1._1), v1._2, $Set("Two", v1._3, v._1._3, v._1._4)); + continue; + } + if (v._1.tag === "ThreeRight") { + up$a0 = v._2; + up$a1 = $KickUp($Set("Two", v._1._1, v._1._2, v._1._3), v._1._4, $Set("Two", v1._1, v1._2, v1._3)); + continue; + } + $runtime.fail(); + } + $runtime.fail(); + }; + return up$r; + }; + const down = down$a0$copy => down$a1$copy => { + let down$a0 = down$a0$copy, down$a1 = down$a1$copy, down$c = true, down$r; + while (down$c) { + const v = down$a0, v1 = down$a1; + if (v1.tag === "Leaf") { + down$c = false; + down$r = {found: false, result: up(v)($KickUp(Leaf, k, Leaf))}; + continue; + } + if (v1.tag === "Two") { + const v2 = comp(k)(v1._2); + if (v2.tag === "EQ") { + down$c = false; + down$r = {found: true, result: orig}; + continue; + } + if (v2.tag === "LT") { + down$a0 = Data$dList$dTypes.$List("Cons", $TreeContext("TwoLeft", v1._2, v1._3), v); + down$a1 = v1._1; + continue; + } + down$a0 = Data$dList$dTypes.$List("Cons", $TreeContext("TwoRight", v1._1, v1._2), v); + down$a1 = v1._3; + continue; + } + if (v1.tag === "Three") { + const v2 = comp(k)(v1._2); + if (v2.tag === "EQ") { + down$c = false; + down$r = {found: true, result: orig}; + continue; + } + const v3 = comp(k)(v1._4); + if (v3.tag === "EQ") { + down$c = false; + down$r = {found: true, result: orig}; + continue; + } + if (v2.tag === "LT") { + down$a0 = Data$dList$dTypes.$List("Cons", $TreeContext("ThreeLeft", v1._2, v1._3, v1._4, v1._5), v); + down$a1 = v1._1; + continue; + } + if (v2.tag === "GT") { + if (v3.tag === "LT") { + down$a0 = Data$dList$dTypes.$List("Cons", $TreeContext("ThreeMiddle", v1._1, v1._2, v1._4, v1._5), v); + down$a1 = v1._3; + continue; + } + down$a0 = Data$dList$dTypes.$List("Cons", $TreeContext("ThreeRight", v1._1, v1._2, v1._3, v1._4), v); + down$a1 = v1._5; + continue; + } + down$a0 = Data$dList$dTypes.$List("Cons", $TreeContext("ThreeRight", v1._1, v1._2, v1._3, v1._4), v); + down$a1 = v1._5; + continue; + } + $runtime.fail(); + }; + return down$r; + }; + return down(Data$dList$dTypes.Nil)(orig); +}; +const emptySet = Leaf; +export {$KickUp, $Set, $TreeContext, KickUp, Leaf, Three, ThreeLeft, ThreeMiddle, ThreeRight, Two, TwoLeft, TwoRight, emptySet, fromZipper, insertAndLookupBy}; diff --git a/.storybook/purescript-indexer/output-es/Data.List.Lazy.NonEmpty/index.js b/.storybook/purescript-indexer/output-es/Data.List.Lazy.NonEmpty/index.js new file mode 100644 index 0000000..51bafae --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.List.Lazy.NonEmpty/index.js @@ -0,0 +1,69 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dLazy from "../Data.Lazy/index.js"; +import * as Data$dList$dLazy from "../Data.List.Lazy/index.js"; +import * as Data$dList$dLazy$dTypes from "../Data.List.Lazy.Types/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dNonEmpty from "../Data.NonEmpty/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +const uncons = v => { + const v1 = Data$dLazy.force(v); + return {head: v1._1, tail: v1._2}; +}; +const toList = v => { + const v1 = Data$dLazy.force(v); + return Data$dLazy.defer(v$1 => Data$dList$dLazy$dTypes.$Step("Cons", v1._1, v1._2)); +}; +const toUnfoldable = dictUnfoldable => { + const $1 = dictUnfoldable.unfoldr(xs => { + const $2 = Data$dList$dLazy.uncons(xs); + if ($2.tag === "Just") { return Data$dMaybe.$Maybe("Just", Data$dTuple.$Tuple($2._1.head, $2._1.tail)); } + return Data$dMaybe.Nothing; + }); + return x => $1((() => { + const v1 = Data$dLazy.force(x); + return Data$dLazy.defer(v => Data$dList$dLazy$dTypes.$Step("Cons", v1._1, v1._2)); + })()); +}; +const tail = v => Data$dLazy.force(v)._2; +const singleton = /* #__PURE__ */ (() => Data$dList$dLazy$dTypes.applicativeNonEmptyList.pure)(); +const repeat = x => Data$dLazy.defer(v => Data$dNonEmpty.$NonEmpty(x, Data$dList$dLazy.repeat(x))); +const length = v => 1 + Data$dList$dLazy.length(Data$dLazy.force(v)._2) | 0; +const last = v => { + const v1 = Data$dLazy.force(v); + const $2 = Data$dList$dLazy.last(v1._2); + if ($2.tag === "Nothing") { return v1._1; } + if ($2.tag === "Just") { return $2._1; } + $runtime.fail(); +}; +const iterate = f => x => Data$dLazy.defer(v => Data$dNonEmpty.$NonEmpty(x, Data$dList$dLazy.iterate(f)(f(x)))); +const init = v => { + const v1 = Data$dLazy.force(v); + const $2 = Data$dList$dLazy.init(v1._2); + if ($2.tag === "Nothing") { return Data$dList$dLazy$dTypes.nil; } + if ($2.tag === "Just") { return Data$dLazy.defer(v$1 => Data$dList$dLazy$dTypes.$Step("Cons", v1._1, $2._1)); } + $runtime.fail(); +}; +const head = v => Data$dLazy.force(v)._1; +const fromList = l => { + const v = Data$dLazy.force(l); + if (v.tag === "Nil") { return Data$dMaybe.Nothing; } + if (v.tag === "Cons") { return Data$dMaybe.$Maybe("Just", Data$dLazy.defer(v1 => Data$dNonEmpty.$NonEmpty(v._1, v._2))); } + $runtime.fail(); +}; +const fromFoldable = dictFoldable => { + const $1 = dictFoldable.foldr(Data$dList$dLazy$dTypes.cons)(Data$dList$dLazy$dTypes.nil); + return x => fromList($1(x)); +}; +const cons = y => v => Data$dLazy.defer(v1 => { + const v2 = Data$dLazy.force(v); + return Data$dNonEmpty.$NonEmpty(y, Data$dLazy.defer(v$1 => Data$dList$dLazy$dTypes.$Step("Cons", v2._1, v2._2))); +}); +const concatMap = b => a => Data$dList$dLazy$dTypes.bindNonEmptyList.bind(a)(b); +const appendFoldable = dictFoldable => { + const fromFoldable1 = dictFoldable.foldr(Data$dList$dLazy$dTypes.cons)(Data$dList$dLazy$dTypes.nil); + return nel => ys => Data$dLazy.defer(v => Data$dNonEmpty.$NonEmpty( + Data$dLazy.force(nel)._1, + Data$dList$dLazy$dTypes.semigroupList.append(Data$dLazy.force(nel)._2)(fromFoldable1(ys)) + )); +}; +export {appendFoldable, concatMap, cons, fromFoldable, fromList, head, init, iterate, last, length, repeat, singleton, tail, toList, toUnfoldable, uncons}; diff --git a/.storybook/purescript-indexer/output-es/Data.List.Lazy.Types/index.js b/.storybook/purescript-indexer/output-es/Data.List.Lazy.Types/index.js new file mode 100644 index 0000000..e72e65b --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.List.Lazy.Types/index.js @@ -0,0 +1,510 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dLazy from "../Data.Lazy/index.js"; +import * as Data$dNonEmpty from "../Data.NonEmpty/index.js"; +import * as Data$dOrdering from "../Data.Ordering/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +const $Step = (tag, _1, _2) => ({tag, _1, _2}); +const identity = x => x; +const List = x => x; +const Nil = /* #__PURE__ */ $Step("Nil"); +const Cons = value0 => value1 => $Step("Cons", value0, value1); +const NonEmptyList = x => x; +const nil = /* #__PURE__ */ Data$dLazy.defer(v => Nil); +const newtypeNonEmptyList = {Coercible0: () => undefined}; +const newtypeList = {Coercible0: () => undefined}; +const step = x => Data$dLazy.force(x); +const semigroupList = { + append: xs => ys => Data$dLazy.defer(v => { + const $3 = Data$dLazy.force(xs); + if ($3.tag === "Nil") { return Data$dLazy.force(ys); } + if ($3.tag === "Cons") { return $Step("Cons", $3._1, semigroupList.append($3._2)(ys)); } + $runtime.fail(); + }) +}; +const monoidList = {mempty: nil, Semigroup0: () => semigroupList}; +const lazyList = {defer: f => Data$dLazy.defer(x => Data$dLazy.force(f(x)))}; +const functorList = { + map: f => xs => Data$dLazy.defer(v => { + const $3 = Data$dLazy.force(xs); + if ($3.tag === "Nil") { return Nil; } + if ($3.tag === "Cons") { return $Step("Cons", f($3._1), functorList.map(f)($3._2)); } + $runtime.fail(); + }) +}; +const map1 = /* #__PURE__ */ (() => Data$dNonEmpty.functorNonEmpty(functorList).map)(); +const functorNonEmptyList = { + map: f => v => { + const $2 = map1(f); + return Data$dLazy.defer(v$1 => $2(Data$dLazy.force(v))); + } +}; +const eq1List = { + eq1: dictEq => 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") { + go$c = false; + go$r = v1.tag === "Nil"; + continue; + } + if (v.tag === "Cons") { + if (v1.tag === "Cons") { + if (dictEq.eq(v._1)(v1._1)) { + go$a0 = Data$dLazy.force(v._2); + go$a1 = Data$dLazy.force(v1._2); + continue; + } + go$c = false; + go$r = false; + continue; + } + go$c = false; + go$r = false; + continue; + } + go$c = false; + go$r = false; + continue; + }; + return go$r; + }; + return go(Data$dLazy.force(xs))(Data$dLazy.force(ys)); + } +}; +const eqNonEmpty = dictEq => ({eq: x => y => dictEq.eq(x._1)(y._1) && eq1List.eq1(dictEq)(x._2)(y._2)}); +const eq1NonEmptyList = {eq1: dictEq => Data$dLazy.eq1Lazy.eq1(eqNonEmpty(dictEq))}; +const eqList = dictEq => ({eq: eq1List.eq1(dictEq)}); +const eqNonEmptyList = dictEq => { + const $1 = eqNonEmpty(dictEq); + return {eq: x => y => $1.eq(Data$dLazy.force(x))(Data$dLazy.force(y))}; +}; +const 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 = Data$dOrdering.EQ; + continue; + } + go$c = false; + go$r = Data$dOrdering.LT; + continue; + } + if (v1.tag === "Nil") { + go$c = false; + go$r = Data$dOrdering.GT; + continue; + } + if (v.tag === "Cons") { + if (v1.tag === "Cons") { + const v2 = dictOrd.compare(v._1)(v1._1); + if (v2.tag === "EQ") { + go$a0 = Data$dLazy.force(v._2); + go$a1 = Data$dLazy.force(v1._2); + continue; + } + go$c = false; + go$r = v2; + continue; + } + $runtime.fail(); + } + $runtime.fail(); + }; + return go$r; + }; + return go(Data$dLazy.force(xs))(Data$dLazy.force(ys)); + }, + Eq10: () => eq1List +}; +const ordNonEmpty = /* #__PURE__ */ Data$dNonEmpty.ordNonEmpty(ord1List); +const ord1NonEmptyList = {compare1: dictOrd => Data$dLazy.ordLazy(ordNonEmpty(dictOrd)).compare, Eq10: () => eq1NonEmptyList}; +const ordList = dictOrd => { + const eqList1 = {eq: eq1List.eq1(dictOrd.Eq0())}; + return {compare: ord1List.compare1(dictOrd), Eq0: () => eqList1}; +}; +const ordNonEmptyList = dictOrd => Data$dLazy.ordLazy(ordNonEmpty(dictOrd)); +const cons = x => xs => Data$dLazy.defer(v => $Step("Cons", x, xs)); +const foldableList = { + foldr: op => z => xs => foldableList.foldl(b => a => op(a)(b))(z)(foldableList.foldl(b => a => Data$dLazy.defer(v => $Step("Cons", a, b)))(nil)(xs)), + foldl: op => { + 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, xs = go$a1; + const v = Data$dLazy.force(xs); + if (v.tag === "Nil") { + go$c = false; + go$r = b; + continue; + } + if (v.tag === "Cons") { + go$a0 = op(b)(v._1); + go$a1 = v._2; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go; + }, + foldMap: dictMonoid => { + const append2 = dictMonoid.Semigroup0().append; + return f => foldableList.foldl(b => a => append2(b)(f(a)))(dictMonoid.mempty); + } +}; +const foldableNonEmpty = { + foldMap: dictMonoid => { + const append1 = dictMonoid.Semigroup0().append; + const foldMap1 = foldableList.foldMap(dictMonoid); + return f => v => append1(f(v._1))(foldMap1(f)(v._2)); + }, + foldl: f => b => v => foldableList.foldl(f)(f(b)(v._1))(v._2), + foldr: f => b => v => f(v._1)(foldableList.foldr(f)(b)(v._2)) +}; +const extendList = { + extend: f => l => { + const v = Data$dLazy.force(l); + if (v.tag === "Nil") { return nil; } + if (v.tag === "Cons") { + const $3 = f(l); + const $4 = foldableList.foldr(a => v$1 => { + const acc$p = Data$dLazy.defer(v$2 => $Step("Cons", a, v$1.acc)); + return { + val: (() => { + const $7 = f(acc$p); + return Data$dLazy.defer(v$2 => $Step("Cons", $7, v$1.val)); + })(), + acc: acc$p + }; + })({val: nil, acc: nil})(v._2).val; + return Data$dLazy.defer(v$1 => $Step("Cons", $3, $4)); + } + $runtime.fail(); + }, + Functor0: () => functorList +}; +const extendNonEmptyList = { + extend: f => v => { + const $2 = Data$dLazy.force(v)._2; + return Data$dLazy.defer(v2 => Data$dNonEmpty.$NonEmpty( + f(v), + foldableList.foldr(a => v1 => ( + { + val: (() => { + const $6 = f(Data$dLazy.defer(v2$1 => Data$dNonEmpty.$NonEmpty(a, v1.acc))); + return Data$dLazy.defer(v$1 => $Step("Cons", $6, v1.val)); + })(), + acc: Data$dLazy.defer(v$1 => $Step("Cons", a, v1.acc)) + } + ))({val: nil, acc: nil})($2).val + )); + }, + Functor0: () => functorNonEmptyList +}; +const foldableNonEmptyList = { + foldr: f => b => v => { + const $3 = Data$dLazy.force(v); + return f($3._1)(foldableList.foldr(f)(b)($3._2)); + }, + foldl: f => b => v => { + const $3 = Data$dLazy.force(v); + return foldableList.foldl(f)(f(b)($3._1))($3._2); + }, + foldMap: dictMonoid => { + const foldMap1 = foldableNonEmpty.foldMap(dictMonoid); + return f => v => foldMap1(f)(Data$dLazy.force(v)); + } +}; +const showList = dictShow => ( + { + show: xs => { + const v = Data$dLazy.force(xs); + if (v.tag === "Nil") { return "(fromFoldable [])"; } + if (v.tag === "Cons") { return "(fromFoldable [" + (dictShow.show(v._1) + foldableList.foldl(shown => x$p => shown + ("," + dictShow.show(x$p)))("")(v._2) + "])"); } + $runtime.fail(); + } + } +); +const showNonEmptyList = dictShow => { + const $1 = showList(dictShow); + return { + show: v => { + const $3 = Data$dLazy.force(v); + return "(NonEmptyList (defer \\_ -> (NonEmpty " + (dictShow.show($3._1) + (" " + ($1.show($3._2) + ")"))) + "))"; + } + }; +}; +const showStep = dictShow => { + const show1 = showList(dictShow).show; + return { + show: v => { + if (v.tag === "Nil") { return "Nil"; } + if (v.tag === "Cons") { return "(" + (dictShow.show(v._1) + (" : " + (show1(v._2) + ")"))); } + $runtime.fail(); + } + }; +}; +const foldableWithIndexList = { + foldrWithIndex: f => b => xs => { + const v = foldableList.foldl(v1 => a => Data$dTuple.$Tuple(v1._1 + 1 | 0, Data$dLazy.defer(v => $Step("Cons", a, v1._2))))(Data$dTuple.$Tuple(0, nil))(xs); + return foldableList.foldl(v1 => a => Data$dTuple.$Tuple(v1._1 - 1 | 0, f(v1._1 - 1 | 0)(a)(v1._2)))(Data$dTuple.$Tuple(v._1, b))(v._2)._2; + }, + foldlWithIndex: f => acc => { + const $2 = foldableList.foldl(v => a => Data$dTuple.$Tuple(v._1 + 1 | 0, f(v._1)(v._2)(a)))(Data$dTuple.$Tuple(0, acc)); + return x => $2(x)._2; + }, + foldMapWithIndex: dictMonoid => { + const append2 = dictMonoid.Semigroup0().append; + return f => foldableWithIndexList.foldlWithIndex(i => acc => { + const $5 = append2(acc); + const $6 = f(i); + return x => $5($6(x)); + })(dictMonoid.mempty); + }, + Foldable0: () => foldableList +}; +const foldableWithIndexNonEmpty = /* #__PURE__ */ Data$dNonEmpty.foldableWithIndexNonEmpty(foldableWithIndexList); +const foldableWithIndexNonEmptyList = { + foldMapWithIndex: dictMonoid => { + const foldMapWithIndex1 = foldableWithIndexNonEmpty.foldMapWithIndex(dictMonoid); + return f => v => foldMapWithIndex1(x => f((() => { + if (x.tag === "Nothing") { return 0; } + if (x.tag === "Just") { return 1 + x._1 | 0; } + $runtime.fail(); + })()))(Data$dLazy.force(v)); + }, + foldlWithIndex: f => b => v => foldableWithIndexNonEmpty.foldlWithIndex(x => f((() => { + if (x.tag === "Nothing") { return 0; } + if (x.tag === "Just") { return 1 + x._1 | 0; } + $runtime.fail(); + })()))(b)(Data$dLazy.force(v)), + foldrWithIndex: f => b => v => foldableWithIndexNonEmpty.foldrWithIndex(x => f((() => { + if (x.tag === "Nothing") { return 0; } + if (x.tag === "Just") { return 1 + x._1 | 0; } + $runtime.fail(); + })()))(b)(Data$dLazy.force(v)), + Foldable0: () => foldableNonEmptyList +}; +const functorWithIndexList = { + mapWithIndex: f => foldableWithIndexList.foldrWithIndex(i => x => acc => { + const $4 = f(i)(x); + return Data$dLazy.defer(v => $Step("Cons", $4, acc)); + })(nil), + Functor0: () => functorList +}; +const mapWithIndex = /* #__PURE__ */ (() => Data$dNonEmpty.functorWithIndex(functorWithIndexList).mapWithIndex)(); +const functorWithIndexNonEmptyList = { + mapWithIndex: f => v => Data$dLazy.defer(v1 => mapWithIndex(x => f((() => { + if (x.tag === "Nothing") { return 0; } + if (x.tag === "Just") { return 1 + x._1 | 0; } + $runtime.fail(); + })()))(Data$dLazy.force(v))), + Functor0: () => functorNonEmptyList +}; +const toList = v => Data$dLazy.defer(x => Data$dLazy.force((() => { + const v2 = Data$dLazy.force(v); + return Data$dLazy.defer(v$1 => $Step("Cons", v2._1, v2._2)); +})())); +const semigroupNonEmptyList = { + append: v => as$p => { + const v1 = Data$dLazy.force(v); + return Data$dLazy.defer(v2 => Data$dNonEmpty.$NonEmpty(v1._1, semigroupList.append(v1._2)(toList(as$p)))); + } +}; +const traversableList = { + traverse: dictApplicative => { + const Apply0 = dictApplicative.Apply0(); + const map2 = Apply0.Functor0().map; + return f => foldableList.foldr(a => b => Apply0.apply(map2(cons)(f(a)))(b))(dictApplicative.pure(nil)); + }, + sequence: dictApplicative => traversableList.traverse(dictApplicative)(identity), + Functor0: () => functorList, + Foldable1: () => foldableList +}; +const traversableNonEmpty = /* #__PURE__ */ Data$dNonEmpty.traversableNonEmpty(traversableList); +const traversableNonEmptyList = { + traverse: dictApplicative => { + const map2 = dictApplicative.Apply0().Functor0().map; + const traverse1 = traversableNonEmpty.traverse(dictApplicative); + return f => v => map2(xxs => Data$dLazy.defer(v1 => xxs))(traverse1(f)(Data$dLazy.force(v))); + }, + sequence: dictApplicative => { + const map2 = dictApplicative.Apply0().Functor0().map; + const sequence1 = traversableNonEmpty.sequence(dictApplicative); + return v => map2(xxs => Data$dLazy.defer(v1 => xxs))(sequence1(Data$dLazy.force(v))); + }, + Functor0: () => functorNonEmptyList, + Foldable1: () => foldableNonEmptyList +}; +const traversableWithIndexList = { + traverseWithIndex: dictApplicative => { + const Apply0 = dictApplicative.Apply0(); + const map2 = Apply0.Functor0().map; + return f => foldableWithIndexList.foldrWithIndex(i => a => b => Apply0.apply(map2(cons)(f(i)(a)))(b))(dictApplicative.pure(nil)); + }, + FunctorWithIndex0: () => functorWithIndexList, + FoldableWithIndex1: () => foldableWithIndexList, + Traversable2: () => traversableList +}; +const traverseWithIndex = /* #__PURE__ */ (() => Data$dNonEmpty.traversableWithIndexNonEmpty(traversableWithIndexList).traverseWithIndex)(); +const traversableWithIndexNonEmptyList = { + traverseWithIndex: dictApplicative => { + const map2 = dictApplicative.Apply0().Functor0().map; + const traverseWithIndex1 = traverseWithIndex(dictApplicative); + return f => v => map2(xxs => Data$dLazy.defer(v1 => xxs))(traverseWithIndex1(x => f((() => { + if (x.tag === "Nothing") { return 0; } + if (x.tag === "Just") { return 1 + x._1 | 0; } + $runtime.fail(); + })()))(Data$dLazy.force(v))); + }, + FunctorWithIndex0: () => functorWithIndexNonEmptyList, + FoldableWithIndex1: () => foldableWithIndexNonEmptyList, + Traversable2: () => traversableNonEmptyList +}; +const unfoldable1List = { + unfoldr1: /* #__PURE__ */ (() => { + const go = f => b => Data$dLazy.defer(x => Data$dLazy.force((() => { + const v1 = f(b); + if (v1._2.tag === "Just") { + const $5 = go(f)(v1._2._1); + return Data$dLazy.defer(v => $Step("Cons", v1._1, $5)); + } + if (v1._2.tag === "Nothing") { return Data$dLazy.defer(v => $Step("Cons", v1._1, nil)); } + $runtime.fail(); + })())); + return go; + })() +}; +const unfoldableList = { + unfoldr: /* #__PURE__ */ (() => { + const go = f => b => Data$dLazy.defer(x => Data$dLazy.force((() => { + const v1 = f(b); + if (v1.tag === "Nothing") { return nil; } + if (v1.tag === "Just") { + const $5 = go(f)(v1._1._2); + return Data$dLazy.defer(v => $Step("Cons", v1._1._1, $5)); + } + $runtime.fail(); + })())); + return go; + })(), + Unfoldable10: () => unfoldable1List +}; +const unfoldr1 = /* #__PURE__ */ (() => Data$dNonEmpty.unfoldable1NonEmpty(unfoldableList).unfoldr1)(); +const unfoldable1NonEmptyList = {unfoldr1: f => b => Data$dLazy.defer(v => unfoldr1(f)(b))}; +const comonadNonEmptyList = {extract: v => Data$dLazy.force(v)._1, Extend0: () => extendNonEmptyList}; +const monadList = {Applicative0: () => applicativeList, Bind1: () => bindList}; +const bindList = { + bind: xs => f => Data$dLazy.defer(v => { + const $3 = Data$dLazy.force(xs); + if ($3.tag === "Nil") { return Nil; } + if ($3.tag === "Cons") { return Data$dLazy.force(semigroupList.append(f($3._1))(bindList.bind($3._2)(f))); } + $runtime.fail(); + }), + Apply0: () => applyList +}; +const applyList = {apply: f => a => bindList.bind(f)(f$p => bindList.bind(a)(a$p => applicativeList.pure(f$p(a$p)))), Functor0: () => functorList}; +const applicativeList = {pure: a => Data$dLazy.defer(v => $Step("Cons", a, nil)), Apply0: () => applyList}; +const applyNonEmptyList = { + apply: v => v1 => { + const v2 = Data$dLazy.force(v1); + const v3 = Data$dLazy.force(v); + return Data$dLazy.defer(v4 => Data$dNonEmpty.$NonEmpty( + v3._1(v2._1), + semigroupList.append(applyList.apply(v3._2)(Data$dLazy.defer(v$1 => $Step("Cons", v2._1, nil))))(applyList.apply(Data$dLazy.defer(v$1 => $Step("Cons", v3._1, v3._2)))(v2._2)) + )); + }, + Functor0: () => functorNonEmptyList +}; +const bindNonEmptyList = { + bind: v => f => { + const v1 = Data$dLazy.force(v); + const v2 = Data$dLazy.force(f(v1._1)); + return Data$dLazy.defer(v3 => Data$dNonEmpty.$NonEmpty(v2._1, semigroupList.append(v2._2)(bindList.bind(v1._2)(x => toList(f(x)))))); + }, + Apply0: () => applyNonEmptyList +}; +const altNonEmptyList = /* #__PURE__ */ (() => ({alt: semigroupNonEmptyList.append, Functor0: () => functorNonEmptyList}))(); +const altList = /* #__PURE__ */ (() => ({alt: semigroupList.append, Functor0: () => functorList}))(); +const plusList = {empty: nil, Alt0: () => altList}; +const alternativeList = {Applicative0: () => applicativeList, Plus1: () => plusList}; +const monadPlusList = {Monad0: () => monadList, Alternative1: () => alternativeList}; +const applicativeNonEmptyList = {pure: a => Data$dLazy.defer(v => Data$dNonEmpty.$NonEmpty(a, nil)), Apply0: () => applyNonEmptyList}; +const monadNonEmptyList = {Applicative0: () => applicativeNonEmptyList, Bind1: () => bindNonEmptyList}; +export { + $Step, + Cons, + List, + Nil, + NonEmptyList, + altList, + altNonEmptyList, + alternativeList, + applicativeList, + applicativeNonEmptyList, + applyList, + applyNonEmptyList, + bindList, + bindNonEmptyList, + comonadNonEmptyList, + cons, + eq1List, + eq1NonEmptyList, + eqList, + eqNonEmpty, + eqNonEmptyList, + extendList, + extendNonEmptyList, + foldableList, + foldableNonEmpty, + foldableNonEmptyList, + foldableWithIndexList, + foldableWithIndexNonEmpty, + foldableWithIndexNonEmptyList, + functorList, + functorNonEmptyList, + functorWithIndexList, + functorWithIndexNonEmptyList, + identity, + lazyList, + map1, + mapWithIndex, + monadList, + monadNonEmptyList, + monadPlusList, + monoidList, + newtypeList, + newtypeNonEmptyList, + nil, + ord1List, + ord1NonEmptyList, + ordList, + ordNonEmpty, + ordNonEmptyList, + plusList, + semigroupList, + semigroupNonEmptyList, + showList, + showNonEmptyList, + showStep, + step, + toList, + traversableList, + traversableNonEmpty, + traversableNonEmptyList, + traversableWithIndexList, + traversableWithIndexNonEmptyList, + traverseWithIndex, + unfoldable1List, + unfoldable1NonEmptyList, + unfoldableList, + unfoldr1 +}; diff --git a/.storybook/purescript-indexer/output-es/Data.List.Lazy/index.js b/.storybook/purescript-indexer/output-es/Data.List.Lazy/index.js new file mode 100644 index 0000000..8bf41aa --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.List.Lazy/index.js @@ -0,0 +1,641 @@ +// | This module defines a type of _lazy_ linked lists, and associated helper +// | functions and type class instances. +// | +// | _Note_: Depending on your use-case, you may prefer to use +// | `Data.Sequence` instead, which might give better performance for certain +// | use cases. This module is an improvement over `Data.Array` when working with +// | immutable lists of data in a purely-functional setting, but does not have +// | good random-access performance. +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dRec$dClass from "../Control.Monad.Rec.Class/index.js"; +import * as Data$dLazy from "../Data.Lazy/index.js"; +import * as Data$dList$dInternal from "../Data.List.Internal/index.js"; +import * as Data$dList$dLazy$dTypes from "../Data.List.Lazy.Types/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dNonEmpty from "../Data.NonEmpty/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +const tailRecM2 = f => a => b => Control$dMonad$dRec$dClass.monadRecMaybe.tailRecM(o => f(o.a)(o.b))({a: a, b: b}); +const any = /* #__PURE__ */ (() => Data$dList$dLazy$dTypes.foldableList.foldMap((() => { + const semigroupDisj1 = {append: v => v1 => v || v1}; + return {mempty: false, Semigroup0: () => semigroupDisj1}; +})()))(); +const identity = x => x; +const Pattern = x => x; +const zipWith = f => xs => ys => { + const $3 = Data$dLazy.defer(v => { + const $4 = Data$dLazy.force(xs); + return v1 => { + if ($4.tag === "Nil") { return Data$dList$dLazy$dTypes.Nil; } + if (v1.tag === "Nil") { return Data$dList$dLazy$dTypes.Nil; } + if ($4.tag === "Cons") { + if (v1.tag === "Cons") { return Data$dList$dLazy$dTypes.$Step("Cons", f($4._1)(v1._1), zipWith(f)($4._2)(v1._2)); } + $runtime.fail(); + } + $runtime.fail(); + }; + }); + return Data$dLazy.defer(v => Data$dLazy.force($3)(Data$dLazy.force(ys))); +}; +const zipWithA = dictApplicative => { + const sequence1 = Data$dList$dLazy$dTypes.traversableList.traverse(dictApplicative)(Data$dList$dLazy$dTypes.identity); + return f => xs => ys => sequence1(zipWith(f)(xs)(ys)); +}; +const zip = /* #__PURE__ */ zipWith(Data$dTuple.Tuple); +const updateAt = n => x => xs => Data$dLazy.defer(v => { + const $4 = Data$dLazy.force(xs); + if ($4.tag === "Nil") { return Data$dList$dLazy$dTypes.Nil; } + if ($4.tag === "Cons") { + if (n === 0) { return Data$dList$dLazy$dTypes.$Step("Cons", x, $4._2); } + return Data$dList$dLazy$dTypes.$Step("Cons", $4._1, updateAt(n - 1 | 0)(x)($4._2)); + } + $runtime.fail(); +}); +const unzip = /* #__PURE__ */ (() => Data$dList$dLazy$dTypes.foldableList.foldr(v => v1 => Data$dTuple.$Tuple( + Data$dLazy.defer(v$1 => Data$dList$dLazy$dTypes.$Step("Cons", v._1, v1._1)), + Data$dLazy.defer(v$1 => Data$dList$dLazy$dTypes.$Step("Cons", v._2, v1._2)) +))(Data$dTuple.$Tuple(Data$dList$dLazy$dTypes.nil, Data$dList$dLazy$dTypes.nil)))(); +const uncons = xs => { + const v = Data$dLazy.force(xs); + if (v.tag === "Nil") { return Data$dMaybe.Nothing; } + if (v.tag === "Cons") { return Data$dMaybe.$Maybe("Just", {head: v._1, tail: v._2}); } + $runtime.fail(); +}; +const toUnfoldable = dictUnfoldable => dictUnfoldable.unfoldr(xs => { + const $2 = uncons(xs); + if ($2.tag === "Just") { return Data$dMaybe.$Maybe("Just", Data$dTuple.$Tuple($2._1.head, $2._1.tail)); } + return Data$dMaybe.Nothing; +}); +const takeWhile = p => Data$dLazy.functorLazy.map(v => { + if (v.tag === "Cons") { + if (p(v._1)) { return Data$dList$dLazy$dTypes.$Step("Cons", v._1, takeWhile(p)(v._2)); } + return Data$dList$dLazy$dTypes.Nil; + } + return Data$dList$dLazy$dTypes.Nil; +}); +const take = n => { + if (n <= 0) { return v => Data$dList$dLazy$dTypes.nil; } + return Data$dLazy.functorLazy.map(v1 => { + if (v1.tag === "Nil") { return Data$dList$dLazy$dTypes.Nil; } + if (v1.tag === "Cons") { return Data$dList$dLazy$dTypes.$Step("Cons", v1._1, take(n - 1 | 0)(v1._2)); } + $runtime.fail(); + }); +}; +const tail = xs => { + const $1 = uncons(xs); + if ($1.tag === "Just") { return Data$dMaybe.$Maybe("Just", $1._1.tail); } + return Data$dMaybe.Nothing; +}; +const stripPrefix = dictEq => v => s => tailRecM2(prefix => input => { + const v1 = Data$dLazy.force(prefix); + if (v1.tag === "Nil") { return Data$dMaybe.$Maybe("Just", Control$dMonad$dRec$dClass.$Step("Done", input)); } + if (v1.tag === "Cons") { + const v2 = Data$dLazy.force(input); + if (v2.tag === "Cons") { + if (dictEq.eq(v1._1)(v2._1)) { return Data$dMaybe.$Maybe("Just", Control$dMonad$dRec$dClass.$Step("Loop", {a: v1._2, b: v2._2})); } + return Data$dMaybe.Nothing; + } + return Data$dMaybe.Nothing; + } + $runtime.fail(); +})(v)(s); +const span = p => xs => { + const v = uncons(xs); + if (v.tag === "Just") { + if (p(v._1.head)) { + const v1 = span(p)(v._1.tail); + return {init: Data$dLazy.defer(v$1 => Data$dList$dLazy$dTypes.$Step("Cons", v._1.head, v1.init)), rest: v1.rest}; + } + return {init: Data$dList$dLazy$dTypes.nil, rest: xs}; + } + return {init: Data$dList$dLazy$dTypes.nil, rest: xs}; +}; +const snoc = xs => x => Data$dList$dLazy$dTypes.foldableList.foldr(Data$dList$dLazy$dTypes.cons)(Data$dLazy.defer(v => Data$dList$dLazy$dTypes.$Step( + "Cons", + x, + Data$dList$dLazy$dTypes.nil +)))(xs); +const singleton = a => Data$dLazy.defer(v => Data$dList$dLazy$dTypes.$Step("Cons", a, Data$dList$dLazy$dTypes.nil)); +const showPattern = dictShow => { + const show = Data$dList$dLazy$dTypes.showList(dictShow).show; + return {show: v => "(Pattern " + (show(v) + ")")}; +}; +const scanlLazy = f => acc => xs => Data$dLazy.defer(v => { + const $4 = Data$dLazy.force(xs); + if ($4.tag === "Nil") { return Data$dList$dLazy$dTypes.Nil; } + if ($4.tag === "Cons") { + const acc$p = f(acc)($4._1); + return Data$dList$dLazy$dTypes.$Step("Cons", acc$p, scanlLazy(f)(acc$p)($4._2)); + } + $runtime.fail(); +}); +const reverse = xs => Data$dLazy.defer(x => Data$dLazy.force(Data$dList$dLazy$dTypes.foldableList.foldl(b => a => Data$dLazy.defer(v => Data$dList$dLazy$dTypes.$Step("Cons", a, b)))(Data$dList$dLazy$dTypes.nil)(xs))); +const replicateM = dictMonad => { + const pure1 = dictMonad.Applicative0().pure; + const bind2 = dictMonad.Bind1().bind; + return n => m => { + if (n < 1) { return pure1(Data$dList$dLazy$dTypes.nil); } + return bind2(m)(a => bind2(replicateM(dictMonad)(n - 1 | 0)(m))(as => pure1(Data$dLazy.defer(v => Data$dList$dLazy$dTypes.$Step("Cons", a, as))))); + }; +}; +const repeat = x => { + const go$lazy = $runtime.binding(() => Data$dLazy.defer(x$1 => Data$dLazy.force(Data$dLazy.defer(v => Data$dList$dLazy$dTypes.$Step("Cons", x, go$lazy()))))); + const go = go$lazy(); + return go; +}; +const replicate = i => xs => take(i)(repeat(xs)); +const range = start => end => { + if (start > end) { + return Data$dList$dLazy$dTypes.unfoldableList.unfoldr(x => { + if (x >= end) { return Data$dMaybe.$Maybe("Just", Data$dTuple.$Tuple(x, x - 1 | 0)); } + return Data$dMaybe.Nothing; + })(start); + } + return Data$dList$dLazy$dTypes.unfoldableList.unfoldr(x => { + if (x <= end) { return Data$dMaybe.$Maybe("Just", Data$dTuple.$Tuple(x, x + 1 | 0)); } + return Data$dMaybe.Nothing; + })(start); +}; +const partition = f => Data$dList$dLazy$dTypes.foldableList.foldr(x => v => { + if (f(x)) { return {yes: Data$dLazy.defer(v$1 => Data$dList$dLazy$dTypes.$Step("Cons", x, v.yes)), no: v.no}; } + return {yes: v.yes, no: Data$dLazy.defer(v$1 => Data$dList$dLazy$dTypes.$Step("Cons", x, v.no))}; +})({yes: Data$dList$dLazy$dTypes.nil, no: Data$dList$dLazy$dTypes.nil}); +const $$null = x => { + const $1 = uncons(x); + if ($1.tag === "Nothing") { return true; } + if ($1.tag === "Just") { return false; } + $runtime.fail(); +}; +const nubBy = p => { + const goStep = v => v1 => { + if (v1.tag === "Nil") { return Data$dList$dLazy$dTypes.Nil; } + if (v1.tag === "Cons") { + const v2 = Data$dList$dInternal.insertAndLookupBy(p)(v1._1)(v); + if (v2.found) { return Data$dLazy.force(go(v2.result)(v1._2)); } + return Data$dList$dLazy$dTypes.$Step("Cons", v1._1, go(v2.result)(v1._2)); + } + $runtime.fail(); + }; + const go = s => v => { + const $4 = goStep(s); + return Data$dLazy.defer(v$1 => $4(Data$dLazy.force(v))); + }; + return go(Data$dList$dInternal.Leaf); +}; +const nub = dictOrd => nubBy(dictOrd.compare); +const newtypePattern = {Coercible0: () => undefined}; +const mapMaybe = 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 === "Nil") { + go$c = false; + go$r = Data$dList$dLazy$dTypes.Nil; + continue; + } + if (v.tag === "Cons") { + const v1 = f(v._1); + if (v1.tag === "Nothing") { + go$a0 = Data$dLazy.force(v._2); + continue; + } + if (v1.tag === "Just") { + go$c = false; + go$r = Data$dList$dLazy$dTypes.$Step("Cons", v1._1, mapMaybe(f)(v._2)); + continue; + } + $runtime.fail(); + } + $runtime.fail(); + }; + return go$r; + }; + return x => Data$dLazy.defer(v => go(Data$dLazy.force(x))); +}; +const some = dictAlternative => { + const apply1 = dictAlternative.Applicative0().Apply0().apply; + const map3 = dictAlternative.Plus1().Alt0().Functor0().map; + return dictLazy => v => apply1(map3(Data$dList$dLazy$dTypes.cons)(v))(dictLazy.defer(v1 => many(dictAlternative)(dictLazy)(v))); +}; +const many = dictAlternative => { + const alt = dictAlternative.Plus1().Alt0().alt; + const pure1 = dictAlternative.Applicative0().pure; + return dictLazy => v => alt(some(dictAlternative)(dictLazy)(v))(pure1(Data$dList$dLazy$dTypes.nil)); +}; +const length = /* #__PURE__ */ (() => Data$dList$dLazy$dTypes.foldableList.foldl(l => v => l + 1 | 0)(0))(); +const last = /* #__PURE__ */ (() => { + 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 === "Cons") { + if ( + (() => { + const $2 = uncons(v._2); + if ($2.tag === "Nothing") { return true; } + if ($2.tag === "Just") { return false; } + $runtime.fail(); + })() + ) { + go$c = false; + go$r = Data$dMaybe.$Maybe("Just", v._1); + continue; + } + go$a0 = Data$dLazy.force(v._2); + continue; + } + go$c = false; + go$r = Data$dMaybe.Nothing; + continue; + }; + return go$r; + }; + return x => go(Data$dLazy.force(x)); +})(); +const iterate = f => x => { + const go$lazy = $runtime.binding(() => Data$dLazy.defer(x$1 => Data$dLazy.force((() => { + const $4 = Data$dList$dLazy$dTypes.functorList.map(f)(go$lazy()); + return Data$dLazy.defer(v => Data$dList$dLazy$dTypes.$Step("Cons", x, $4)); + })()))); + const go = go$lazy(); + return go; +}; +const insertAt = v => v1 => v2 => { + if (v === 0) { return Data$dLazy.defer(v$1 => Data$dList$dLazy$dTypes.$Step("Cons", v1, v2)); } + return Data$dLazy.defer(v$1 => { + const $4 = Data$dLazy.force(v2); + if ($4.tag === "Nil") { return Data$dList$dLazy$dTypes.$Step("Cons", v1, Data$dList$dLazy$dTypes.nil); } + if ($4.tag === "Cons") { return Data$dList$dLazy$dTypes.$Step("Cons", $4._1, insertAt(v - 1 | 0)(v1)($4._2)); } + $runtime.fail(); + }); +}; +const init = /* #__PURE__ */ (() => { + const go = v => { + if (v.tag === "Cons") { + if ( + (() => { + const $2 = uncons(v._2); + if ($2.tag === "Nothing") { return true; } + if ($2.tag === "Just") { return false; } + $runtime.fail(); + })() + ) { + return Data$dMaybe.$Maybe("Just", Data$dList$dLazy$dTypes.nil); + } + const $2 = go(Data$dLazy.force(v._2)); + if ($2.tag === "Just") { return Data$dMaybe.$Maybe("Just", Data$dLazy.defer(v$1 => Data$dList$dLazy$dTypes.$Step("Cons", v._1, $2._1))); } + return Data$dMaybe.Nothing; + } + return Data$dMaybe.Nothing; + }; + return x => go(Data$dLazy.force(x)); +})(); +const index = xs => { + 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") { + go$c = false; + go$r = Data$dMaybe.Nothing; + continue; + } + if (v.tag === "Cons") { + if (v1 === 0) { + go$c = false; + go$r = Data$dMaybe.$Maybe("Just", v._1); + continue; + } + go$a0 = Data$dLazy.force(v._2); + go$a1 = v1 - 1 | 0; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go(Data$dLazy.force(xs)); +}; +const head = xs => { + const $1 = uncons(xs); + if ($1.tag === "Just") { return Data$dMaybe.$Maybe("Just", $1._1.head); } + return Data$dMaybe.Nothing; +}; +const transpose = xs => { + const v = uncons(xs); + if (v.tag === "Nothing") { return xs; } + if (v.tag === "Just") { + const v1 = uncons(v._1.head); + if (v1.tag === "Nothing") { return transpose(v._1.tail); } + if (v1.tag === "Just") { + const $3 = mapMaybe(head)(v._1.tail); + const $4 = Data$dLazy.defer(v$1 => Data$dList$dLazy$dTypes.$Step("Cons", v1._1.head, $3)); + const $5 = transpose((() => { + const $5 = mapMaybe(tail)(v._1.tail); + return Data$dLazy.defer(v$1 => Data$dList$dLazy$dTypes.$Step("Cons", v1._1.tail, $5)); + })()); + return Data$dLazy.defer(v$1 => Data$dList$dLazy$dTypes.$Step("Cons", $4, $5)); + } + $runtime.fail(); + } + $runtime.fail(); +}; +const groupBy = eq => Data$dLazy.functorLazy.map(v => { + if (v.tag === "Nil") { return Data$dList$dLazy$dTypes.Nil; } + if (v.tag === "Cons") { + const v1 = span(eq(v._1))(v._2); + return Data$dList$dLazy$dTypes.$Step("Cons", Data$dLazy.defer(v2 => Data$dNonEmpty.$NonEmpty(v._1, v1.init)), groupBy(eq)(v1.rest)); + } + $runtime.fail(); +}); +const group = dictEq => groupBy(dictEq.eq); +const insertBy = cmp => x => xs => Data$dLazy.defer(v => { + const $4 = Data$dLazy.force(xs); + if ($4.tag === "Nil") { return Data$dList$dLazy$dTypes.$Step("Cons", x, Data$dList$dLazy$dTypes.nil); } + if ($4.tag === "Cons") { + if (cmp(x)($4._1).tag === "GT") { return Data$dList$dLazy$dTypes.$Step("Cons", $4._1, insertBy(cmp)(x)($4._2)); } + return Data$dList$dLazy$dTypes.$Step("Cons", x, Data$dLazy.defer(v$1 => $4)); + } + $runtime.fail(); +}); +const insert = dictOrd => insertBy(dictOrd.compare); +const fromFoldable = dictFoldable => dictFoldable.foldr(Data$dList$dLazy$dTypes.cons)(Data$dList$dLazy$dTypes.nil); +const foldrLazy = dictLazy => op => z => { + const go = xs => { + const v = Data$dLazy.force(xs); + if (v.tag === "Cons") { return dictLazy.defer(v1 => op(v._1)(go(v._2))); } + if (v.tag === "Nil") { return z; } + $runtime.fail(); + }; + return go; +}; +const foldM = dictMonad => { + const pure1 = dictMonad.Applicative0().pure; + const bind2 = dictMonad.Bind1().bind; + return f => b => xs => { + const v = uncons(xs); + if (v.tag === "Nothing") { return pure1(b); } + if (v.tag === "Just") { return bind2(f(b)(v._1.head))(b$p => foldM(dictMonad)(f)(b$p)(v._1.tail)); } + $runtime.fail(); + }; +}; +const findIndex = fn => { + 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 n = go$a0, list = go$a1; + const $4 = uncons(list); + if ($4.tag === "Just") { + if (fn($4._1.head)) { + go$c = false; + go$r = Data$dMaybe.$Maybe("Just", n); + continue; + } + go$a0 = n + 1 | 0; + go$a1 = $4._1.tail; + continue; + } + if ($4.tag === "Nothing") { + go$c = false; + go$r = Data$dMaybe.Nothing; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go(0); +}; +const findLastIndex = fn => xs => { + const $2 = findIndex(fn)(reverse(xs)); + if ($2.tag === "Just") { return Data$dMaybe.$Maybe("Just", (length(xs) - 1 | 0) - $2._1 | 0); } + return Data$dMaybe.Nothing; +}; +const filterM = dictMonad => { + const pure1 = dictMonad.Applicative0().pure; + const bind2 = dictMonad.Bind1().bind; + return p => list => { + const v = uncons(list); + if (v.tag === "Nothing") { return pure1(Data$dList$dLazy$dTypes.nil); } + if (v.tag === "Just") { + return bind2(p(v._1.head))(b => bind2(filterM(dictMonad)(p)(v._1.tail))(xs$p => pure1((() => { + if (b) { return Data$dLazy.defer(v$1 => Data$dList$dLazy$dTypes.$Step("Cons", v._1.head, xs$p)); } + return xs$p; + })()))); + } + $runtime.fail(); + }; +}; +const filter = p => { + 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 === "Nil") { + go$c = false; + go$r = Data$dList$dLazy$dTypes.Nil; + continue; + } + if (v.tag === "Cons") { + if (p(v._1)) { + go$c = false; + go$r = Data$dList$dLazy$dTypes.$Step("Cons", v._1, filter(p)(v._2)); + continue; + } + go$a0 = Data$dLazy.force(v._2); + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return x => Data$dLazy.defer(v => go(Data$dLazy.force(x))); +}; +const intersectBy = eq => xs => ys => filter(x => any(eq(x))(ys))(xs); +const intersect = dictEq => intersectBy(dictEq.eq); +const nubByEq = eq => Data$dLazy.functorLazy.map(v => { + if (v.tag === "Nil") { return Data$dList$dLazy$dTypes.Nil; } + if (v.tag === "Cons") { return Data$dList$dLazy$dTypes.$Step("Cons", v._1, nubByEq(eq)(filter(y => !eq(v._1)(y))(v._2))); } + $runtime.fail(); +}); +const nubEq = dictEq => nubByEq(dictEq.eq); +const eqPattern = dictEq => ({eq: x => y => Data$dList$dLazy$dTypes.eq1List.eq1(dictEq)(x)(y)}); +const ordPattern = dictOrd => { + const compare = Data$dList$dLazy$dTypes.ordList(dictOrd).compare; + const $2 = dictOrd.Eq0(); + const eqPattern1 = {eq: x => y => Data$dList$dLazy$dTypes.eq1List.eq1($2)(x)(y)}; + return {compare: x => y => compare(x)(y), Eq0: () => eqPattern1}; +}; +const elemLastIndex = dictEq => x => findLastIndex(v => dictEq.eq(v)(x)); +const elemIndex = dictEq => x => findIndex(v => dictEq.eq(v)(x)); +const dropWhile = p => { + 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 === "Cons") { + if (p(v._1)) { + go$a0 = Data$dLazy.force(v._2); + continue; + } + go$c = false; + go$r = Data$dLazy.defer(v$1 => v); + continue; + } + go$c = false; + go$r = Data$dLazy.defer(v$1 => v); + continue; + }; + return go$r; + }; + return x => go(Data$dLazy.force(x)); +}; +const drop = n => { + 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 === 0) { + go$c = false; + go$r = v1; + continue; + } + if (v1.tag === "Nil") { + go$c = false; + go$r = Data$dList$dLazy$dTypes.Nil; + continue; + } + if (v1.tag === "Cons") { + go$a0 = v - 1 | 0; + go$a1 = Data$dLazy.force(v1._2); + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return Data$dLazy.functorLazy.map(go(n)); +}; +const slice = start => end => xs => take(end - start | 0)(drop(start)(xs)); +const deleteBy = eq => x => xs => Data$dLazy.defer(v => { + const $4 = Data$dLazy.force(xs); + if ($4.tag === "Nil") { return Data$dList$dLazy$dTypes.Nil; } + if ($4.tag === "Cons") { + if (eq(x)($4._1)) { return Data$dLazy.force($4._2); } + return Data$dList$dLazy$dTypes.$Step("Cons", $4._1, deleteBy(eq)(x)($4._2)); + } + $runtime.fail(); +}); +const unionBy = eq => xs => ys => Data$dList$dLazy$dTypes.semigroupList.append(xs)(Data$dList$dLazy$dTypes.foldableList.foldl(b => a => deleteBy(eq)(a)(b))(nubByEq(eq)(ys))(xs)); +const union = dictEq => unionBy(dictEq.eq); +const deleteAt = n => xs => Data$dLazy.defer(v => { + const $3 = Data$dLazy.force(xs); + if ($3.tag === "Nil") { return Data$dList$dLazy$dTypes.Nil; } + if ($3.tag === "Cons") { + if (n === 0) { return Data$dLazy.force($3._2); } + return Data$dList$dLazy$dTypes.$Step("Cons", $3._1, deleteAt(n - 1 | 0)($3._2)); + } + $runtime.fail(); +}); +const $$delete = dictEq => deleteBy(dictEq.eq); +const difference = dictEq => Data$dList$dLazy$dTypes.foldableList.foldl(b => a => deleteBy(dictEq.eq)(a)(b)); +const cycle = xs => { + const go$lazy = $runtime.binding(() => Data$dLazy.defer(x => Data$dLazy.force(Data$dList$dLazy$dTypes.semigroupList.append(xs)(go$lazy())))); + const go = go$lazy(); + return go; +}; +const concatMap = b => a => Data$dList$dLazy$dTypes.bindList.bind(a)(b); +const concat = v => Data$dList$dLazy$dTypes.bindList.bind(v)(identity); +const catMaybes = /* #__PURE__ */ mapMaybe(identity); +const alterAt = n => f => xs => Data$dLazy.defer(v => { + const $4 = Data$dLazy.force(xs); + if ($4.tag === "Nil") { return Data$dList$dLazy$dTypes.Nil; } + if ($4.tag === "Cons") { + if (n === 0) { + const v2 = f($4._1); + if (v2.tag === "Nothing") { return Data$dLazy.force($4._2); } + if (v2.tag === "Just") { return Data$dList$dLazy$dTypes.$Step("Cons", v2._1, $4._2); } + $runtime.fail(); + } + return Data$dList$dLazy$dTypes.$Step("Cons", $4._1, alterAt(n - 1 | 0)(f)($4._2)); + } + $runtime.fail(); +}); +const modifyAt = n => f => alterAt(n)(x => Data$dMaybe.$Maybe("Just", f(x))); +export { + Pattern, + alterAt, + any, + catMaybes, + concat, + concatMap, + cycle, + $$delete as delete, + deleteAt, + deleteBy, + difference, + drop, + dropWhile, + elemIndex, + elemLastIndex, + eqPattern, + filter, + filterM, + findIndex, + findLastIndex, + foldM, + foldrLazy, + fromFoldable, + group, + groupBy, + head, + identity, + index, + init, + insert, + insertAt, + insertBy, + intersect, + intersectBy, + iterate, + last, + length, + many, + mapMaybe, + modifyAt, + newtypePattern, + nub, + nubBy, + nubByEq, + nubEq, + $$null as null, + ordPattern, + partition, + range, + repeat, + replicate, + replicateM, + reverse, + scanlLazy, + showPattern, + singleton, + slice, + snoc, + some, + span, + stripPrefix, + tail, + tailRecM2, + take, + takeWhile, + toUnfoldable, + transpose, + uncons, + union, + unionBy, + unzip, + updateAt, + zip, + zipWith, + zipWithA +}; diff --git a/.storybook/purescript-indexer/output-es/Data.List.NonEmpty/index.js b/.storybook/purescript-indexer/output-es/Data.List.NonEmpty/index.js new file mode 100644 index 0000000..b9c72c3 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.List.NonEmpty/index.js @@ -0,0 +1,268 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dList from "../Data.List/index.js"; +import * as Data$dList$dTypes from "../Data.List.Types/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dNonEmpty from "../Data.NonEmpty/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +import * as Partial from "../Partial/index.js"; +const identity = x => x; +const zipWith = f => v => v1 => Data$dNonEmpty.$NonEmpty(f(v._1)(v1._1), Data$dList.zipWith(f)(v._2)(v1._2)); +const zipWithA = dictApplicative => { + const sequence11 = Data$dList$dTypes.traversable1NonEmptyList.traverse1(dictApplicative.Apply0())(Data$dList$dTypes.identity); + return f => xs => ys => sequence11(zipWith(f)(xs)(ys)); +}; +const zip = /* #__PURE__ */ zipWith(Data$dTuple.Tuple); +const wrappedOperation2 = name => f => v => v1 => { + const v2 = f(Data$dList$dTypes.$List("Cons", v._1, v._2))(Data$dList$dTypes.$List("Cons", v1._1, v1._2)); + if (v2.tag === "Cons") { return Data$dNonEmpty.$NonEmpty(v2._1, v2._2); } + if (v2.tag === "Nil") { return Partial._crashWith("Impossible: empty list in NonEmptyList " + name); } + $runtime.fail(); +}; +const wrappedOperation = name => f => v => { + const v1 = f(Data$dList$dTypes.$List("Cons", v._1, v._2)); + if (v1.tag === "Cons") { return Data$dNonEmpty.$NonEmpty(v1._1, v1._2); } + if (v1.tag === "Nil") { return Partial._crashWith("Impossible: empty list in NonEmptyList " + name); } + $runtime.fail(); +}; +const updateAt = i => a => v => { + if (i === 0) { return Data$dMaybe.$Maybe("Just", Data$dNonEmpty.$NonEmpty(a, v._2)); } + const $3 = Data$dList.updateAt(i - 1 | 0)(a)(v._2); + if ($3.tag === "Just") { return Data$dMaybe.$Maybe("Just", Data$dNonEmpty.$NonEmpty(v._1, $3._1)); } + return Data$dMaybe.Nothing; +}; +const unzip = ts => Data$dTuple.$Tuple(Data$dList$dTypes.functorNonEmptyList.map(Data$dTuple.fst)(ts), Data$dList$dTypes.functorNonEmptyList.map(Data$dTuple.snd)(ts)); +const unsnoc = v => { + const v1 = Data$dList.unsnoc(v._2); + if (v1.tag === "Nothing") { return {init: Data$dList$dTypes.Nil, last: v._1}; } + if (v1.tag === "Just") { return {init: Data$dList$dTypes.$List("Cons", v._1, v1._1.init), last: v1._1.last}; } + $runtime.fail(); +}; +const unionBy = x => wrappedOperation2("unionBy")(Data$dList.unionBy(x)); +const union = dictEq => wrappedOperation2("union")(Data$dList.union(dictEq)); +const uncons = v => ({head: v._1, tail: v._2}); +const toList = v => Data$dList$dTypes.$List("Cons", v._1, v._2); +const toUnfoldable = dictUnfoldable => { + const $1 = dictUnfoldable.unfoldr(xs => { + if (xs.tag === "Nil") { return Data$dMaybe.Nothing; } + if (xs.tag === "Cons") { return Data$dMaybe.$Maybe("Just", Data$dTuple.$Tuple(xs._1, xs._2)); } + $runtime.fail(); + }); + return x => $1(Data$dList$dTypes.$List("Cons", x._1, x._2)); +}; +const tail = v => v._2; +const sortBy = x => wrappedOperation("sortBy")(Data$dList.sortBy(x)); +const sort = dictOrd => xs => wrappedOperation("sortBy")(Data$dList.sortBy(dictOrd.compare))(xs); +const snoc = v => y => Data$dNonEmpty.$NonEmpty(v._1, Data$dList$dTypes.foldableList.foldr(Data$dList$dTypes.Cons)(Data$dList$dTypes.$List("Cons", y, Data$dList$dTypes.Nil))(v._2)); +const singleton = x => Data$dNonEmpty.$NonEmpty(x, Data$dList$dTypes.Nil); +const snoc$p = v => v1 => { + if (v.tag === "Cons") { + return Data$dNonEmpty.$NonEmpty(v._1, Data$dList$dTypes.foldableList.foldr(Data$dList$dTypes.Cons)(Data$dList$dTypes.$List("Cons", v1, Data$dList$dTypes.Nil))(v._2)); + } + if (v.tag === "Nil") { return Data$dNonEmpty.$NonEmpty(v1, Data$dList$dTypes.Nil); } + $runtime.fail(); +}; +const reverse = /* #__PURE__ */ wrappedOperation("reverse")(Data$dList.reverse); +const nubEq = dictEq => wrappedOperation("nubEq")(Data$dList.nubEq(dictEq)); +const nubByEq = x => wrappedOperation("nubByEq")(Data$dList.nubByEq(x)); +const nubBy = x => wrappedOperation("nubBy")(Data$dList.nubBy(x)); +const nub = dictOrd => wrappedOperation("nub")(Data$dList.nubBy(dictOrd.compare)); +const modifyAt = i => f => v => { + if (i === 0) { return Data$dMaybe.$Maybe("Just", Data$dNonEmpty.$NonEmpty(f(v._1), v._2)); } + const $3 = Data$dList.alterAt(i - 1 | 0)(x => Data$dMaybe.$Maybe("Just", f(x)))(v._2); + if ($3.tag === "Just") { return Data$dMaybe.$Maybe("Just", Data$dNonEmpty.$NonEmpty(v._1, $3._1)); } + return Data$dMaybe.Nothing; +}; +const lift = f => v => f(Data$dList$dTypes.$List("Cons", v._1, v._2)); +const mapMaybe = x => lift(Data$dList.mapMaybe(x)); +const partition = x => lift(Data$dList.partition(x)); +const span = x => lift(Data$dList.span(x)); +const take = x => lift(Data$dList.take(x)); +const takeWhile = x => lift(Data$dList.takeWhile(x)); +const length = 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 = go$a0, v$1 = go$a1; + if (v$1.tag === "Nil") { + go$c = false; + go$r = b; + continue; + } + if (v$1.tag === "Cons") { + go$a0 = b + 1 | 0; + go$a1 = v$1._2; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return 1 + go(0)(v._2) | 0; +}; +const last = v => { + if (v._2.tag === "Cons") { + if (v._2._2.tag === "Nil") { return v._2._1; } + if (Data$dList.last(v._2._2).tag === "Nothing") { return v._1; } + if (Data$dList.last(v._2._2).tag === "Just") { return Data$dList.last(v._2._2)._1; } + $runtime.fail(); + } + return v._1; +}; +const intersectBy = x => wrappedOperation2("intersectBy")(Data$dList.intersectBy(x)); +const intersect = dictEq => wrappedOperation2("intersect")(Data$dList.intersect(dictEq)); +const insertAt = i => a => v => { + if (i === 0) { return Data$dMaybe.$Maybe("Just", Data$dNonEmpty.$NonEmpty(a, Data$dList$dTypes.$List("Cons", v._1, v._2))); } + const $3 = Data$dList.insertAt(i - 1 | 0)(a)(v._2); + if ($3.tag === "Just") { return Data$dMaybe.$Maybe("Just", Data$dNonEmpty.$NonEmpty(v._1, $3._1)); } + return Data$dMaybe.Nothing; +}; +const init = v => { + const $1 = Data$dList.unsnoc(v._2); + if ($1.tag === "Just") { return Data$dList$dTypes.$List("Cons", v._1, $1._1.init); } + return Data$dList$dTypes.Nil; +}; +const index = v => i => { + if (i === 0) { return Data$dMaybe.$Maybe("Just", v._1); } + return Data$dList.index(v._2)(i - 1 | 0); +}; +const head = v => v._1; +const groupBy = x => wrappedOperation("groupBy")(Data$dList.groupBy(x)); +const groupAllBy = x => wrappedOperation("groupAllBy")(Data$dList.groupAllBy(x)); +const groupAll = dictOrd => wrappedOperation("groupAll")(Data$dList.groupAll(dictOrd)); +const group = dictEq => wrappedOperation("group")(Data$dList.group(dictEq)); +const fromList = v => { + if (v.tag === "Nil") { return Data$dMaybe.Nothing; } + if (v.tag === "Cons") { return Data$dMaybe.$Maybe("Just", Data$dNonEmpty.$NonEmpty(v._1, v._2)); } + $runtime.fail(); +}; +const fromFoldable = dictFoldable => { + const $1 = dictFoldable.foldr(Data$dList$dTypes.Cons)(Data$dList$dTypes.Nil); + return x => { + const $3 = $1(x); + if ($3.tag === "Nil") { return Data$dMaybe.Nothing; } + if ($3.tag === "Cons") { return Data$dMaybe.$Maybe("Just", Data$dNonEmpty.$NonEmpty($3._1, $3._2)); } + $runtime.fail(); + }; +}; +const foldM = dictMonad => { + const bind1 = dictMonad.Bind1().bind; + const foldM1 = Data$dList.foldM(dictMonad); + return f => b => v => bind1(f(b)(v._1))(b$p => foldM1(f)(b$p)(v._2)); +}; +const findLastIndex = f => v => { + const v1 = Data$dList.findLastIndex(f)(v._2); + if (v1.tag === "Just") { return Data$dMaybe.$Maybe("Just", v1._1 + 1 | 0); } + if (v1.tag === "Nothing") { + if (f(v._1)) { return Data$dMaybe.$Maybe("Just", 0); } + return Data$dMaybe.Nothing; + } + $runtime.fail(); +}; +const findIndex = f => v => { + if (f(v._1)) { return Data$dMaybe.$Maybe("Just", 0); } + const $2 = Data$dList.findIndex(f)(v._2); + if ($2.tag === "Just") { return Data$dMaybe.$Maybe("Just", $2._1 + 1 | 0); } + return Data$dMaybe.Nothing; +}; +const filterM = dictMonad => { + const $1 = Data$dList.filterM(dictMonad); + return x => lift($1(x)); +}; +const filter = x => lift(Data$dList.filter(x)); +const elemLastIndex = dictEq => x => findLastIndex(v => dictEq.eq(v)(x)); +const elemIndex = dictEq => x => findIndex(v => dictEq.eq(v)(x)); +const dropWhile = x => lift((() => { + 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 === "Cons") { + if (x(v._1)) { + go$a0 = v._2; + continue; + } + go$c = false; + go$r = v; + continue; + } + go$c = false; + go$r = v; + continue; + }; + return go$r; + }; + return go; +})()); +const drop = x => lift(Data$dList.drop(x)); +const cons$p = x => xs => Data$dNonEmpty.$NonEmpty(x, xs); +const cons = y => v => Data$dNonEmpty.$NonEmpty(y, Data$dList$dTypes.$List("Cons", v._1, v._2)); +const concatMap = b => a => Data$dList$dTypes.bindNonEmptyList.bind(a)(b); +const concat = v => Data$dList$dTypes.bindNonEmptyList.bind(v)(identity); +const catMaybes = /* #__PURE__ */ lift(Data$dList.catMaybes); +const appendFoldable = dictFoldable => { + const fromFoldable1 = dictFoldable.foldr(Data$dList$dTypes.Cons)(Data$dList$dTypes.Nil); + return v => ys => Data$dNonEmpty.$NonEmpty(v._1, Data$dList$dTypes.foldableList.foldr(Data$dList$dTypes.Cons)(fromFoldable1(ys))(v._2)); +}; +export { + appendFoldable, + catMaybes, + concat, + concatMap, + cons, + cons$p, + drop, + dropWhile, + elemIndex, + elemLastIndex, + filter, + filterM, + findIndex, + findLastIndex, + foldM, + fromFoldable, + fromList, + group, + groupAll, + groupAllBy, + groupBy, + head, + identity, + index, + init, + insertAt, + intersect, + intersectBy, + last, + length, + lift, + mapMaybe, + modifyAt, + nub, + nubBy, + nubByEq, + nubEq, + partition, + reverse, + singleton, + snoc, + snoc$p, + sort, + sortBy, + span, + tail, + take, + takeWhile, + toList, + toUnfoldable, + uncons, + union, + unionBy, + unsnoc, + unzip, + updateAt, + wrappedOperation, + wrappedOperation2, + zip, + zipWith, + zipWithA +}; diff --git a/.storybook/purescript-indexer/output-es/Data.List.Partial/index.js b/.storybook/purescript-indexer/output-es/Data.List.Partial/index.js new file mode 100644 index 0000000..3949460 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.List.Partial/index.js @@ -0,0 +1,37 @@ +// | Partial helper functions for working with strict linked lists. +import * as $runtime from "../runtime.js"; +import * as Data$dList$dTypes from "../Data.List.Types/index.js"; +const tail = () => v => { + if (v.tag === "Cons") { return v._2; } + $runtime.fail(); +}; +const last = last$a0$copy => last$a1$copy => { + let last$a0 = last$a0$copy, last$a1 = last$a1$copy, last$c = true, last$r; + while (last$c) { + const $__unused = last$a0, v = last$a1; + if (v.tag === "Cons") { + if (v._2.tag === "Nil") { + last$c = false; + last$r = v._1; + continue; + } + last$a0 = undefined; + last$a1 = v._2; + continue; + } + $runtime.fail(); + }; + return last$r; +}; +const init = () => v => { + if (v.tag === "Cons") { + if (v._2.tag === "Nil") { return Data$dList$dTypes.Nil; } + return Data$dList$dTypes.$List("Cons", v._1, init()(v._2)); + } + $runtime.fail(); +}; +const head = () => v => { + if (v.tag === "Cons") { return v._1; } + $runtime.fail(); +}; +export {head, init, last, tail}; diff --git a/.storybook/purescript-indexer/output-es/Data.List.Types/index.js b/.storybook/purescript-indexer/output-es/Data.List.Types/index.js new file mode 100644 index 0000000..ae5e264 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.List.Types/index.js @@ -0,0 +1,947 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dNonEmpty from "../Data.NonEmpty/index.js"; +import * as Data$dOrdering from "../Data.Ordering/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +const $List = (tag, _1, _2) => ({tag, _1, _2}); +const identity = x => x; +const Nil = /* #__PURE__ */ $List("Nil"); +const Cons = value0 => value1 => $List("Cons", value0, value1); +const NonEmptyList = x => x; +const toList = v => $List("Cons", v._1, v._2); +const newtypeNonEmptyList = {Coercible0: () => undefined}; +const nelCons = a => v => Data$dNonEmpty.$NonEmpty(a, $List("Cons", v._1, v._2)); +const 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; + const $4 = (chunksAcc, xs) => { + 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") { + if (v2._1.tag === "Cons") { + if (v2._1._2.tag === "Cons") { + if (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; + continue; + } + reverseUnrolledMap$c = false; + reverseUnrolledMap$r = v3; + continue; + } + reverseUnrolledMap$c = false; + reverseUnrolledMap$r = v3; + continue; + } + reverseUnrolledMap$c = false; + reverseUnrolledMap$r = v3; + continue; + }; + return reverseUnrolledMap$r; + }; + return reverseUnrolledMap(chunksAcc)((() => { + if (xs.tag === "Cons") { + if (xs._2.tag === "Cons") { + if (xs._2._2.tag === "Nil") { return $List("Cons", f(xs._1), $List("Cons", f(xs._2._1), Nil)); } + return Nil; + } + if (xs._2.tag === "Nil") { return $List("Cons", f(xs._1), Nil); } + return Nil; + } + return Nil; + })()); + }; + if (v1.tag === "Cons") { + if (v1._2.tag === "Cons") { + if (v1._2._2.tag === "Cons") { + chunkedRevMap$a0 = $List("Cons", v1, v); + chunkedRevMap$a1 = v1._2._2._2; + continue; + } + chunkedRevMap$c = false; + chunkedRevMap$r = $4(v, v1); + continue; + } + chunkedRevMap$c = false; + chunkedRevMap$r = $4(v, v1); + continue; + } + chunkedRevMap$c = false; + chunkedRevMap$r = $4(v, v1); + continue; + }; + return chunkedRevMap$r; + }; + return chunkedRevMap(Nil); +}; +const functorList = {map: listMap}; +const functorNonEmptyList = /* #__PURE__ */ Data$dNonEmpty.functorNonEmpty(functorList); +const foldableList = { + foldr: f => b => { + const $2 = foldableList.foldl(b$1 => a => f(a)(b$1))(b); + const $3 = (() => { + 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; + } + $runtime.fail(); + }; + return go$r; + }; + return go(Nil); + })(); + return x => $2($3(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; + } + $runtime.fail(); + }; + return go$r; + }; + return go; + }, + foldMap: dictMonoid => { + const append2 = dictMonoid.Semigroup0().append; + return f => foldableList.foldl(acc => { + const $4 = append2(acc); + return x => $4(f(x)); + })(dictMonoid.mempty); + } +}; +const foldableNonEmptyList = { + foldMap: dictMonoid => { + const append1 = dictMonoid.Semigroup0().append; + const foldMap1 = foldableList.foldMap(dictMonoid); + return f => v => append1(f(v._1))(foldMap1(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; + } + $runtime.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)) +}; +const foldableWithIndexList = { + foldrWithIndex: f => b => xs => { + const 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 = go$a1; + if (v.tag === "Nil") { + go$c = false; + go$r = b$1; + continue; + } + if (v.tag === "Cons") { + go$a0 = Data$dTuple.$Tuple(b$1._1 + 1 | 0, $List("Cons", v._1, b$1._2)); + go$a1 = v._2; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go(Data$dTuple.$Tuple(0, Nil))(xs); + })(); + 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 = Data$dTuple.$Tuple(b$1._1 - 1 | 0, f(b$1._1 - 1 | 0)(v$1._1)(b$1._2)); + go$a1 = v$1._2; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go(Data$dTuple.$Tuple(v._1, b))(v._2)._2; + }, + foldlWithIndex: f => acc => { + const $2 = (() => { + 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 = Data$dTuple.$Tuple(b._1 + 1 | 0, f(b._1)(b._2)(v._1)); + go$a1 = v._2; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go(Data$dTuple.$Tuple(0, acc)); + })(); + return x => $2(x)._2; + }, + foldMapWithIndex: dictMonoid => { + const append2 = dictMonoid.Semigroup0().append; + return f => foldableWithIndexList.foldlWithIndex(i => acc => { + const $5 = append2(acc); + const $6 = f(i); + return x => $5($6(x)); + })(dictMonoid.mempty); + }, + Foldable0: () => foldableList +}; +const foldableWithIndexNonEmpty = /* #__PURE__ */ Data$dNonEmpty.foldableWithIndexNonEmpty(foldableWithIndexList); +const foldableWithIndexNonEmptyList = { + foldMapWithIndex: dictMonoid => { + const foldMapWithIndex1 = foldableWithIndexNonEmpty.foldMapWithIndex(dictMonoid); + return f => v => foldMapWithIndex1(x => f((() => { + if (x.tag === "Nothing") { return 0; } + if (x.tag === "Just") { return 1 + x._1 | 0; } + $runtime.fail(); + })()))(v); + }, + foldlWithIndex: f => b => v => foldableWithIndexNonEmpty.foldlWithIndex(x => f((() => { + if (x.tag === "Nothing") { return 0; } + if (x.tag === "Just") { return 1 + x._1 | 0; } + $runtime.fail(); + })()))(b)(v), + foldrWithIndex: f => b => v => foldableWithIndexNonEmpty.foldrWithIndex(x => f((() => { + if (x.tag === "Nothing") { return 0; } + if (x.tag === "Just") { return 1 + x._1 | 0; } + $runtime.fail(); + })()))(b)(v), + Foldable0: () => foldableNonEmptyList +}; +const functorWithIndexList = {mapWithIndex: f => foldableWithIndexList.foldrWithIndex(i => x => acc => $List("Cons", f(i)(x), acc))(Nil), Functor0: () => functorList}; +const mapWithIndex = /* #__PURE__ */ (() => Data$dNonEmpty.functorWithIndex(functorWithIndexList).mapWithIndex)(); +const functorWithIndexNonEmptyList = { + mapWithIndex: fn => v => mapWithIndex(x => fn((() => { + if (x.tag === "Nothing") { return 0; } + if (x.tag === "Just") { return 1 + x._1 | 0; } + $runtime.fail(); + })()))(v), + Functor0: () => functorNonEmptyList +}; +const semigroupList = {append: xs => ys => foldableList.foldr(Cons)(ys)(xs)}; +const monoidList = {mempty: Nil, Semigroup0: () => semigroupList}; +const semigroupNonEmptyList = {append: v => as$p => Data$dNonEmpty.$NonEmpty(v._1, foldableList.foldr(Cons)($List("Cons", as$p._1, as$p._2))(v._2))}; +const showList = dictShow => ( + { + show: v => { + if (v.tag === "Nil") { return "Nil"; } + 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$1 = go$a1; + if (v$1.tag === "Nil") { + go$c = false; + go$r = b; + continue; + } + if (v$1.tag === "Cons") { + go$a0 = (() => { + if (b.init) { return {init: false, acc: v$1._1}; } + return {init: false, acc: b.acc + (" : " + v$1._1)}; + })(); + go$a1 = v$1._2; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return "(" + (go({init: true, acc: ""})(listMap(dictShow.show)(v)).acc + " : Nil)"); + } + } +); +const showNonEmptyList = dictShow => { + const $1 = showList(dictShow); + return {show: v => "(NonEmptyList (NonEmpty " + (dictShow.show(v._1) + (" " + ($1.show(v._2) + ")"))) + ")"}; +}; +const traversableList = { + traverse: dictApplicative => { + const Apply0 = dictApplicative.Apply0(); + const map1 = Apply0.Functor0().map; + const map = Apply0.Functor0().map; + return f => { + const $5 = map1((() => { + 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 = $List("Cons", v._1, b); + go$a1 = v._2; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go(Nil); + })()); + const $6 = (() => { + 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 = Apply0.apply(map(b$1 => a => $List("Cons", a, b$1))(b))(f(v._1)); + go$a1 = v._2; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go(dictApplicative.pure(Nil)); + })(); + return x => $5($6(x)); + }; + }, + sequence: dictApplicative => traversableList.traverse(dictApplicative)(identity), + Functor0: () => functorList, + Foldable1: () => foldableList +}; +const traversableNonEmptyList = /* #__PURE__ */ Data$dNonEmpty.traversableNonEmpty(traversableList); +const traversableWithIndexList = { + traverseWithIndex: dictApplicative => { + const Apply0 = dictApplicative.Apply0(); + const map1 = Apply0.Functor0().map; + const map = Apply0.Functor0().map; + return f => { + const $5 = map1((() => { + 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 = $List("Cons", v._1, b); + go$a1 = v._2; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go(Nil); + })()); + const $6 = foldableWithIndexList.foldlWithIndex(i => acc => { + const $8 = f(i); + return x => Apply0.apply(map(b => a => $List("Cons", a, b))(acc))($8(x)); + })(dictApplicative.pure(Nil)); + return x => $5($6(x)); + }; + }, + FunctorWithIndex0: () => functorWithIndexList, + FoldableWithIndex1: () => foldableWithIndexList, + Traversable2: () => traversableList +}; +const traverseWithIndex = /* #__PURE__ */ (() => Data$dNonEmpty.traversableWithIndexNonEmpty(traversableWithIndexList).traverseWithIndex)(); +const traversableWithIndexNonEmptyList = { + traverseWithIndex: dictApplicative => { + const map1 = dictApplicative.Apply0().Functor0().map; + const traverseWithIndex1 = traverseWithIndex(dictApplicative); + return f => v => map1(NonEmptyList)(traverseWithIndex1(x => f((() => { + if (x.tag === "Nothing") { return 0; } + if (x.tag === "Just") { return 1 + x._1 | 0; } + $runtime.fail(); + })()))(v)); + }, + FunctorWithIndex0: () => functorWithIndexNonEmptyList, + FoldableWithIndex1: () => foldableWithIndexNonEmptyList, + Traversable2: () => traversableNonEmptyList +}; +const unfoldable1List = { + unfoldr1: f => 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 source = go$a0, memo = go$a1; + const v = f(source); + if (v._2.tag === "Just") { + go$a0 = v._2._1; + go$a1 = $List("Cons", v._1, memo); + continue; + } + if (v._2.tag === "Nothing") { + const go$1 = go$1$a0$copy => go$1$a1$copy => { + let go$1$a0 = go$1$a0$copy, go$1$a1 = go$1$a1$copy, go$1$c = true, go$1$r; + while (go$1$c) { + const b$1 = go$1$a0, v$1 = go$1$a1; + if (v$1.tag === "Nil") { + go$1$c = false; + go$1$r = b$1; + continue; + } + if (v$1.tag === "Cons") { + go$1$a0 = $List("Cons", v$1._1, b$1); + go$1$a1 = v$1._2; + continue; + } + $runtime.fail(); + }; + return go$1$r; + }; + go$c = false; + go$r = go$1(Nil)($List("Cons", v._1, memo)); + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go(b)(Nil); + } +}; +const unfoldableList = { + unfoldr: f => 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 source = go$a0, memo = go$a1; + const v = f(source); + if (v.tag === "Nothing") { + const go$1 = go$1$a0$copy => go$1$a1$copy => { + let go$1$a0 = go$1$a0$copy, go$1$a1 = go$1$a1$copy, go$1$c = true, go$1$r; + while (go$1$c) { + const b$1 = go$1$a0, v$1 = go$1$a1; + if (v$1.tag === "Nil") { + go$1$c = false; + go$1$r = b$1; + continue; + } + if (v$1.tag === "Cons") { + go$1$a0 = $List("Cons", v$1._1, b$1); + go$1$a1 = v$1._2; + continue; + } + $runtime.fail(); + }; + return go$1$r; + }; + go$c = false; + go$r = go$1(Nil)(memo); + continue; + } + if (v.tag === "Just") { + go$a0 = v._1._2; + go$a1 = $List("Cons", v._1._1, memo); + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go(b)(Nil); + }, + Unfoldable10: () => unfoldable1List +}; +const unfoldable1NonEmptyList = /* #__PURE__ */ Data$dNonEmpty.unfoldable1NonEmpty(unfoldableList); +const foldable1NonEmptyList = /* #__PURE__ */ Data$dNonEmpty.foldable1NonEmpty(foldableList); +const extendNonEmptyList = { + extend: f => v => Data$dNonEmpty.$NonEmpty( + f(v), + foldableList.foldr(a => v1 => ({val: $List("Cons", f(Data$dNonEmpty.$NonEmpty(a, v1.acc)), v1.val), acc: $List("Cons", a, v1.acc)}))({val: Nil, acc: Nil})(v._2).val + ), + Functor0: () => functorNonEmptyList +}; +const extendList = { + extend: v => v1 => { + if (v1.tag === "Nil") { return Nil; } + if (v1.tag === "Cons") { + return $List( + "Cons", + v(v1), + foldableList.foldr(a$p => v2 => ({val: $List("Cons", v($List("Cons", a$p, v2.acc)), v2.val), acc: $List("Cons", a$p, v2.acc)}))({val: Nil, acc: Nil})(v1._2).val + ); + } + $runtime.fail(); + }, + Functor0: () => functorList +}; +const eq1List = { + eq1: dictEq => xs => ys => { + const go = go$a0$copy => go$a1$copy => go$a2$copy => { + let go$a0 = go$a0$copy, go$a1 = go$a1$copy, go$a2 = go$a2$copy, go$c = true, go$r; + while (go$c) { + const v = go$a0, v1 = go$a1, v2 = go$a2; + if (!v2) { + go$c = false; + go$r = false; + continue; + } + if (v.tag === "Nil") { + if (v1.tag === "Nil") { + go$c = false; + go$r = v2; + continue; + } + go$c = false; + go$r = false; + continue; + } + if (v.tag === "Cons") { + if (v1.tag === "Cons") { + go$a0 = v._2; + go$a1 = v1._2; + go$a2 = v2 && dictEq.eq(v1._1)(v._1); + continue; + } + go$c = false; + go$r = false; + continue; + } + go$c = false; + go$r = false; + continue; + }; + return go$r; + }; + return go(xs)(ys)(true); + } +}; +const eq1NonEmptyList = { + eq1: dictEq => x => y => dictEq.eq(x._1)(y._1) && (() => { + const go = go$a0$copy => go$a1$copy => go$a2$copy => { + let go$a0 = go$a0$copy, go$a1 = go$a1$copy, go$a2 = go$a2$copy, go$c = true, go$r; + while (go$c) { + const v = go$a0, v1 = go$a1, v2 = go$a2; + if (!v2) { + go$c = false; + go$r = false; + continue; + } + if (v.tag === "Nil") { + if (v1.tag === "Nil") { + go$c = false; + go$r = v2; + continue; + } + go$c = false; + go$r = false; + continue; + } + if (v.tag === "Cons") { + if (v1.tag === "Cons") { + go$a0 = v._2; + go$a1 = v1._2; + go$a2 = v2 && dictEq.eq(v1._1)(v._1); + continue; + } + go$c = false; + go$r = false; + continue; + } + go$c = false; + go$r = false; + continue; + }; + return go$r; + }; + return go(x._2)(y._2)(true); + })() +}; +const eqList = dictEq => ( + { + eq: xs => ys => { + const go = go$a0$copy => go$a1$copy => go$a2$copy => { + let go$a0 = go$a0$copy, go$a1 = go$a1$copy, go$a2 = go$a2$copy, go$c = true, go$r; + while (go$c) { + const v = go$a0, v1 = go$a1, v2 = go$a2; + if (!v2) { + go$c = false; + go$r = false; + continue; + } + if (v.tag === "Nil") { + if (v1.tag === "Nil") { + go$c = false; + go$r = v2; + continue; + } + go$c = false; + go$r = false; + continue; + } + if (v.tag === "Cons") { + if (v1.tag === "Cons") { + go$a0 = v._2; + go$a1 = v1._2; + go$a2 = v2 && dictEq.eq(v1._1)(v._1); + continue; + } + go$c = false; + go$r = false; + continue; + } + go$c = false; + go$r = false; + continue; + }; + return go$r; + }; + return go(xs)(ys)(true); + } + } +); +const eqNonEmptyList = dictEq => ( + { + eq: x => y => dictEq.eq(x._1)(y._1) && (() => { + const go = go$a0$copy => go$a1$copy => go$a2$copy => { + let go$a0 = go$a0$copy, go$a1 = go$a1$copy, go$a2 = go$a2$copy, go$c = true, go$r; + while (go$c) { + const v = go$a0, v1 = go$a1, v2 = go$a2; + if (!v2) { + go$c = false; + go$r = false; + continue; + } + if (v.tag === "Nil") { + if (v1.tag === "Nil") { + go$c = false; + go$r = v2; + continue; + } + go$c = false; + go$r = false; + continue; + } + if (v.tag === "Cons") { + if (v1.tag === "Cons") { + go$a0 = v._2; + go$a1 = v1._2; + go$a2 = v2 && dictEq.eq(v1._1)(v._1); + continue; + } + go$c = false; + go$r = false; + continue; + } + go$c = false; + go$r = false; + continue; + }; + return go$r; + }; + return go(x._2)(y._2)(true); + })() + } +); +const 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 = Data$dOrdering.EQ; + continue; + } + go$c = false; + go$r = Data$dOrdering.LT; + continue; + } + if (v1.tag === "Nil") { + go$c = false; + go$r = Data$dOrdering.GT; + continue; + } + if (v.tag === "Cons") { + if (v1.tag === "Cons") { + const v2 = dictOrd.compare(v._1)(v1._1); + if (v2.tag === "EQ") { + go$a0 = v._2; + go$a1 = v1._2; + continue; + } + go$c = false; + go$r = v2; + continue; + } + $runtime.fail(); + } + $runtime.fail(); + }; + return go$r; + }; + return go(xs)(ys); + }, + Eq10: () => eq1List +}; +const ordNonEmpty = /* #__PURE__ */ Data$dNonEmpty.ordNonEmpty(ord1List); +const ord1NonEmptyList = /* #__PURE__ */ Data$dNonEmpty.ord1NonEmpty(ord1List); +const ordList = dictOrd => { + const $1 = dictOrd.Eq0(); + const eqList1 = { + eq: xs => ys => { + const go = go$a0$copy => go$a1$copy => go$a2$copy => { + let go$a0 = go$a0$copy, go$a1 = go$a1$copy, go$a2 = go$a2$copy, go$c = true, go$r; + while (go$c) { + const v = go$a0, v1 = go$a1, v2 = go$a2; + if (!v2) { + go$c = false; + go$r = false; + continue; + } + if (v.tag === "Nil") { + if (v1.tag === "Nil") { + go$c = false; + go$r = v2; + continue; + } + go$c = false; + go$r = false; + continue; + } + if (v.tag === "Cons") { + if (v1.tag === "Cons") { + go$a0 = v._2; + go$a1 = v1._2; + go$a2 = v2 && $1.eq(v1._1)(v._1); + continue; + } + go$c = false; + go$r = false; + continue; + } + go$c = false; + go$r = false; + continue; + }; + return go$r; + }; + return go(xs)(ys)(true); + } + }; + return {compare: ord1List.compare1(dictOrd), Eq0: () => eqList1}; +}; +const ordNonEmptyList = dictOrd => ordNonEmpty(dictOrd); +const comonadNonEmptyList = {extract: v => v._1, Extend0: () => extendNonEmptyList}; +const applyList = { + apply: v => v1 => { + if (v.tag === "Nil") { return Nil; } + if (v.tag === "Cons") { return foldableList.foldr(Cons)(applyList.apply(v._2)(v1))(listMap(v._1)(v1)); } + $runtime.fail(); + }, + Functor0: () => functorList +}; +const applyNonEmptyList = { + apply: v => v1 => Data$dNonEmpty.$NonEmpty( + v._1(v1._1), + foldableList.foldr(Cons)(applyList.apply($List("Cons", v._1, v._2))(v1._2))(applyList.apply(v._2)($List("Cons", v1._1, Nil))) + ), + Functor0: () => functorNonEmptyList +}; +const bindList = { + bind: v => v1 => { + if (v.tag === "Nil") { return Nil; } + if (v.tag === "Cons") { return foldableList.foldr(Cons)(bindList.bind(v._2)(v1))(v1(v._1)); } + $runtime.fail(); + }, + Apply0: () => applyList +}; +const bindNonEmptyList = { + bind: v => f => { + const v1 = f(v._1); + return Data$dNonEmpty.$NonEmpty( + v1._1, + foldableList.foldr(Cons)(bindList.bind(v._2)(x => { + const $4 = f(x); + return $List("Cons", $4._1, $4._2); + }))(v1._2) + ); + }, + Apply0: () => applyNonEmptyList +}; +const applicativeList = {pure: a => $List("Cons", a, Nil), Apply0: () => applyList}; +const monadList = {Applicative0: () => applicativeList, Bind1: () => bindList}; +const altNonEmptyList = /* #__PURE__ */ (() => ({alt: semigroupNonEmptyList.append, Functor0: () => functorNonEmptyList}))(); +const altList = /* #__PURE__ */ (() => ({alt: semigroupList.append, Functor0: () => functorList}))(); +const plusList = {empty: Nil, Alt0: () => altList}; +const alternativeList = {Applicative0: () => applicativeList, Plus1: () => plusList}; +const monadPlusList = {Monad0: () => monadList, Alternative1: () => alternativeList}; +const applicativeNonEmptyList = {pure: x => Data$dNonEmpty.$NonEmpty(x, Nil), Apply0: () => applyNonEmptyList}; +const monadNonEmptyList = {Applicative0: () => applicativeNonEmptyList, Bind1: () => bindNonEmptyList}; +const traversable1NonEmptyList = { + traverse1: dictApply => { + const Functor0 = dictApply.Functor0(); + const map = dictApply.Functor0().map; + return f => v => Functor0.map(v1 => { + 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$1 = go$a1; + if (v$1.tag === "Nil") { + go$c = false; + go$r = b; + continue; + } + if (v$1.tag === "Cons") { + go$a0 = Data$dNonEmpty.$NonEmpty(v$1._1, $List("Cons", b._1, b._2)); + go$a1 = v$1._2; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go(Data$dNonEmpty.$NonEmpty(v1._1, Nil))(v1._2); + })((() => { + 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$1 = go$a1; + if (v$1.tag === "Nil") { + go$c = false; + go$r = b; + continue; + } + if (v$1.tag === "Cons") { + go$a0 = dictApply.apply(map(b$1 => a => Data$dNonEmpty.$NonEmpty(a, $List("Cons", b$1._1, b$1._2)))(b))(f(v$1._1)); + go$a1 = v$1._2; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go(Functor0.map(applicativeNonEmptyList.pure)(f(v._1)))(v._2); + })()); + }, + sequence1: dictApply => traversable1NonEmptyList.traverse1(dictApply)(identity), + Foldable10: () => foldable1NonEmptyList, + Traversable1: () => traversableNonEmptyList +}; +export { + $List, + Cons, + Nil, + NonEmptyList, + altList, + altNonEmptyList, + alternativeList, + applicativeList, + applicativeNonEmptyList, + applyList, + applyNonEmptyList, + bindList, + bindNonEmptyList, + comonadNonEmptyList, + eq1List, + eq1NonEmptyList, + eqList, + eqNonEmptyList, + extendList, + extendNonEmptyList, + foldable1NonEmptyList, + foldableList, + foldableNonEmptyList, + foldableWithIndexList, + foldableWithIndexNonEmpty, + foldableWithIndexNonEmptyList, + functorList, + functorNonEmptyList, + functorWithIndexList, + functorWithIndexNonEmptyList, + identity, + listMap, + mapWithIndex, + monadList, + monadNonEmptyList, + monadPlusList, + monoidList, + nelCons, + newtypeNonEmptyList, + ord1List, + ord1NonEmptyList, + ordList, + ordNonEmpty, + ordNonEmptyList, + plusList, + semigroupList, + semigroupNonEmptyList, + showList, + showNonEmptyList, + toList, + traversable1NonEmptyList, + traversableList, + traversableNonEmptyList, + traversableWithIndexList, + traversableWithIndexNonEmptyList, + traverseWithIndex, + unfoldable1List, + unfoldable1NonEmptyList, + unfoldableList +}; diff --git a/.storybook/purescript-indexer/output-es/Data.List.ZipList/index.js b/.storybook/purescript-indexer/output-es/Data.List.ZipList/index.js new file mode 100644 index 0000000..073ca20 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.List.ZipList/index.js @@ -0,0 +1,47 @@ +// | This module defines the type of _zip lists_, i.e. linked lists +// | with a zippy `Applicative` instance. +import * as $runtime from "../runtime.js"; +import * as Data$dFunction from "../Data.Function/index.js"; +import * as Data$dList$dLazy from "../Data.List.Lazy/index.js"; +import * as Data$dList$dLazy$dTypes from "../Data.List.Lazy.Types/index.js"; +import * as Partial from "../Partial/index.js"; +const ZipList = x => x; +const traversableZipList = Data$dList$dLazy$dTypes.traversableList; +const showZipList = dictShow => { + const show = Data$dList$dLazy$dTypes.showList(dictShow).show; + return {show: v => "(ZipList " + (show(v) + ")")}; +}; +const semigroupZipList = Data$dList$dLazy$dTypes.semigroupList; +const ordZipList = dictOrd => Data$dList$dLazy$dTypes.ordList(dictOrd); +const newtypeZipList = {Coercible0: () => undefined}; +const monoidZipList = Data$dList$dLazy$dTypes.monoidList; +const functorZipList = Data$dList$dLazy$dTypes.functorList; +const foldableZipList = Data$dList$dLazy$dTypes.foldableList; +const eqZipList = dictEq => ({eq: Data$dList$dLazy$dTypes.eq1List.eq1(dictEq)}); +const applyZipList = {apply: v => v1 => Data$dList$dLazy.zipWith(Data$dFunction.apply)(v)(v1), Functor0: () => Data$dList$dLazy$dTypes.functorList}; +const zipListIsNotBind = () => ({bind: Partial._crashWith("bind: unreachable"), Apply0: () => applyZipList}); +const applicativeZipList = {pure: x => Data$dList$dLazy.repeat(x), Apply0: () => applyZipList}; +const altZipList = { + alt: v => v1 => Data$dList$dLazy$dTypes.semigroupList.append(v)(Data$dList$dLazy.drop(Data$dList$dLazy.length(v))(v1)), + Functor0: () => Data$dList$dLazy$dTypes.functorList +}; +const plusZipList = {empty: Data$dList$dLazy$dTypes.nil, Alt0: () => altZipList}; +const alternativeZipList = {Applicative0: () => applicativeZipList, Plus1: () => plusZipList}; +export { + ZipList, + altZipList, + alternativeZipList, + applicativeZipList, + applyZipList, + eqZipList, + foldableZipList, + functorZipList, + monoidZipList, + newtypeZipList, + ordZipList, + plusZipList, + semigroupZipList, + showZipList, + traversableZipList, + zipListIsNotBind +}; diff --git a/.storybook/purescript-indexer/output-es/Data.List/index.js b/.storybook/purescript-indexer/output-es/Data.List/index.js new file mode 100644 index 0000000..ea45e33 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.List/index.js @@ -0,0 +1,1042 @@ +// | This module defines a type of _strict_ linked lists, and associated helper +// | functions and type class instances. +// | +// | _Note_: Depending on your use-case, you may prefer to use +// | `Data.Sequence` instead, which might give better performance for certain +// | use cases. This module is an improvement over `Data.Array` when working with +// | immutable lists of data in a purely-functional setting, but does not have +// | good random-access performance. +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dRec$dClass from "../Control.Monad.Rec.Class/index.js"; +import * as Data$dList$dInternal from "../Data.List.Internal/index.js"; +import * as Data$dList$dTypes from "../Data.List.Types/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dNonEmpty from "../Data.NonEmpty/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +const tailRecM2 = f => a => b => Control$dMonad$dRec$dClass.monadRecMaybe.tailRecM(o => f(o.a)(o.b))({a: a, b: b}); +const any = /* #__PURE__ */ (() => Data$dList$dTypes.foldableList.foldMap((() => { + const semigroupDisj1 = {append: v => v1 => v || v1}; + return {mempty: false, Semigroup0: () => semigroupDisj1}; +})()))(); +const identity = x => x; +const Pattern = x => x; +const updateAt = v => v1 => v2 => { + if (v2.tag === "Cons") { + if (v === 0) { return Data$dMaybe.$Maybe("Just", Data$dList$dTypes.$List("Cons", v1, v2._2)); } + const $3 = updateAt(v - 1 | 0)(v1)(v2._2); + if ($3.tag === "Just") { return Data$dMaybe.$Maybe("Just", Data$dList$dTypes.$List("Cons", v2._1, $3._1)); } + return Data$dMaybe.Nothing; + } + return Data$dMaybe.Nothing; +}; +const unzip = /* #__PURE__ */ (() => Data$dList$dTypes.foldableList.foldr(v => v1 => Data$dTuple.$Tuple( + Data$dList$dTypes.$List("Cons", v._1, v1._1), + Data$dList$dTypes.$List("Cons", v._2, v1._2) +))(Data$dTuple.$Tuple(Data$dList$dTypes.Nil, Data$dList$dTypes.Nil)))(); +const uncons = v => { + if (v.tag === "Nil") { return Data$dMaybe.Nothing; } + if (v.tag === "Cons") { return Data$dMaybe.$Maybe("Just", {head: v._1, tail: v._2}); } + $runtime.fail(); +}; +const toUnfoldable = dictUnfoldable => dictUnfoldable.unfoldr(xs => { + if (xs.tag === "Nil") { return Data$dMaybe.Nothing; } + if (xs.tag === "Cons") { return Data$dMaybe.$Maybe("Just", Data$dTuple.$Tuple(xs._1, xs._2)); } + $runtime.fail(); +}); +const tail = v => { + if (v.tag === "Nil") { return Data$dMaybe.Nothing; } + if (v.tag === "Cons") { return Data$dMaybe.$Maybe("Just", v._2); } + $runtime.fail(); +}; +const stripPrefix = dictEq => v => s => tailRecM2(prefix => input => { + if (input.tag === "Cons") { + if (prefix.tag === "Cons") { + if (dictEq.eq(prefix._1)(input._1)) { return Data$dMaybe.$Maybe("Just", Control$dMonad$dRec$dClass.$Step("Loop", {a: prefix._2, b: input._2})); } + return Data$dMaybe.Nothing; + } + if (prefix.tag === "Nil") { return Data$dMaybe.$Maybe("Just", Control$dMonad$dRec$dClass.$Step("Done", input)); } + return Data$dMaybe.Nothing; + } + if (prefix.tag === "Nil") { return Data$dMaybe.$Maybe("Just", Control$dMonad$dRec$dClass.$Step("Done", input)); } + return Data$dMaybe.Nothing; +})(v)(s); +const span = v => v1 => { + if (v1.tag === "Cons") { + if (v(v1._1)) { + const v2 = span(v)(v1._2); + return {init: Data$dList$dTypes.$List("Cons", v1._1, v2.init), rest: v2.rest}; + } + return {init: Data$dList$dTypes.Nil, rest: v1}; + } + return {init: Data$dList$dTypes.Nil, rest: v1}; +}; +const snoc = xs => x => Data$dList$dTypes.foldableList.foldr(Data$dList$dTypes.Cons)(Data$dList$dTypes.$List("Cons", x, Data$dList$dTypes.Nil))(xs); +const singleton = a => Data$dList$dTypes.$List("Cons", a, Data$dList$dTypes.Nil); +const sortBy = cmp => { + const merge = v => v1 => { + if (v.tag === "Cons") { + if (v1.tag === "Cons") { + if (cmp(v._1)(v1._1).tag === "GT") { return Data$dList$dTypes.$List("Cons", v1._1, merge(v)(v1._2)); } + return Data$dList$dTypes.$List("Cons", v._1, merge(v._2)(v1)); + } + if (v1.tag === "Nil") { return v; } + $runtime.fail(); + } + if (v.tag === "Nil") { return v1; } + if (v1.tag === "Nil") { return v; } + $runtime.fail(); + }; + const mergePairs = v => { + if (v.tag === "Cons") { + if (v._2.tag === "Cons") { return Data$dList$dTypes.$List("Cons", merge(v._1)(v._2._1), mergePairs(v._2._2)); } + return v; + } + return v; + }; + const mergeAll = mergeAll$a0$copy => { + let mergeAll$a0 = mergeAll$a0$copy, mergeAll$c = true, mergeAll$r; + while (mergeAll$c) { + const v = mergeAll$a0; + if (v.tag === "Cons") { + if (v._2.tag === "Nil") { + mergeAll$c = false; + mergeAll$r = v._1; + continue; + } + mergeAll$a0 = mergePairs(v); + continue; + } + mergeAll$a0 = mergePairs(v); + continue; + }; + return mergeAll$r; + }; + const $sequedesceascen = ($sequedesceascen$b$copy, $sequedesceascen$a0$copy, $sequedesceascen$a1$copy, $sequedesceascen$a2$copy) => { + let $sequedesceascen$b = $sequedesceascen$b$copy; + let $sequedesceascen$a0 = $sequedesceascen$a0$copy; + let $sequedesceascen$a1 = $sequedesceascen$a1$copy; + let $sequedesceascen$a2 = $sequedesceascen$a2$copy; + let $sequedesceascen$c = true; + let $sequedesceascen$r; + while ($sequedesceascen$c) { + if ($sequedesceascen$b === 0) { + const v = $sequedesceascen$a0; + if (v.tag === "Cons") { + if (v._2.tag === "Cons") { + if (cmp(v._1)(v._2._1).tag === "GT") { + $sequedesceascen$b = 1; + $sequedesceascen$a0 = v._2._1; + $sequedesceascen$a1 = Data$dList$dTypes.$List("Cons", v._1, Data$dList$dTypes.Nil); + $sequedesceascen$a2 = v._2._2; + continue; + } + $sequedesceascen$b = 2; + $sequedesceascen$a0 = v._2._1; + $sequedesceascen$a1 = v1 => Data$dList$dTypes.$List("Cons", v._1, v1); + $sequedesceascen$a2 = v._2._2; + continue; + } + $sequedesceascen$c = false; + $sequedesceascen$r = Data$dList$dTypes.$List("Cons", v, Data$dList$dTypes.Nil); + continue; + } + $sequedesceascen$c = false; + $sequedesceascen$r = Data$dList$dTypes.$List("Cons", v, Data$dList$dTypes.Nil); + continue; + } + if ($sequedesceascen$b === 1) { + const v = $sequedesceascen$a0, v1 = $sequedesceascen$a1, v2 = $sequedesceascen$a2; + if (v2.tag === "Cons") { + if (cmp(v)(v2._1).tag === "GT") { + $sequedesceascen$b = 1; + $sequedesceascen$a0 = v2._1; + $sequedesceascen$a1 = Data$dList$dTypes.$List("Cons", v, v1); + $sequedesceascen$a2 = v2._2; + continue; + } + $sequedesceascen$c = false; + $sequedesceascen$r = Data$dList$dTypes.$List("Cons", Data$dList$dTypes.$List("Cons", v, v1), sequences(v2)); + continue; + } + $sequedesceascen$c = false; + $sequedesceascen$r = Data$dList$dTypes.$List("Cons", Data$dList$dTypes.$List("Cons", v, v1), sequences(v2)); + continue; + } + if ($sequedesceascen$b === 2) { + const v = $sequedesceascen$a0, v1 = $sequedesceascen$a1, v2 = $sequedesceascen$a2; + if (v2.tag === "Cons") { + if ( + (() => { + const $8 = cmp(v)(v2._1); + return $8.tag === "LT" || !($8.tag === "GT"); + })() + ) { + $sequedesceascen$b = 2; + $sequedesceascen$a0 = v2._1; + $sequedesceascen$a1 = ys => v1(Data$dList$dTypes.$List("Cons", v, ys)); + $sequedesceascen$a2 = v2._2; + continue; + } + $sequedesceascen$c = false; + $sequedesceascen$r = Data$dList$dTypes.$List("Cons", v1(Data$dList$dTypes.$List("Cons", v, Data$dList$dTypes.Nil)), sequences(v2)); + continue; + } + $sequedesceascen$c = false; + $sequedesceascen$r = Data$dList$dTypes.$List("Cons", v1(Data$dList$dTypes.$List("Cons", v, Data$dList$dTypes.Nil)), sequences(v2)); + continue; + } + }; + return $sequedesceascen$r; + }; + const sequences = v => $sequedesceascen(0, v); + const descending = v => v1 => v2 => $sequedesceascen(1, v, v1, v2); + const ascending = v => v1 => v2 => $sequedesceascen(2, v, v1, v2); + return x => mergeAll(sequences(x)); +}; +const sort = dictOrd => xs => sortBy(dictOrd.compare)(xs); +const showPattern = dictShow => { + const show = Data$dList$dTypes.showList(dictShow).show; + return {show: v => "(Pattern " + (show(v) + ")")}; +}; +const reverse = /* #__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 = Data$dList$dTypes.$List("Cons", v1._1, v); + go$a1 = v1._2; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go(Data$dList$dTypes.Nil); +})(); +const take = /* #__PURE__ */ (() => { + const go = go$a0$copy => go$a1$copy => go$a2$copy => { + let go$a0 = go$a0$copy, go$a1 = go$a1$copy, go$a2 = go$a2$copy, go$c = true, go$r; + while (go$c) { + const v = go$a0, v1 = go$a1, v2 = go$a2; + if (v1 < 1) { + go$c = false; + go$r = reverse(v); + continue; + } + if (v2.tag === "Nil") { + go$c = false; + go$r = reverse(v); + continue; + } + if (v2.tag === "Cons") { + go$a0 = Data$dList$dTypes.$List("Cons", v2._1, v); + go$a1 = v1 - 1 | 0; + go$a2 = v2._2; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go(Data$dList$dTypes.Nil); +})(); +const takeWhile = p => { + 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 === "Cons") { + if (p(v1._1)) { + go$a0 = Data$dList$dTypes.$List("Cons", v1._1, v); + go$a1 = v1._2; + continue; + } + go$c = false; + go$r = reverse(v); + continue; + } + go$c = false; + go$r = reverse(v); + continue; + }; + return go$r; + }; + return go(Data$dList$dTypes.Nil); +}; +const unsnoc = lst => { + 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") { + go$c = false; + go$r = Data$dMaybe.Nothing; + continue; + } + if (v.tag === "Cons") { + if (v._2.tag === "Nil") { + go$c = false; + go$r = Data$dMaybe.$Maybe("Just", {revInit: v1, last: v._1}); + continue; + } + go$a0 = v._2; + go$a1 = Data$dList$dTypes.$List("Cons", v._1, v1); + continue; + } + $runtime.fail(); + }; + return go$r; + }; + const $2 = go(lst)(Data$dList$dTypes.Nil); + if ($2.tag === "Just") { return Data$dMaybe.$Maybe("Just", {init: reverse($2._1.revInit), last: $2._1.last}); } + return Data$dMaybe.Nothing; +}; +const zipWith = f => xs => ys => { + const go = go$a0$copy => go$a1$copy => go$a2$copy => { + let go$a0 = go$a0$copy, go$a1 = go$a1$copy, go$a2 = go$a2$copy, go$c = true, go$r; + while (go$c) { + const v = go$a0, v1 = go$a1, v2 = go$a2; + if (v.tag === "Nil") { + go$c = false; + go$r = v2; + continue; + } + if (v1.tag === "Nil") { + go$c = false; + go$r = v2; + continue; + } + if (v.tag === "Cons") { + if (v1.tag === "Cons") { + go$a0 = v._2; + go$a1 = v1._2; + go$a2 = Data$dList$dTypes.$List("Cons", f(v._1)(v1._1), v2); + continue; + } + $runtime.fail(); + } + $runtime.fail(); + }; + return go$r; + }; + return reverse(go(xs)(ys)(Data$dList$dTypes.Nil)); +}; +const zip = /* #__PURE__ */ zipWith(Data$dTuple.Tuple); +const zipWithA = dictApplicative => { + const sequence1 = Data$dList$dTypes.traversableList.traverse(dictApplicative)(Data$dList$dTypes.identity); + return f => xs => ys => sequence1(zipWith(f)(xs)(ys)); +}; +const range = start => end => { + if (start === end) { return Data$dList$dTypes.$List("Cons", start, Data$dList$dTypes.Nil); } + const go = go$a0$copy => go$a1$copy => go$a2$copy => go$a3$copy => { + let go$a0 = go$a0$copy, go$a1 = go$a1$copy, go$a2 = go$a2$copy, go$a3 = go$a3$copy, go$c = true, go$r; + while (go$c) { + const s = go$a0, e = go$a1, step = go$a2, rest = go$a3; + if (s === e) { + go$c = false; + go$r = Data$dList$dTypes.$List("Cons", s, rest); + continue; + } + go$a0 = s + step | 0; + go$a1 = e; + go$a2 = step; + go$a3 = Data$dList$dTypes.$List("Cons", s, rest); + continue; + }; + return go$r; + }; + return go(end)(start)((() => { + if (start > end) { return 1; } + return -1; + })())(Data$dList$dTypes.Nil); +}; +const partition = p => xs => Data$dList$dTypes.foldableList.foldr(x => v => { + if (p(x)) { return {no: v.no, yes: Data$dList$dTypes.$List("Cons", x, v.yes)}; } + return {no: Data$dList$dTypes.$List("Cons", x, v.no), yes: v.yes}; +})({no: Data$dList$dTypes.Nil, yes: Data$dList$dTypes.Nil})(xs); +const $$null = v => v.tag === "Nil"; +const nubBy = p => { + const go = go$a0$copy => go$a1$copy => go$a2$copy => { + let go$a0 = go$a0$copy, go$a1 = go$a1$copy, go$a2 = go$a2$copy, go$c = true, go$r; + while (go$c) { + const v = go$a0, v1 = go$a1, v2 = go$a2; + if (v2.tag === "Nil") { + go$c = false; + go$r = v1; + continue; + } + if (v2.tag === "Cons") { + const v3 = Data$dList$dInternal.insertAndLookupBy(p)(v2._1)(v); + if (v3.found) { + go$a0 = v3.result; + go$a1 = v1; + go$a2 = v2._2; + continue; + } + go$a0 = v3.result; + go$a1 = Data$dList$dTypes.$List("Cons", v2._1, v1); + go$a2 = v2._2; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + const $2 = go(Data$dList$dInternal.Leaf)(Data$dList$dTypes.Nil); + return x => reverse($2(x)); +}; +const nub = dictOrd => nubBy(dictOrd.compare); +const newtypePattern = {Coercible0: () => undefined}; +const mapMaybe = 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 v = go$a0, v1 = go$a1; + if (v1.tag === "Nil") { + go$c = false; + go$r = reverse(v); + continue; + } + if (v1.tag === "Cons") { + const v2 = f(v1._1); + if (v2.tag === "Nothing") { + go$a0 = v; + go$a1 = v1._2; + continue; + } + if (v2.tag === "Just") { + go$a0 = Data$dList$dTypes.$List("Cons", v2._1, v); + go$a1 = v1._2; + continue; + } + $runtime.fail(); + } + $runtime.fail(); + }; + return go$r; + }; + return go(Data$dList$dTypes.Nil); +}; +const manyRec = dictMonadRec => { + const bind1 = dictMonadRec.Monad0().Bind1().bind; + return dictAlternative => { + const Alt0 = dictAlternative.Plus1().Alt0(); + const map1 = Alt0.Functor0().map; + const pure = dictAlternative.Applicative0().pure; + return p => dictMonadRec.tailRecM(acc => bind1(Alt0.alt(map1(Control$dMonad$dRec$dClass.Loop)(p))(pure(Control$dMonad$dRec$dClass.$Step("Done", Data$dUnit.unit))))(aa => pure(Control$dMonad$dRec$dClass.bifunctorStep.bimap(v => Data$dList$dTypes.$List( + "Cons", + v, + acc + ))(v => reverse(acc))(aa))))(Data$dList$dTypes.Nil); + }; +}; +const someRec = dictMonadRec => { + const manyRec1 = manyRec(dictMonadRec); + return dictAlternative => { + const apply = dictAlternative.Applicative0().Apply0().apply; + const map1 = dictAlternative.Plus1().Alt0().Functor0().map; + const manyRec2 = manyRec1(dictAlternative); + return v => apply(map1(Data$dList$dTypes.Cons)(v))(manyRec2(v)); + }; +}; +const some = dictAlternative => { + const apply = dictAlternative.Applicative0().Apply0().apply; + const map1 = dictAlternative.Plus1().Alt0().Functor0().map; + return dictLazy => v => apply(map1(Data$dList$dTypes.Cons)(v))(dictLazy.defer(v1 => many(dictAlternative)(dictLazy)(v))); +}; +const many = dictAlternative => { + const alt = dictAlternative.Plus1().Alt0().alt; + const pure = dictAlternative.Applicative0().pure; + return dictLazy => v => alt(some(dictAlternative)(dictLazy)(v))(pure(Data$dList$dTypes.Nil)); +}; +const length = /* #__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 b = go$a0, v = go$a1; + if (v.tag === "Nil") { + go$c = false; + go$r = b; + continue; + } + if (v.tag === "Cons") { + go$a0 = b + 1 | 0; + go$a1 = v._2; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go(0); +})(); +const last = last$a0$copy => { + let last$a0 = last$a0$copy, last$c = true, last$r; + while (last$c) { + const v = last$a0; + if (v.tag === "Cons") { + if (v._2.tag === "Nil") { + last$c = false; + last$r = Data$dMaybe.$Maybe("Just", v._1); + continue; + } + last$a0 = v._2; + continue; + } + last$c = false; + last$r = Data$dMaybe.Nothing; + continue; + }; + return last$r; +}; +const insertBy = v => v1 => v2 => { + if (v2.tag === "Nil") { return Data$dList$dTypes.$List("Cons", v1, Data$dList$dTypes.Nil); } + if (v2.tag === "Cons") { + if (v(v1)(v2._1).tag === "GT") { return Data$dList$dTypes.$List("Cons", v2._1, insertBy(v)(v1)(v2._2)); } + return Data$dList$dTypes.$List("Cons", v1, v2); + } + $runtime.fail(); +}; +const insertAt = v => v1 => v2 => { + if (v === 0) { return Data$dMaybe.$Maybe("Just", Data$dList$dTypes.$List("Cons", v1, v2)); } + if (v2.tag === "Cons") { + const $3 = insertAt(v - 1 | 0)(v1)(v2._2); + if ($3.tag === "Just") { return Data$dMaybe.$Maybe("Just", Data$dList$dTypes.$List("Cons", v2._1, $3._1)); } + return Data$dMaybe.Nothing; + } + return Data$dMaybe.Nothing; +}; +const insert = dictOrd => insertBy(dictOrd.compare); +const init = lst => { + const $1 = unsnoc(lst); + if ($1.tag === "Just") { return Data$dMaybe.$Maybe("Just", $1._1.init); } + return Data$dMaybe.Nothing; +}; +const index = index$a0$copy => index$a1$copy => { + let index$a0 = index$a0$copy, index$a1 = index$a1$copy, index$c = true, index$r; + while (index$c) { + const v = index$a0, v1 = index$a1; + if (v.tag === "Nil") { + index$c = false; + index$r = Data$dMaybe.Nothing; + continue; + } + if (v.tag === "Cons") { + if (v1 === 0) { + index$c = false; + index$r = Data$dMaybe.$Maybe("Just", v._1); + continue; + } + index$a0 = v._2; + index$a1 = v1 - 1 | 0; + continue; + } + $runtime.fail(); + }; + return index$r; +}; +const head = v => { + if (v.tag === "Nil") { return Data$dMaybe.Nothing; } + if (v.tag === "Cons") { return Data$dMaybe.$Maybe("Just", v._1); } + $runtime.fail(); +}; +const transpose = v => { + if (v.tag === "Nil") { return Data$dList$dTypes.Nil; } + if (v.tag === "Cons") { + if (v._1.tag === "Nil") { return transpose(v._2); } + if (v._1.tag === "Cons") { + return Data$dList$dTypes.$List( + "Cons", + Data$dList$dTypes.$List("Cons", v._1._1, mapMaybe(head)(v._2)), + transpose(Data$dList$dTypes.$List("Cons", v._1._2, mapMaybe(tail)(v._2))) + ); + } + $runtime.fail(); + } + $runtime.fail(); +}; +const groupBy = v => v1 => { + if (v1.tag === "Nil") { return Data$dList$dTypes.Nil; } + if (v1.tag === "Cons") { + const v2 = span(v(v1._1))(v1._2); + return Data$dList$dTypes.$List("Cons", Data$dNonEmpty.$NonEmpty(v1._1, v2.init), groupBy(v)(v2.rest)); + } + $runtime.fail(); +}; +const groupAllBy = p => { + const $1 = groupBy(x => y => p(x)(y).tag === "EQ"); + const $2 = sortBy(p); + return x => $1($2(x)); +}; +const group = dictEq => groupBy(dictEq.eq); +const groupAll = dictOrd => { + const $1 = group(dictOrd.Eq0()); + return x => $1(sortBy(dictOrd.compare)(x)); +}; +const fromFoldable = dictFoldable => dictFoldable.foldr(Data$dList$dTypes.Cons)(Data$dList$dTypes.Nil); +const foldM = dictMonad => { + const pure = dictMonad.Applicative0().pure; + const bind1 = dictMonad.Bind1().bind; + return v => v1 => v2 => { + if (v2.tag === "Nil") { return pure(v1); } + if (v2.tag === "Cons") { return bind1(v(v1)(v2._1))(b$p => foldM(dictMonad)(v)(b$p)(v2._2)); } + $runtime.fail(); + }; +}; +const findIndex = fn => { + 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 === "Cons") { + if (fn(v1._1)) { + go$c = false; + go$r = Data$dMaybe.$Maybe("Just", v); + continue; + } + go$a0 = v + 1 | 0; + go$a1 = v1._2; + continue; + } + if (v1.tag === "Nil") { + go$c = false; + go$r = Data$dMaybe.Nothing; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go(0); +}; +const findLastIndex = fn => xs => { + const $2 = findIndex(fn)(reverse(xs)); + if ($2.tag === "Just") { + return Data$dMaybe.$Maybe( + "Just", + (() => { + 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 = b + 1 | 0; + go$a1 = v._2; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return (go(0)(xs) - 1 | 0) - $2._1 | 0; + })() + ); + } + return Data$dMaybe.Nothing; +}; +const filterM = dictMonad => { + const pure = dictMonad.Applicative0().pure; + const bind1 = dictMonad.Bind1().bind; + return v => v1 => { + if (v1.tag === "Nil") { return pure(Data$dList$dTypes.Nil); } + if (v1.tag === "Cons") { + return bind1(v(v1._1))(b => bind1(filterM(dictMonad)(v)(v1._2))(xs$p => pure((() => { + if (b) { return Data$dList$dTypes.$List("Cons", v1._1, xs$p); } + return xs$p; + })()))); + } + $runtime.fail(); + }; +}; +const filter = p => { + 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 = reverse(v); + continue; + } + if (v1.tag === "Cons") { + if (p(v1._1)) { + go$a0 = Data$dList$dTypes.$List("Cons", v1._1, v); + go$a1 = v1._2; + continue; + } + go$a0 = v; + go$a1 = v1._2; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go(Data$dList$dTypes.Nil); +}; +const intersectBy = v => v1 => v2 => { + if (v1.tag === "Nil") { return Data$dList$dTypes.Nil; } + if (v2.tag === "Nil") { return Data$dList$dTypes.Nil; } + return filter(x => any(v(x))(v2))(v1); +}; +const intersect = dictEq => intersectBy(dictEq.eq); +const nubByEq = v => v1 => { + if (v1.tag === "Nil") { return Data$dList$dTypes.Nil; } + if (v1.tag === "Cons") { return Data$dList$dTypes.$List("Cons", v1._1, nubByEq(v)(filter(y => !v(v1._1)(y))(v1._2))); } + $runtime.fail(); +}; +const nubEq = dictEq => nubByEq(dictEq.eq); +const eqPattern = dictEq => ( + { + eq: x => y => { + const go = go$a0$copy => go$a1$copy => go$a2$copy => { + let go$a0 = go$a0$copy, go$a1 = go$a1$copy, go$a2 = go$a2$copy, go$c = true, go$r; + while (go$c) { + const v = go$a0, v1 = go$a1, v2 = go$a2; + if (!v2) { + go$c = false; + go$r = false; + continue; + } + if (v.tag === "Nil") { + if (v1.tag === "Nil") { + go$c = false; + go$r = v2; + continue; + } + go$c = false; + go$r = false; + continue; + } + if (v.tag === "Cons") { + if (v1.tag === "Cons") { + go$a0 = v._2; + go$a1 = v1._2; + go$a2 = v2 && dictEq.eq(v1._1)(v._1); + continue; + } + go$c = false; + go$r = false; + continue; + } + go$c = false; + go$r = false; + continue; + }; + return go$r; + }; + return go(x)(y)(true); + } + } +); +const ordPattern = dictOrd => { + const compare = Data$dList$dTypes.ordList(dictOrd).compare; + const $2 = dictOrd.Eq0(); + const eqPattern1 = { + eq: x => y => { + const go = go$a0$copy => go$a1$copy => go$a2$copy => { + let go$a0 = go$a0$copy, go$a1 = go$a1$copy, go$a2 = go$a2$copy, go$c = true, go$r; + while (go$c) { + const v = go$a0, v1 = go$a1, v2 = go$a2; + if (!v2) { + go$c = false; + go$r = false; + continue; + } + if (v.tag === "Nil") { + if (v1.tag === "Nil") { + go$c = false; + go$r = v2; + continue; + } + go$c = false; + go$r = false; + continue; + } + if (v.tag === "Cons") { + if (v1.tag === "Cons") { + go$a0 = v._2; + go$a1 = v1._2; + go$a2 = v2 && $2.eq(v1._1)(v._1); + continue; + } + go$c = false; + go$r = false; + continue; + } + go$c = false; + go$r = false; + continue; + }; + return go$r; + }; + return go(x)(y)(true); + } + }; + return {compare: x => y => compare(x)(y), Eq0: () => eqPattern1}; +}; +const elemLastIndex = dictEq => x => findLastIndex(v => dictEq.eq(v)(x)); +const elemIndex = dictEq => x => findIndex(v => dictEq.eq(v)(x)); +const dropWhile = p => { + 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 === "Cons") { + if (p(v._1)) { + go$a0 = v._2; + continue; + } + go$c = false; + go$r = v; + continue; + } + go$c = false; + go$r = v; + continue; + }; + return go$r; + }; + return go; +}; +const dropEnd = n => xs => take((() => { + 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 = b + 1 | 0; + go$a1 = v._2; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go(0)(xs) - n | 0; +})())(xs); +const drop = drop$a0$copy => drop$a1$copy => { + let drop$a0 = drop$a0$copy, drop$a1 = drop$a1$copy, drop$c = true, drop$r; + while (drop$c) { + const v = drop$a0, v1 = drop$a1; + if (v < 1) { + drop$c = false; + drop$r = v1; + continue; + } + if (v1.tag === "Nil") { + drop$c = false; + drop$r = Data$dList$dTypes.Nil; + continue; + } + if (v1.tag === "Cons") { + drop$a0 = v - 1 | 0; + drop$a1 = v1._2; + continue; + } + $runtime.fail(); + }; + return drop$r; +}; +const slice = start => end => xs => take(end - start | 0)(drop(start)(xs)); +const takeEnd = n => xs => drop((() => { + 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 = b + 1 | 0; + go$a1 = v._2; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go(0)(xs) - n | 0; +})())(xs); +const deleteBy = v => v1 => v2 => { + if (v2.tag === "Nil") { return Data$dList$dTypes.Nil; } + if (v2.tag === "Cons") { + if (v(v1)(v2._1)) { return v2._2; } + return Data$dList$dTypes.$List("Cons", v2._1, deleteBy(v)(v1)(v2._2)); + } + $runtime.fail(); +}; +const unionBy = eq2 => xs => ys => Data$dList$dTypes.foldableList.foldr(Data$dList$dTypes.Cons)((() => { + 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 = deleteBy(eq2)(v._1)(b); + go$a1 = v._2; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go(nubByEq(eq2)(ys))(xs); +})())(xs); +const union = dictEq => unionBy(dictEq.eq); +const deleteAt = v => v1 => { + if (v1.tag === "Cons") { + if (v === 0) { return Data$dMaybe.$Maybe("Just", v1._2); } + const $2 = deleteAt(v - 1 | 0)(v1._2); + if ($2.tag === "Just") { return Data$dMaybe.$Maybe("Just", Data$dList$dTypes.$List("Cons", v1._1, $2._1)); } + return Data$dMaybe.Nothing; + } + return Data$dMaybe.Nothing; +}; +const $$delete = dictEq => deleteBy(dictEq.eq); +const difference = dictEq => { + 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 = deleteBy(dictEq.eq)(v._1)(b); + go$a1 = v._2; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go; +}; +const concatMap = b => a => Data$dList$dTypes.bindList.bind(a)(b); +const concat = v => Data$dList$dTypes.bindList.bind(v)(identity); +const catMaybes = /* #__PURE__ */ mapMaybe(identity); +const alterAt = v => v1 => v2 => { + if (v2.tag === "Cons") { + if (v === 0) { + return Data$dMaybe.$Maybe( + "Just", + (() => { + const v3 = v1(v2._1); + if (v3.tag === "Nothing") { return v2._2; } + if (v3.tag === "Just") { return Data$dList$dTypes.$List("Cons", v3._1, v2._2); } + $runtime.fail(); + })() + ); + } + const $3 = alterAt(v - 1 | 0)(v1)(v2._2); + if ($3.tag === "Just") { return Data$dMaybe.$Maybe("Just", Data$dList$dTypes.$List("Cons", v2._1, $3._1)); } + return Data$dMaybe.Nothing; + } + return Data$dMaybe.Nothing; +}; +const modifyAt = n => f => alterAt(n)(x => Data$dMaybe.$Maybe("Just", f(x))); +export { + Pattern, + alterAt, + any, + catMaybes, + concat, + concatMap, + $$delete as delete, + deleteAt, + deleteBy, + difference, + drop, + dropEnd, + dropWhile, + elemIndex, + elemLastIndex, + eqPattern, + filter, + filterM, + findIndex, + findLastIndex, + foldM, + fromFoldable, + group, + groupAll, + groupAllBy, + groupBy, + head, + identity, + index, + init, + insert, + insertAt, + insertBy, + intersect, + intersectBy, + last, + length, + many, + manyRec, + mapMaybe, + modifyAt, + newtypePattern, + nub, + nubBy, + nubByEq, + nubEq, + $$null as null, + ordPattern, + partition, + range, + reverse, + showPattern, + singleton, + slice, + snoc, + some, + someRec, + sort, + sortBy, + span, + stripPrefix, + tail, + tailRecM2, + take, + takeEnd, + takeWhile, + toUnfoldable, + transpose, + uncons, + union, + unionBy, + unsnoc, + unzip, + updateAt, + zip, + zipWith, + zipWithA +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Map.Gen/index.js b/.storybook/purescript-indexer/output-es/Data.Map.Gen/index.js new file mode 100644 index 0000000..ad68d10 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Map.Gen/index.js @@ -0,0 +1,16 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dGen from "../Control.Monad.Gen/index.js"; +import * as Data$dList$dTypes from "../Data.List.Types/index.js"; +import * as Data$dMap$dInternal from "../Data.Map.Internal/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +const genMap = dictMonadRec => dictMonadGen => { + const Bind1 = dictMonadGen.Monad0().Bind1(); + const Apply0 = Bind1.Apply0(); + const map = Apply0.Functor0().map; + const unfoldable1 = Control$dMonad$dGen.unfoldable(dictMonadRec)(dictMonadGen)(Data$dList$dTypes.unfoldableList); + return dictOrd => { + const fromFoldable = Data$dMap$dInternal.fromFoldable(dictOrd)(Data$dList$dTypes.foldableList); + return genKey => genValue => dictMonadGen.sized(size => Bind1.bind(dictMonadGen.chooseInt(0)(size))(newSize => dictMonadGen.resize(v => newSize)(map(fromFoldable)(unfoldable1(Apply0.apply(map(Data$dTuple.Tuple)(genKey))(genValue)))))); + }; +}; +export {genMap}; diff --git a/.storybook/purescript-indexer/output-es/Data.Map.Internal/index.js b/.storybook/purescript-indexer/output-es/Data.Map.Internal/index.js new file mode 100644 index 0000000..bc55037 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Map.Internal/index.js @@ -0,0 +1,1729 @@ +// | This module defines a type of maps as balanced 2-3 trees, based on +// | +import * as $runtime from "../runtime.js"; +import * as Data$dEq from "../Data.Eq/index.js"; +import * as Data$dFunction from "../Data.Function/index.js"; +import * as Data$dList from "../Data.List/index.js"; +import * as Data$dList$dLazy from "../Data.List.Lazy/index.js"; +import * as Data$dList$dLazy$dTypes from "../Data.List.Lazy.Types/index.js"; +import * as Data$dList$dTypes from "../Data.List.Types/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dOrd from "../Data.Ord/index.js"; +import * as Data$dShow from "../Data.Show/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +import * as Data$dUnfoldable from "../Data.Unfoldable/index.js"; +import * as Partial from "../Partial/index.js"; +const $KickUp = (_1, _2, _3, _4) => ({tag: "KickUp", _1, _2, _3, _4}); +const $Map = (tag, _1, _2, _3, _4, _5, _6, _7) => ({tag, _1, _2, _3, _4, _5, _6, _7}); +const $TreeContext = (tag, _1, _2, _3, _4, _5, _6) => ({tag, _1, _2, _3, _4, _5, _6}); +const all = /* #__PURE__ */ (() => Data$dList$dLazy$dTypes.foldableList.foldMap((() => { + const semigroupConj1 = {append: v => v1 => v && v1}; + return {mempty: true, Semigroup0: () => semigroupConj1}; +})()))(); +const identity = x => x; +const nub = /* #__PURE__ */ (() => Data$dList.nubBy(Data$dOrd.ordInt.compare))(); +const Leaf = /* #__PURE__ */ $Map("Leaf"); +const Two = value0 => value1 => value2 => value3 => $Map("Two", value0, value1, value2, value3); +const Three = value0 => value1 => value2 => value3 => value4 => value5 => value6 => $Map("Three", value0, value1, value2, value3, value4, value5, value6); +const TwoLeft = value0 => value1 => value2 => $TreeContext("TwoLeft", value0, value1, value2); +const TwoRight = value0 => value1 => value2 => $TreeContext("TwoRight", value0, value1, value2); +const ThreeLeft = value0 => value1 => value2 => value3 => value4 => value5 => $TreeContext("ThreeLeft", value0, value1, value2, value3, value4, value5); +const ThreeMiddle = value0 => value1 => value2 => value3 => value4 => value5 => $TreeContext("ThreeMiddle", value0, value1, value2, value3, value4, value5); +const ThreeRight = value0 => value1 => value2 => value3 => value4 => value5 => $TreeContext("ThreeRight", value0, value1, value2, value3, value4, value5); +const KickUp = value0 => value1 => value2 => value3 => $KickUp(value0, value1, value2, value3); +const size = v => { + if (v.tag === "Leaf") { return 0; } + if (v.tag === "Two") { return (1 + size(v._1) | 0) + size(v._4) | 0; } + if (v.tag === "Three") { return ((2 + size(v._1) | 0) + size(v._4) | 0) + size(v._7) | 0; } + $runtime.fail(); +}; +const singleton = k => v => $Map("Two", Leaf, k, v, Leaf); +const toUnfoldable = dictUnfoldable => m => { + 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 === "Nil") { + go$c = false; + go$r = Data$dMaybe.Nothing; + continue; + } + if (v.tag === "Cons") { + if (v._1.tag === "Leaf") { + go$a0 = v._2; + continue; + } + if (v._1.tag === "Two") { + if (v._1._1.tag === "Leaf") { + if (v._1._4.tag === "Leaf") { + go$c = false; + go$r = Data$dMaybe.$Maybe("Just", Data$dTuple.$Tuple(Data$dTuple.$Tuple(v._1._2, v._1._3), v._2)); + continue; + } + go$c = false; + go$r = Data$dMaybe.$Maybe("Just", Data$dTuple.$Tuple(Data$dTuple.$Tuple(v._1._2, v._1._3), Data$dList$dTypes.$List("Cons", v._1._4, v._2))); + continue; + } + go$a0 = Data$dList$dTypes.$List( + "Cons", + v._1._1, + Data$dList$dTypes.$List("Cons", $Map("Two", Leaf, v._1._2, v._1._3, Leaf), Data$dList$dTypes.$List("Cons", v._1._4, v._2)) + ); + continue; + } + if (v._1.tag === "Three") { + go$a0 = Data$dList$dTypes.$List( + "Cons", + v._1._1, + Data$dList$dTypes.$List( + "Cons", + $Map("Two", Leaf, v._1._2, v._1._3, Leaf), + Data$dList$dTypes.$List("Cons", v._1._4, Data$dList$dTypes.$List("Cons", $Map("Two", Leaf, v._1._5, v._1._6, Leaf), Data$dList$dTypes.$List("Cons", v._1._7, v._2))) + ) + ); + continue; + } + $runtime.fail(); + } + $runtime.fail(); + }; + return go$r; + }; + return dictUnfoldable.unfoldr(go)(Data$dList$dTypes.$List("Cons", m, Data$dList$dTypes.Nil)); +}; +const toUnfoldableUnordered = dictUnfoldable => m => { + 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 === "Nil") { + go$c = false; + go$r = Data$dMaybe.Nothing; + continue; + } + if (v.tag === "Cons") { + if (v._1.tag === "Leaf") { + go$a0 = v._2; + continue; + } + if (v._1.tag === "Two") { + go$c = false; + go$r = Data$dMaybe.$Maybe( + "Just", + Data$dTuple.$Tuple(Data$dTuple.$Tuple(v._1._2, v._1._3), Data$dList$dTypes.$List("Cons", v._1._1, Data$dList$dTypes.$List("Cons", v._1._4, v._2))) + ); + continue; + } + if (v._1.tag === "Three") { + go$c = false; + go$r = Data$dMaybe.$Maybe( + "Just", + Data$dTuple.$Tuple( + Data$dTuple.$Tuple(v._1._2, v._1._3), + Data$dList$dTypes.$List( + "Cons", + $Map("Two", Leaf, v._1._5, v._1._6, Leaf), + Data$dList$dTypes.$List("Cons", v._1._1, Data$dList$dTypes.$List("Cons", v._1._4, Data$dList$dTypes.$List("Cons", v._1._7, v._2))) + ) + ) + ); + continue; + } + $runtime.fail(); + } + $runtime.fail(); + }; + return go$r; + }; + return dictUnfoldable.unfoldr(go)(Data$dList$dTypes.$List("Cons", m, Data$dList$dTypes.Nil)); +}; +const showTree = dictShow => dictShow1 => v => { + if (v.tag === "Leaf") { return "Leaf"; } + if (v.tag === "Two") { + return "Two (" + ( + showTree(dictShow)(dictShow1)(v._1) + (") (" + (dictShow.show(v._2) + (") (" + (dictShow1.show(v._3) + (") (" + (showTree(dictShow)(dictShow1)(v._4) + ")")))))) + ); + } + if (v.tag === "Three") { + return "Three (" + ( + showTree(dictShow)(dictShow1)(v._1) + ( + ") (" + ( + dictShow.show(v._2) + ( + ") (" + ( + dictShow1.show(v._3) + ( + ") (" + ( + showTree(dictShow)(dictShow1)(v._4) + (") (" + (dictShow.show(v._5) + (") (" + (dictShow1.show(v._6) + (") (" + (showTree(dictShow)(dictShow1)(v._7) + ")")))))) + ) + ) + ) + ) + ) + ) + ); + } + $runtime.fail(); +}; +const showMap = dictShow => dictShow1 => { + const show = Data$dShow.showArrayImpl(v => "(Tuple " + (dictShow.show(v._1) + (" " + (dictShow1.show(v._2) + ")")))); + return {show: m => "(fromFoldable " + (show(toUnfoldable(Data$dUnfoldable.unfoldableArray)(m)) + ")")}; +}; +const lookupLE = dictOrd => k => { + const go = v => { + if (v.tag === "Leaf") { return Data$dMaybe.Nothing; } + if (v.tag === "Two") { + const v2 = dictOrd.compare(k)(v._2); + if (v2.tag === "EQ") { return Data$dMaybe.$Maybe("Just", {key: v._2, value: v._3}); } + if (v2.tag === "GT") { + return Data$dMaybe.$Maybe( + "Just", + (() => { + const $5 = go(v._4); + if ($5.tag === "Nothing") { return {key: v._2, value: v._3}; } + if ($5.tag === "Just") { return $5._1; } + $runtime.fail(); + })() + ); + } + if (v2.tag === "LT") { return go(v._1); } + $runtime.fail(); + } + if (v.tag === "Three") { + const v3 = dictOrd.compare(k)(v._5); + if (v3.tag === "EQ") { return Data$dMaybe.$Maybe("Just", {key: v._5, value: v._6}); } + if (v3.tag === "GT") { + return Data$dMaybe.$Maybe( + "Just", + (() => { + const $5 = go(v._7); + if ($5.tag === "Nothing") { return {key: v._5, value: v._6}; } + if ($5.tag === "Just") { return $5._1; } + $runtime.fail(); + })() + ); + } + if (v3.tag === "LT") { return go($Map("Two", v._1, v._2, v._3, v._4)); } + $runtime.fail(); + } + $runtime.fail(); + }; + return go; +}; +const lookupGE = dictOrd => k => { + const go = v => { + if (v.tag === "Leaf") { return Data$dMaybe.Nothing; } + if (v.tag === "Two") { + const v2 = dictOrd.compare(k)(v._2); + if (v2.tag === "EQ") { return Data$dMaybe.$Maybe("Just", {key: v._2, value: v._3}); } + if (v2.tag === "LT") { + return Data$dMaybe.$Maybe( + "Just", + (() => { + const $5 = go(v._1); + if ($5.tag === "Nothing") { return {key: v._2, value: v._3}; } + if ($5.tag === "Just") { return $5._1; } + $runtime.fail(); + })() + ); + } + if (v2.tag === "GT") { return go(v._4); } + $runtime.fail(); + } + if (v.tag === "Three") { + const v3 = dictOrd.compare(k)(v._2); + if (v3.tag === "EQ") { return Data$dMaybe.$Maybe("Just", {key: v._2, value: v._3}); } + if (v3.tag === "LT") { + return Data$dMaybe.$Maybe( + "Just", + (() => { + const $5 = go(v._1); + if ($5.tag === "Nothing") { return {key: v._2, value: v._3}; } + if ($5.tag === "Just") { return $5._1; } + $runtime.fail(); + })() + ); + } + if (v3.tag === "GT") { return go($Map("Two", v._4, v._5, v._6, v._7)); } + $runtime.fail(); + } + $runtime.fail(); + }; + return go; +}; +const lookup = dictOrd => k => { + 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 === "Leaf") { + go$c = false; + go$r = Data$dMaybe.Nothing; + continue; + } + if (v.tag === "Two") { + const v2 = dictOrd.compare(k)(v._2); + if (v2.tag === "EQ") { + go$c = false; + go$r = Data$dMaybe.$Maybe("Just", v._3); + continue; + } + if (v2.tag === "LT") { + go$a0 = v._1; + continue; + } + go$a0 = v._4; + continue; + } + if (v.tag === "Three") { + const v3 = dictOrd.compare(k)(v._2); + if (v3.tag === "EQ") { + go$c = false; + go$r = Data$dMaybe.$Maybe("Just", v._3); + continue; + } + const v4 = dictOrd.compare(k)(v._5); + if (v4.tag === "EQ") { + go$c = false; + go$r = Data$dMaybe.$Maybe("Just", v._6); + continue; + } + if (v3.tag === "LT") { + go$a0 = v._1; + continue; + } + if (v4.tag === "GT") { + go$a0 = v._7; + continue; + } + go$a0 = v._4; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go; +}; +const member = dictOrd => k => m => { + const $3 = lookup(dictOrd)(k)(m); + if ($3.tag === "Nothing") { return false; } + if ($3.tag === "Just") { return true; } + $runtime.fail(); +}; +const isSubmap = dictOrd => dictEq => m1 => m2 => all(v => { + const $5 = lookup(dictOrd)(v._1)(m2); + if ($5.tag === "Nothing") { return false; } + if ($5.tag === "Just") { return dictEq.eq($5._1)(v._2); } + return false; +})(toUnfoldable(Data$dList$dLazy$dTypes.unfoldableList)(m1)); +const isEmpty = v => v.tag === "Leaf"; +const functorMap = { + map: v => v1 => { + if (v1.tag === "Leaf") { return Leaf; } + if (v1.tag === "Two") { return $Map("Two", functorMap.map(v)(v1._1), v1._2, v(v1._3), functorMap.map(v)(v1._4)); } + if (v1.tag === "Three") { return $Map("Three", functorMap.map(v)(v1._1), v1._2, v(v1._3), functorMap.map(v)(v1._4), v1._5, v(v1._6), functorMap.map(v)(v1._7)); } + $runtime.fail(); + } +}; +const functorWithIndexMap = { + mapWithIndex: v => v1 => { + if (v1.tag === "Leaf") { return Leaf; } + if (v1.tag === "Two") { return $Map("Two", functorWithIndexMap.mapWithIndex(v)(v1._1), v1._2, v(v1._2)(v1._3), functorWithIndexMap.mapWithIndex(v)(v1._4)); } + if (v1.tag === "Three") { + return $Map( + "Three", + functorWithIndexMap.mapWithIndex(v)(v1._1), + v1._2, + v(v1._2)(v1._3), + functorWithIndexMap.mapWithIndex(v)(v1._4), + v1._5, + v(v1._5)(v1._6), + functorWithIndexMap.mapWithIndex(v)(v1._7) + ); + } + $runtime.fail(); + }, + Functor0: () => functorMap +}; +const fromZipper = fromZipper$a0$copy => fromZipper$a1$copy => fromZipper$a2$copy => { + let fromZipper$a0 = fromZipper$a0$copy, fromZipper$a1 = fromZipper$a1$copy, fromZipper$a2 = fromZipper$a2$copy, fromZipper$c = true, fromZipper$r; + while (fromZipper$c) { + const dictOrd = fromZipper$a0, v = fromZipper$a1, v1 = fromZipper$a2; + if (v.tag === "Nil") { + fromZipper$c = false; + fromZipper$r = v1; + continue; + } + if (v.tag === "Cons") { + if (v._1.tag === "TwoLeft") { + fromZipper$a0 = dictOrd; + fromZipper$a1 = v._2; + fromZipper$a2 = $Map("Two", v1, v._1._1, v._1._2, v._1._3); + continue; + } + if (v._1.tag === "TwoRight") { + fromZipper$a0 = dictOrd; + fromZipper$a1 = v._2; + fromZipper$a2 = $Map("Two", v._1._1, v._1._2, v._1._3, v1); + continue; + } + if (v._1.tag === "ThreeLeft") { + fromZipper$a0 = dictOrd; + fromZipper$a1 = v._2; + fromZipper$a2 = $Map("Three", v1, v._1._1, v._1._2, v._1._3, v._1._4, v._1._5, v._1._6); + continue; + } + if (v._1.tag === "ThreeMiddle") { + fromZipper$a0 = dictOrd; + fromZipper$a1 = v._2; + fromZipper$a2 = $Map("Three", v._1._1, v._1._2, v._1._3, v1, v._1._4, v._1._5, v._1._6); + continue; + } + if (v._1.tag === "ThreeRight") { + fromZipper$a0 = dictOrd; + fromZipper$a1 = v._2; + fromZipper$a2 = $Map("Three", v._1._1, v._1._2, v._1._3, v._1._4, v._1._5, v._1._6, v1); + continue; + } + $runtime.fail(); + } + $runtime.fail(); + }; + return fromZipper$r; +}; +const insert = dictOrd => k => v => { + const up = up$a0$copy => up$a1$copy => { + let up$a0 = up$a0$copy, up$a1 = up$a1$copy, up$c = true, up$r; + while (up$c) { + const v1 = up$a0, v2 = up$a1; + if (v1.tag === "Nil") { + up$c = false; + up$r = $Map("Two", v2._1, v2._2, v2._3, v2._4); + continue; + } + if (v1.tag === "Cons") { + if (v1._1.tag === "TwoLeft") { + up$c = false; + up$r = fromZipper(dictOrd)(v1._2)($Map("Three", v2._1, v2._2, v2._3, v2._4, v1._1._1, v1._1._2, v1._1._3)); + continue; + } + if (v1._1.tag === "TwoRight") { + up$c = false; + up$r = fromZipper(dictOrd)(v1._2)($Map("Three", v1._1._1, v1._1._2, v1._1._3, v2._1, v2._2, v2._3, v2._4)); + continue; + } + if (v1._1.tag === "ThreeLeft") { + up$a0 = v1._2; + up$a1 = $KickUp($Map("Two", v2._1, v2._2, v2._3, v2._4), v1._1._1, v1._1._2, $Map("Two", v1._1._3, v1._1._4, v1._1._5, v1._1._6)); + continue; + } + if (v1._1.tag === "ThreeMiddle") { + up$a0 = v1._2; + up$a1 = $KickUp($Map("Two", v1._1._1, v1._1._2, v1._1._3, v2._1), v2._2, v2._3, $Map("Two", v2._4, v1._1._4, v1._1._5, v1._1._6)); + continue; + } + if (v1._1.tag === "ThreeRight") { + up$a0 = v1._2; + up$a1 = $KickUp($Map("Two", v1._1._1, v1._1._2, v1._1._3, v1._1._4), v1._1._5, v1._1._6, $Map("Two", v2._1, v2._2, v2._3, v2._4)); + continue; + } + $runtime.fail(); + } + $runtime.fail(); + }; + return up$r; + }; + const down = down$a0$copy => down$a1$copy => { + let down$a0 = down$a0$copy, down$a1 = down$a1$copy, down$c = true, down$r; + while (down$c) { + const v1 = down$a0, v2 = down$a1; + if (v2.tag === "Leaf") { + down$c = false; + down$r = up(v1)($KickUp(Leaf, k, v, Leaf)); + continue; + } + if (v2.tag === "Two") { + const v3 = dictOrd.compare(k)(v2._2); + if (v3.tag === "EQ") { + down$c = false; + down$r = fromZipper(dictOrd)(v1)($Map("Two", v2._1, k, v, v2._4)); + continue; + } + if (v3.tag === "LT") { + down$a0 = Data$dList$dTypes.$List("Cons", $TreeContext("TwoLeft", v2._2, v2._3, v2._4), v1); + down$a1 = v2._1; + continue; + } + down$a0 = Data$dList$dTypes.$List("Cons", $TreeContext("TwoRight", v2._1, v2._2, v2._3), v1); + down$a1 = v2._4; + continue; + } + if (v2.tag === "Three") { + const v3 = dictOrd.compare(k)(v2._2); + if (v3.tag === "EQ") { + down$c = false; + down$r = fromZipper(dictOrd)(v1)($Map("Three", v2._1, k, v, v2._4, v2._5, v2._6, v2._7)); + continue; + } + const v4 = dictOrd.compare(k)(v2._5); + if (v4.tag === "EQ") { + down$c = false; + down$r = fromZipper(dictOrd)(v1)($Map("Three", v2._1, v2._2, v2._3, v2._4, k, v, v2._7)); + continue; + } + if (v3.tag === "LT") { + down$a0 = Data$dList$dTypes.$List("Cons", $TreeContext("ThreeLeft", v2._2, v2._3, v2._4, v2._5, v2._6, v2._7), v1); + down$a1 = v2._1; + continue; + } + if (v3.tag === "GT") { + if (v4.tag === "LT") { + down$a0 = Data$dList$dTypes.$List("Cons", $TreeContext("ThreeMiddle", v2._1, v2._2, v2._3, v2._5, v2._6, v2._7), v1); + down$a1 = v2._4; + continue; + } + down$a0 = Data$dList$dTypes.$List("Cons", $TreeContext("ThreeRight", v2._1, v2._2, v2._3, v2._4, v2._5, v2._6), v1); + down$a1 = v2._7; + continue; + } + down$a0 = Data$dList$dTypes.$List("Cons", $TreeContext("ThreeRight", v2._1, v2._2, v2._3, v2._4, v2._5, v2._6), v1); + down$a1 = v2._7; + continue; + } + $runtime.fail(); + }; + return down$r; + }; + return down(Data$dList$dTypes.Nil); +}; +const pop = dictOrd => k => { + const up = up$a0$copy => up$a1$copy => { + let up$a0 = up$a0$copy, up$a1 = up$a1$copy, up$c = true, up$r; + while (up$c) { + const ctxs = up$a0, tree = up$a1; + if (ctxs.tag === "Nil") { + up$c = false; + up$r = tree; + continue; + } + if (ctxs.tag === "Cons") { + const $5 = (a, b, c, d, k1, k2, k3, v1, v2, v3) => fromZipper(dictOrd)(ctxs._2)($Map("Two", $Map("Two", a, k1, v1, b), k2, v2, $Map("Two", c, k3, v3, d))); + const $6 = (a, b, c, d, k1, k2, k3, v1, v2, v3) => fromZipper(dictOrd)(ctxs._2)($Map("Two", $Map("Two", a, k1, v1, b), k2, v2, $Map("Two", c, k3, v3, d))); + const $7 = (a, b, c, d, k1, k2, k3, v1, v2, v3) => fromZipper(dictOrd)(ctxs._2)($Map("Two", $Map("Three", a, k1, v1, b, k2, v2, c), k3, v3, d)); + const $8 = (a, b, c, d, k1, k2, k3, v1, v2, v3) => fromZipper(dictOrd)(ctxs._2)($Map("Two", $Map("Three", a, k1, v1, b, k2, v2, c), k3, v3, d)); + const $9 = (a, b, c, d, k1, k2, k3, v1, v2, v3) => fromZipper(dictOrd)(ctxs._2)($Map("Two", a, k1, v1, $Map("Three", b, k2, v2, c, k3, v3, d))); + const $10 = (a, b, c, d, k1, k2, k3, v1, v2, v3) => fromZipper(dictOrd)(ctxs._2)($Map("Two", a, k1, v1, $Map("Three", b, k2, v2, c, k3, v3, d))); + const $11 = (a, b, c, d, e, k1, k2, k3, k4, v1, v2, v3, v4) => fromZipper(dictOrd)(ctxs._2)($Map( + "Three", + $Map("Two", a, k1, v1, b), + k2, + v2, + $Map("Two", c, k3, v3, d), + k4, + v4, + e + )); + const $12 = (a, b, c, d, e, k1, k2, k3, k4, v1, v2, v3, v4) => fromZipper(dictOrd)(ctxs._2)($Map( + "Three", + $Map("Two", a, k1, v1, b), + k2, + v2, + $Map("Two", c, k3, v3, d), + k4, + v4, + e + )); + const $13 = (a, b, c, d, e, k1, k2, k3, k4, v1, v2, v3, v4) => fromZipper(dictOrd)(ctxs._2)($Map( + "Three", + a, + k1, + v1, + $Map("Two", b, k2, v2, c), + k3, + v3, + $Map("Two", d, k4, v4, e) + )); + const $14 = (a, b, c, d, e, k1, k2, k3, k4, v1, v2, v3, v4) => fromZipper(dictOrd)(ctxs._2)($Map( + "Three", + a, + k1, + v1, + $Map("Two", b, k2, v2, c), + k3, + v3, + $Map("Two", d, k4, v4, e) + )); + if (tree.tag === "Leaf") { + if (ctxs._1.tag === "TwoLeft") { + if (ctxs._1._3.tag === "Leaf") { + up$c = false; + up$r = fromZipper(dictOrd)(ctxs._2)($Map("Two", Leaf, ctxs._1._1, ctxs._1._2, Leaf)); + continue; + } + if (ctxs._1._3.tag === "Two") { + up$a0 = ctxs._2; + up$a1 = $Map("Three", tree, ctxs._1._1, ctxs._1._2, ctxs._1._3._1, ctxs._1._3._2, ctxs._1._3._3, ctxs._1._3._4); + continue; + } + if (ctxs._1._3.tag === "Three") { + up$c = false; + up$r = $5(tree, ctxs._1._3._1, ctxs._1._3._4, ctxs._1._3._7, ctxs._1._1, ctxs._1._3._2, ctxs._1._3._5, ctxs._1._2, ctxs._1._3._3, ctxs._1._3._6); + continue; + } + up$c = false; + up$r = Partial._crashWith("The impossible happened in partial function `up`."); + continue; + } + if (ctxs._1.tag === "TwoRight") { + if (ctxs._1._1.tag === "Leaf") { + up$c = false; + up$r = fromZipper(dictOrd)(ctxs._2)($Map("Two", Leaf, ctxs._1._2, ctxs._1._3, Leaf)); + continue; + } + if (ctxs._1._1.tag === "Two") { + up$a0 = ctxs._2; + up$a1 = $Map("Three", ctxs._1._1._1, ctxs._1._1._2, ctxs._1._1._3, ctxs._1._1._4, ctxs._1._2, ctxs._1._3, tree); + continue; + } + if (ctxs._1._1.tag === "Three") { + up$c = false; + up$r = $6(ctxs._1._1._1, ctxs._1._1._4, ctxs._1._1._7, tree, ctxs._1._1._2, ctxs._1._1._5, ctxs._1._2, ctxs._1._1._3, ctxs._1._1._6, ctxs._1._3); + continue; + } + up$c = false; + up$r = Partial._crashWith("The impossible happened in partial function `up`."); + continue; + } + if (ctxs._1.tag === "ThreeLeft") { + if (ctxs._1._6.tag === "Leaf") { + if (ctxs._1._3.tag === "Leaf") { + up$c = false; + up$r = fromZipper(dictOrd)(ctxs._2)($Map("Three", Leaf, ctxs._1._1, ctxs._1._2, Leaf, ctxs._1._4, ctxs._1._5, Leaf)); + continue; + } + if (ctxs._1._3.tag === "Two") { + up$c = false; + up$r = $7(tree, ctxs._1._3._1, ctxs._1._3._4, ctxs._1._6, ctxs._1._1, ctxs._1._3._2, ctxs._1._4, ctxs._1._2, ctxs._1._3._3, ctxs._1._5); + continue; + } + if (ctxs._1._3.tag === "Three") { + up$c = false; + up$r = $11( + tree, + ctxs._1._3._1, + ctxs._1._3._4, + ctxs._1._3._7, + ctxs._1._6, + ctxs._1._1, + ctxs._1._3._2, + ctxs._1._3._5, + ctxs._1._4, + ctxs._1._2, + ctxs._1._3._3, + ctxs._1._3._6, + ctxs._1._5 + ); + continue; + } + up$c = false; + up$r = Partial._crashWith("The impossible happened in partial function `up`."); + continue; + } + if (ctxs._1._3.tag === "Two") { + up$c = false; + up$r = $7(tree, ctxs._1._3._1, ctxs._1._3._4, ctxs._1._6, ctxs._1._1, ctxs._1._3._2, ctxs._1._4, ctxs._1._2, ctxs._1._3._3, ctxs._1._5); + continue; + } + if (ctxs._1._3.tag === "Three") { + up$c = false; + up$r = $11( + tree, + ctxs._1._3._1, + ctxs._1._3._4, + ctxs._1._3._7, + ctxs._1._6, + ctxs._1._1, + ctxs._1._3._2, + ctxs._1._3._5, + ctxs._1._4, + ctxs._1._2, + ctxs._1._3._3, + ctxs._1._3._6, + ctxs._1._5 + ); + continue; + } + up$c = false; + up$r = Partial._crashWith("The impossible happened in partial function `up`."); + continue; + } + if (ctxs._1.tag === "ThreeMiddle") { + if (ctxs._1._1.tag === "Leaf") { + if (ctxs._1._6.tag === "Leaf") { + up$c = false; + up$r = fromZipper(dictOrd)(ctxs._2)($Map("Three", Leaf, ctxs._1._2, ctxs._1._3, Leaf, ctxs._1._4, ctxs._1._5, Leaf)); + continue; + } + if (ctxs._1._6.tag === "Two") { + up$c = false; + up$r = $9(ctxs._1._1, tree, ctxs._1._6._1, ctxs._1._6._4, ctxs._1._2, ctxs._1._4, ctxs._1._6._2, ctxs._1._3, ctxs._1._5, ctxs._1._6._3); + continue; + } + if (ctxs._1._6.tag === "Three") { + up$c = false; + up$r = $13( + ctxs._1._1, + tree, + ctxs._1._6._1, + ctxs._1._6._4, + ctxs._1._6._7, + ctxs._1._2, + ctxs._1._4, + ctxs._1._6._2, + ctxs._1._6._5, + ctxs._1._3, + ctxs._1._5, + ctxs._1._6._3, + ctxs._1._6._6 + ); + continue; + } + up$c = false; + up$r = Partial._crashWith("The impossible happened in partial function `up`."); + continue; + } + if (ctxs._1._1.tag === "Two") { + up$c = false; + up$r = $8(ctxs._1._1._1, ctxs._1._1._4, tree, ctxs._1._6, ctxs._1._1._2, ctxs._1._2, ctxs._1._4, ctxs._1._1._3, ctxs._1._3, ctxs._1._5); + continue; + } + if (ctxs._1._6.tag === "Two") { + up$c = false; + up$r = $9(ctxs._1._1, tree, ctxs._1._6._1, ctxs._1._6._4, ctxs._1._2, ctxs._1._4, ctxs._1._6._2, ctxs._1._3, ctxs._1._5, ctxs._1._6._3); + continue; + } + if (ctxs._1._1.tag === "Three") { + up$c = false; + up$r = $12( + ctxs._1._1._1, + ctxs._1._1._4, + ctxs._1._1._7, + tree, + ctxs._1._6, + ctxs._1._1._2, + ctxs._1._1._5, + ctxs._1._2, + ctxs._1._4, + ctxs._1._1._3, + ctxs._1._1._6, + ctxs._1._3, + ctxs._1._5 + ); + continue; + } + if (ctxs._1._6.tag === "Three") { + up$c = false; + up$r = $13( + ctxs._1._1, + tree, + ctxs._1._6._1, + ctxs._1._6._4, + ctxs._1._6._7, + ctxs._1._2, + ctxs._1._4, + ctxs._1._6._2, + ctxs._1._6._5, + ctxs._1._3, + ctxs._1._5, + ctxs._1._6._3, + ctxs._1._6._6 + ); + continue; + } + up$c = false; + up$r = Partial._crashWith("The impossible happened in partial function `up`."); + continue; + } + if (ctxs._1.tag === "ThreeRight") { + if (ctxs._1._1.tag === "Leaf") { + if (ctxs._1._4.tag === "Leaf") { + up$c = false; + up$r = fromZipper(dictOrd)(ctxs._2)($Map("Three", Leaf, ctxs._1._2, ctxs._1._3, Leaf, ctxs._1._5, ctxs._1._6, Leaf)); + continue; + } + if (ctxs._1._4.tag === "Two") { + up$c = false; + up$r = $10(ctxs._1._1, ctxs._1._4._1, ctxs._1._4._4, tree, ctxs._1._2, ctxs._1._4._2, ctxs._1._5, ctxs._1._3, ctxs._1._4._3, ctxs._1._6); + continue; + } + if (ctxs._1._4.tag === "Three") { + up$c = false; + up$r = $14( + ctxs._1._1, + ctxs._1._4._1, + ctxs._1._4._4, + ctxs._1._4._7, + tree, + ctxs._1._2, + ctxs._1._4._2, + ctxs._1._4._5, + ctxs._1._5, + ctxs._1._3, + ctxs._1._4._3, + ctxs._1._4._6, + ctxs._1._6 + ); + continue; + } + up$c = false; + up$r = Partial._crashWith("The impossible happened in partial function `up`."); + continue; + } + if (ctxs._1._4.tag === "Two") { + up$c = false; + up$r = $10(ctxs._1._1, ctxs._1._4._1, ctxs._1._4._4, tree, ctxs._1._2, ctxs._1._4._2, ctxs._1._5, ctxs._1._3, ctxs._1._4._3, ctxs._1._6); + continue; + } + if (ctxs._1._4.tag === "Three") { + up$c = false; + up$r = $14( + ctxs._1._1, + ctxs._1._4._1, + ctxs._1._4._4, + ctxs._1._4._7, + tree, + ctxs._1._2, + ctxs._1._4._2, + ctxs._1._4._5, + ctxs._1._5, + ctxs._1._3, + ctxs._1._4._3, + ctxs._1._4._6, + ctxs._1._6 + ); + continue; + } + up$c = false; + up$r = Partial._crashWith("The impossible happened in partial function `up`."); + continue; + } + up$c = false; + up$r = Partial._crashWith("The impossible happened in partial function `up`."); + continue; + } + if (ctxs._1.tag === "TwoLeft") { + if (ctxs._1._3.tag === "Two") { + up$a0 = ctxs._2; + up$a1 = $Map("Three", tree, ctxs._1._1, ctxs._1._2, ctxs._1._3._1, ctxs._1._3._2, ctxs._1._3._3, ctxs._1._3._4); + continue; + } + if (ctxs._1._3.tag === "Three") { + up$c = false; + up$r = $5(tree, ctxs._1._3._1, ctxs._1._3._4, ctxs._1._3._7, ctxs._1._1, ctxs._1._3._2, ctxs._1._3._5, ctxs._1._2, ctxs._1._3._3, ctxs._1._3._6); + continue; + } + up$c = false; + up$r = Partial._crashWith("The impossible happened in partial function `up`."); + continue; + } + if (ctxs._1.tag === "TwoRight") { + if (ctxs._1._1.tag === "Two") { + up$a0 = ctxs._2; + up$a1 = $Map("Three", ctxs._1._1._1, ctxs._1._1._2, ctxs._1._1._3, ctxs._1._1._4, ctxs._1._2, ctxs._1._3, tree); + continue; + } + if (ctxs._1._1.tag === "Three") { + up$c = false; + up$r = $6(ctxs._1._1._1, ctxs._1._1._4, ctxs._1._1._7, tree, ctxs._1._1._2, ctxs._1._1._5, ctxs._1._2, ctxs._1._1._3, ctxs._1._1._6, ctxs._1._3); + continue; + } + up$c = false; + up$r = Partial._crashWith("The impossible happened in partial function `up`."); + continue; + } + if (ctxs._1.tag === "ThreeLeft") { + if (ctxs._1._3.tag === "Two") { + up$c = false; + up$r = $7(tree, ctxs._1._3._1, ctxs._1._3._4, ctxs._1._6, ctxs._1._1, ctxs._1._3._2, ctxs._1._4, ctxs._1._2, ctxs._1._3._3, ctxs._1._5); + continue; + } + if (ctxs._1._3.tag === "Three") { + up$c = false; + up$r = $11( + tree, + ctxs._1._3._1, + ctxs._1._3._4, + ctxs._1._3._7, + ctxs._1._6, + ctxs._1._1, + ctxs._1._3._2, + ctxs._1._3._5, + ctxs._1._4, + ctxs._1._2, + ctxs._1._3._3, + ctxs._1._3._6, + ctxs._1._5 + ); + continue; + } + up$c = false; + up$r = Partial._crashWith("The impossible happened in partial function `up`."); + continue; + } + if (ctxs._1.tag === "ThreeMiddle") { + if (ctxs._1._1.tag === "Two") { + up$c = false; + up$r = $8(ctxs._1._1._1, ctxs._1._1._4, tree, ctxs._1._6, ctxs._1._1._2, ctxs._1._2, ctxs._1._4, ctxs._1._1._3, ctxs._1._3, ctxs._1._5); + continue; + } + if (ctxs._1._6.tag === "Two") { + up$c = false; + up$r = $9(ctxs._1._1, tree, ctxs._1._6._1, ctxs._1._6._4, ctxs._1._2, ctxs._1._4, ctxs._1._6._2, ctxs._1._3, ctxs._1._5, ctxs._1._6._3); + continue; + } + if (ctxs._1._1.tag === "Three") { + up$c = false; + up$r = $12( + ctxs._1._1._1, + ctxs._1._1._4, + ctxs._1._1._7, + tree, + ctxs._1._6, + ctxs._1._1._2, + ctxs._1._1._5, + ctxs._1._2, + ctxs._1._4, + ctxs._1._1._3, + ctxs._1._1._6, + ctxs._1._3, + ctxs._1._5 + ); + continue; + } + if (ctxs._1._6.tag === "Three") { + up$c = false; + up$r = $13( + ctxs._1._1, + tree, + ctxs._1._6._1, + ctxs._1._6._4, + ctxs._1._6._7, + ctxs._1._2, + ctxs._1._4, + ctxs._1._6._2, + ctxs._1._6._5, + ctxs._1._3, + ctxs._1._5, + ctxs._1._6._3, + ctxs._1._6._6 + ); + continue; + } + up$c = false; + up$r = Partial._crashWith("The impossible happened in partial function `up`."); + continue; + } + if (ctxs._1.tag === "ThreeRight") { + if (ctxs._1._4.tag === "Two") { + up$c = false; + up$r = $10(ctxs._1._1, ctxs._1._4._1, ctxs._1._4._4, tree, ctxs._1._2, ctxs._1._4._2, ctxs._1._5, ctxs._1._3, ctxs._1._4._3, ctxs._1._6); + continue; + } + if (ctxs._1._4.tag === "Three") { + up$c = false; + up$r = $14( + ctxs._1._1, + ctxs._1._4._1, + ctxs._1._4._4, + ctxs._1._4._7, + tree, + ctxs._1._2, + ctxs._1._4._2, + ctxs._1._4._5, + ctxs._1._5, + ctxs._1._3, + ctxs._1._4._3, + ctxs._1._4._6, + ctxs._1._6 + ); + continue; + } + up$c = false; + up$r = Partial._crashWith("The impossible happened in partial function `up`."); + continue; + } + up$c = false; + up$r = Partial._crashWith("The impossible happened in partial function `up`."); + continue; + } + $runtime.fail(); + }; + return up$r; + }; + const removeMaxNode = removeMaxNode$a0$copy => removeMaxNode$a1$copy => { + let removeMaxNode$a0 = removeMaxNode$a0$copy, removeMaxNode$a1 = removeMaxNode$a1$copy, removeMaxNode$c = true, removeMaxNode$r; + while (removeMaxNode$c) { + const ctx = removeMaxNode$a0, m = removeMaxNode$a1; + if (m.tag === "Two") { + if (m._1.tag === "Leaf") { + if (m._4.tag === "Leaf") { + removeMaxNode$c = false; + removeMaxNode$r = up(ctx)(Leaf); + continue; + } + removeMaxNode$a0 = Data$dList$dTypes.$List("Cons", $TreeContext("TwoRight", m._1, m._2, m._3), ctx); + removeMaxNode$a1 = m._4; + continue; + } + removeMaxNode$a0 = Data$dList$dTypes.$List("Cons", $TreeContext("TwoRight", m._1, m._2, m._3), ctx); + removeMaxNode$a1 = m._4; + continue; + } + if (m.tag === "Three") { + if (m._1.tag === "Leaf") { + if (m._4.tag === "Leaf") { + if (m._7.tag === "Leaf") { + removeMaxNode$c = false; + removeMaxNode$r = up(Data$dList$dTypes.$List("Cons", $TreeContext("TwoRight", Leaf, m._2, m._3), ctx))(Leaf); + continue; + } + removeMaxNode$a0 = Data$dList$dTypes.$List("Cons", $TreeContext("ThreeRight", m._1, m._2, m._3, m._4, m._5, m._6), ctx); + removeMaxNode$a1 = m._7; + continue; + } + removeMaxNode$a0 = Data$dList$dTypes.$List("Cons", $TreeContext("ThreeRight", m._1, m._2, m._3, m._4, m._5, m._6), ctx); + removeMaxNode$a1 = m._7; + continue; + } + removeMaxNode$a0 = Data$dList$dTypes.$List("Cons", $TreeContext("ThreeRight", m._1, m._2, m._3, m._4, m._5, m._6), ctx); + removeMaxNode$a1 = m._7; + continue; + } + removeMaxNode$c = false; + removeMaxNode$r = Partial._crashWith("The impossible happened in partial function `removeMaxNode`."); + continue; + }; + return removeMaxNode$r; + }; + const maxNode = maxNode$a0$copy => { + let maxNode$a0 = maxNode$a0$copy, maxNode$c = true, maxNode$r; + while (maxNode$c) { + const m = maxNode$a0; + if (m.tag === "Two") { + if (m._4.tag === "Leaf") { + maxNode$c = false; + maxNode$r = {key: m._2, value: m._3}; + continue; + } + maxNode$a0 = m._4; + continue; + } + if (m.tag === "Three") { + if (m._7.tag === "Leaf") { + maxNode$c = false; + maxNode$r = {key: m._5, value: m._6}; + continue; + } + maxNode$a0 = m._7; + continue; + } + maxNode$c = false; + maxNode$r = Partial._crashWith("The impossible happened in partial function `maxNode`."); + continue; + }; + return maxNode$r; + }; + const down = down$a0$copy => down$a1$copy => { + let down$a0 = down$a0$copy, down$a1 = down$a1$copy, down$c = true, down$r; + while (down$c) { + const ctx = down$a0, m = down$a1; + if (m.tag === "Leaf") { + down$c = false; + down$r = Data$dMaybe.Nothing; + continue; + } + if (m.tag === "Two") { + const v = dictOrd.compare(k)(m._2); + if (v.tag === "EQ") { + if (m._4.tag === "Leaf") { + down$c = false; + down$r = Data$dMaybe.$Maybe("Just", Data$dTuple.$Tuple(m._3, up(ctx)(Leaf))); + continue; + } + const max = maxNode(m._1); + down$c = false; + down$r = Data$dMaybe.$Maybe( + "Just", + Data$dTuple.$Tuple(m._3, removeMaxNode(Data$dList$dTypes.$List("Cons", $TreeContext("TwoLeft", max.key, max.value, m._4), ctx))(m._1)) + ); + continue; + } + if (v.tag === "LT") { + down$a0 = Data$dList$dTypes.$List("Cons", $TreeContext("TwoLeft", m._2, m._3, m._4), ctx); + down$a1 = m._1; + continue; + } + down$a0 = Data$dList$dTypes.$List("Cons", $TreeContext("TwoRight", m._1, m._2, m._3), ctx); + down$a1 = m._4; + continue; + } + if (m.tag === "Three") { + const v = dictOrd.compare(k)(m._5); + const v3 = dictOrd.compare(k)(m._2); + if ( + (() => { + if (m._1.tag === "Leaf") { + if (m._4.tag === "Leaf") { return m._7.tag === "Leaf"; } + return false; + } + return false; + })() + ) { + if (v3.tag === "EQ") { + down$c = false; + down$r = Data$dMaybe.$Maybe("Just", Data$dTuple.$Tuple(m._3, fromZipper(dictOrd)(ctx)($Map("Two", Leaf, m._5, m._6, Leaf)))); + continue; + } + if (v.tag === "EQ") { + down$c = false; + down$r = Data$dMaybe.$Maybe("Just", Data$dTuple.$Tuple(m._6, fromZipper(dictOrd)(ctx)($Map("Two", Leaf, m._2, m._3, Leaf)))); + continue; + } + if (v3.tag === "LT") { + down$a0 = Data$dList$dTypes.$List("Cons", $TreeContext("ThreeLeft", m._2, m._3, m._4, m._5, m._6, m._7), ctx); + down$a1 = m._1; + continue; + } + if (v3.tag === "GT") { + if (v.tag === "LT") { + down$a0 = Data$dList$dTypes.$List("Cons", $TreeContext("ThreeMiddle", m._1, m._2, m._3, m._5, m._6, m._7), ctx); + down$a1 = m._4; + continue; + } + down$a0 = Data$dList$dTypes.$List("Cons", $TreeContext("ThreeRight", m._1, m._2, m._3, m._4, m._5, m._6), ctx); + down$a1 = m._7; + continue; + } + down$a0 = Data$dList$dTypes.$List("Cons", $TreeContext("ThreeRight", m._1, m._2, m._3, m._4, m._5, m._6), ctx); + down$a1 = m._7; + continue; + } + if (v3.tag === "EQ") { + const max = maxNode(m._1); + down$c = false; + down$r = Data$dMaybe.$Maybe( + "Just", + Data$dTuple.$Tuple(m._3, removeMaxNode(Data$dList$dTypes.$List("Cons", $TreeContext("ThreeLeft", max.key, max.value, m._4, m._5, m._6, m._7), ctx))(m._1)) + ); + continue; + } + if (v.tag === "EQ") { + const max = maxNode(m._4); + down$c = false; + down$r = Data$dMaybe.$Maybe( + "Just", + Data$dTuple.$Tuple(m._6, removeMaxNode(Data$dList$dTypes.$List("Cons", $TreeContext("ThreeMiddle", m._1, m._2, m._3, max.key, max.value, m._7), ctx))(m._4)) + ); + continue; + } + if (v3.tag === "LT") { + down$a0 = Data$dList$dTypes.$List("Cons", $TreeContext("ThreeLeft", m._2, m._3, m._4, m._5, m._6, m._7), ctx); + down$a1 = m._1; + continue; + } + if (v3.tag === "GT") { + if (v.tag === "LT") { + down$a0 = Data$dList$dTypes.$List("Cons", $TreeContext("ThreeMiddle", m._1, m._2, m._3, m._5, m._6, m._7), ctx); + down$a1 = m._4; + continue; + } + down$a0 = Data$dList$dTypes.$List("Cons", $TreeContext("ThreeRight", m._1, m._2, m._3, m._4, m._5, m._6), ctx); + down$a1 = m._7; + continue; + } + down$a0 = Data$dList$dTypes.$List("Cons", $TreeContext("ThreeRight", m._1, m._2, m._3, m._4, m._5, m._6), ctx); + down$a1 = m._7; + continue; + } + $runtime.fail(); + }; + return down$r; + }; + return down(Data$dList$dTypes.Nil); +}; +const foldableMap = { + foldr: f => z => m => { + if (m.tag === "Leaf") { return z; } + if (m.tag === "Two") { return foldableMap.foldr(f)(f(m._3)(foldableMap.foldr(f)(z)(m._4)))(m._1); } + if (m.tag === "Three") { return foldableMap.foldr(f)(f(m._3)(foldableMap.foldr(f)(f(m._6)(foldableMap.foldr(f)(z)(m._7)))(m._4)))(m._1); } + $runtime.fail(); + }, + foldl: f => z => m => { + if (m.tag === "Leaf") { return z; } + if (m.tag === "Two") { return foldableMap.foldl(f)(f(foldableMap.foldl(f)(z)(m._1))(m._3))(m._4); } + if (m.tag === "Three") { return foldableMap.foldl(f)(f(foldableMap.foldl(f)(f(foldableMap.foldl(f)(z)(m._1))(m._3))(m._4))(m._6))(m._7); } + $runtime.fail(); + }, + foldMap: dictMonoid => { + const append2 = dictMonoid.Semigroup0().append; + return f => m => { + if (m.tag === "Leaf") { return dictMonoid.mempty; } + if (m.tag === "Two") { return append2(foldableMap.foldMap(dictMonoid)(f)(m._1))(append2(f(m._3))(foldableMap.foldMap(dictMonoid)(f)(m._4))); } + if (m.tag === "Three") { + return append2(foldableMap.foldMap(dictMonoid)(f)(m._1))(append2(f(m._3))(append2(foldableMap.foldMap(dictMonoid)(f)(m._4))(append2(f(m._6))(foldableMap.foldMap(dictMonoid)(f)(m._7))))); + } + $runtime.fail(); + }; + } +}; +const foldableWithIndexMap = { + foldrWithIndex: f => z => m => { + if (m.tag === "Leaf") { return z; } + if (m.tag === "Two") { return foldableWithIndexMap.foldrWithIndex(f)(f(m._2)(m._3)(foldableWithIndexMap.foldrWithIndex(f)(z)(m._4)))(m._1); } + if (m.tag === "Three") { + return foldableWithIndexMap.foldrWithIndex(f)(f(m._2)(m._3)(foldableWithIndexMap.foldrWithIndex(f)(f(m._5)(m._6)(foldableWithIndexMap.foldrWithIndex(f)(z)(m._7)))(m._4)))(m._1); + } + $runtime.fail(); + }, + foldlWithIndex: f => z => m => { + if (m.tag === "Leaf") { return z; } + if (m.tag === "Two") { return foldableWithIndexMap.foldlWithIndex(f)(f(m._2)(foldableWithIndexMap.foldlWithIndex(f)(z)(m._1))(m._3))(m._4); } + if (m.tag === "Three") { + return foldableWithIndexMap.foldlWithIndex(f)(f(m._5)(foldableWithIndexMap.foldlWithIndex(f)(f(m._2)(foldableWithIndexMap.foldlWithIndex(f)(z)(m._1))(m._3))(m._4))(m._6))(m._7); + } + $runtime.fail(); + }, + foldMapWithIndex: dictMonoid => { + const append2 = dictMonoid.Semigroup0().append; + return f => m => { + if (m.tag === "Leaf") { return dictMonoid.mempty; } + if (m.tag === "Two") { + return append2(foldableWithIndexMap.foldMapWithIndex(dictMonoid)(f)(m._1))(append2(f(m._2)(m._3))(foldableWithIndexMap.foldMapWithIndex(dictMonoid)(f)(m._4))); + } + if (m.tag === "Three") { + return append2(foldableWithIndexMap.foldMapWithIndex(dictMonoid)(f)(m._1))(append2(f(m._2)(m._3))(append2(foldableWithIndexMap.foldMapWithIndex(dictMonoid)(f)(m._4))(append2(f(m._5)(m._6))(foldableWithIndexMap.foldMapWithIndex(dictMonoid)(f)(m._7))))); + } + $runtime.fail(); + }; + }, + Foldable0: () => foldableMap +}; +const keys = /* #__PURE__ */ (() => foldableWithIndexMap.foldrWithIndex(k => v => acc => Data$dList$dTypes.$List("Cons", k, acc))(Data$dList$dTypes.Nil))(); +const traversableMap = { + traverse: dictApplicative => { + const Apply0 = dictApplicative.Apply0(); + const map1 = Apply0.Functor0().map; + return v => v1 => { + if (v1.tag === "Leaf") { return dictApplicative.pure(Leaf); } + if (v1.tag === "Two") { + return Apply0.apply(Apply0.apply(Apply0.apply(map1(Two)(traversableMap.traverse(dictApplicative)(v)(v1._1)))(dictApplicative.pure(v1._2)))(v(v1._3)))(traversableMap.traverse(dictApplicative)(v)(v1._4)); + } + if (v1.tag === "Three") { + return Apply0.apply(Apply0.apply(Apply0.apply(Apply0.apply(Apply0.apply(Apply0.apply(map1(Three)(traversableMap.traverse(dictApplicative)(v)(v1._1)))(dictApplicative.pure(v1._2)))(v(v1._3)))(traversableMap.traverse(dictApplicative)(v)(v1._4)))(dictApplicative.pure(v1._5)))(v(v1._6)))(traversableMap.traverse(dictApplicative)(v)(v1._7)); + } + $runtime.fail(); + }; + }, + sequence: dictApplicative => traversableMap.traverse(dictApplicative)(identity), + Functor0: () => functorMap, + Foldable1: () => foldableMap +}; +const traversableWithIndexMap = { + traverseWithIndex: dictApplicative => { + const Apply0 = dictApplicative.Apply0(); + const map1 = Apply0.Functor0().map; + return v => v1 => { + if (v1.tag === "Leaf") { return dictApplicative.pure(Leaf); } + if (v1.tag === "Two") { + return Apply0.apply(Apply0.apply(Apply0.apply(map1(Two)(traversableWithIndexMap.traverseWithIndex(dictApplicative)(v)(v1._1)))(dictApplicative.pure(v1._2)))(v(v1._2)(v1._3)))(traversableWithIndexMap.traverseWithIndex(dictApplicative)(v)(v1._4)); + } + if (v1.tag === "Three") { + return Apply0.apply(Apply0.apply(Apply0.apply(Apply0.apply(Apply0.apply(Apply0.apply(map1(Three)(traversableWithIndexMap.traverseWithIndex(dictApplicative)(v)(v1._1)))(dictApplicative.pure(v1._2)))(v(v1._2)(v1._3)))(traversableWithIndexMap.traverseWithIndex(dictApplicative)(v)(v1._4)))(dictApplicative.pure(v1._5)))(v(v1._5)(v1._6)))(traversableWithIndexMap.traverseWithIndex(dictApplicative)(v)(v1._7)); + } + $runtime.fail(); + }; + }, + FunctorWithIndex0: () => functorWithIndexMap, + FoldableWithIndex1: () => foldableWithIndexMap, + Traversable2: () => traversableMap +}; +const values = /* #__PURE__ */ (() => foldableMap.foldr(Data$dList$dTypes.Cons)(Data$dList$dTypes.Nil))(); +const foldSubmapBy = dictOrd => appendFn => memptyValue => kmin => kmax => f => { + const tooSmall = (() => { + if (kmin.tag === "Just") { return k => dictOrd.compare(k)(kmin._1).tag === "LT"; } + if (kmin.tag === "Nothing") { return v => false; } + $runtime.fail(); + })(); + const tooLarge = (() => { + if (kmax.tag === "Just") { return k => dictOrd.compare(k)(kmax._1).tag === "GT"; } + if (kmax.tag === "Nothing") { return v => false; } + $runtime.fail(); + })(); + const inBounds = (() => { + if (kmin.tag === "Just") { + if (kmax.tag === "Just") { return k => !(dictOrd.compare(kmin._1)(k).tag === "GT") && !(dictOrd.compare(k)(kmax._1).tag === "GT"); } + if (kmax.tag === "Nothing") { return k => !(dictOrd.compare(kmin._1)(k).tag === "GT"); } + $runtime.fail(); + } + if (kmin.tag === "Nothing") { + if (kmax.tag === "Just") { return k => !(dictOrd.compare(k)(kmax._1).tag === "GT"); } + if (kmax.tag === "Nothing") { return v => true; } + $runtime.fail(); + } + $runtime.fail(); + })(); + const go = v => { + if (v.tag === "Leaf") { return memptyValue; } + if (v.tag === "Two") { + return appendFn(appendFn((() => { + if (tooSmall(v._2)) { return memptyValue; } + return go(v._1); + })())((() => { + if (inBounds(v._2)) { return f(v._2)(v._3); } + return memptyValue; + })()))((() => { + if (tooLarge(v._2)) { return memptyValue; } + return go(v._4); + })()); + } + if (v.tag === "Three") { + return appendFn(appendFn(appendFn(appendFn((() => { + if (tooSmall(v._2)) { return memptyValue; } + return go(v._1); + })())((() => { + if (inBounds(v._2)) { return f(v._2)(v._3); } + return memptyValue; + })()))((() => { + if (tooSmall(v._5) || tooLarge(v._2)) { return memptyValue; } + return go(v._4); + })()))((() => { + if (inBounds(v._5)) { return f(v._5)(v._6); } + return memptyValue; + })()))((() => { + if (tooLarge(v._5)) { return memptyValue; } + return go(v._7); + })()); + } + $runtime.fail(); + }; + return go; +}; +const foldSubmap = dictOrd => dictMonoid => foldSubmapBy(dictOrd)(dictMonoid.Semigroup0().append)(dictMonoid.mempty); +const findMin = /* #__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 === "Leaf") { + go$c = false; + go$r = v; + continue; + } + if (v1.tag === "Two") { + go$a0 = Data$dMaybe.$Maybe("Just", {key: v1._2, value: v1._3}); + go$a1 = v1._1; + continue; + } + if (v1.tag === "Three") { + go$a0 = Data$dMaybe.$Maybe("Just", {key: v1._2, value: v1._3}); + go$a1 = v1._1; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go(Data$dMaybe.Nothing); +})(); +const lookupGT = dictOrd => k => { + const go = v => { + if (v.tag === "Leaf") { return Data$dMaybe.Nothing; } + if (v.tag === "Two") { + const v2 = dictOrd.compare(k)(v._2); + if (v2.tag === "EQ") { return findMin(v._4); } + if (v2.tag === "LT") { + return Data$dMaybe.$Maybe( + "Just", + (() => { + const $5 = go(v._1); + if ($5.tag === "Nothing") { return {key: v._2, value: v._3}; } + if ($5.tag === "Just") { return $5._1; } + $runtime.fail(); + })() + ); + } + if (v2.tag === "GT") { return go(v._4); } + $runtime.fail(); + } + if (v.tag === "Three") { + const v3 = dictOrd.compare(k)(v._2); + if (v3.tag === "EQ") { return findMin($Map("Two", v._4, v._5, v._6, v._7)); } + if (v3.tag === "LT") { + return Data$dMaybe.$Maybe( + "Just", + (() => { + const $5 = go(v._1); + if ($5.tag === "Nothing") { return {key: v._2, value: v._3}; } + if ($5.tag === "Just") { return $5._1; } + $runtime.fail(); + })() + ); + } + if (v3.tag === "GT") { return go($Map("Two", v._4, v._5, v._6, v._7)); } + $runtime.fail(); + } + $runtime.fail(); + }; + return go; +}; +const findMax = /* #__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 === "Leaf") { + go$c = false; + go$r = v; + continue; + } + if (v1.tag === "Two") { + go$a0 = Data$dMaybe.$Maybe("Just", {key: v1._2, value: v1._3}); + go$a1 = v1._4; + continue; + } + if (v1.tag === "Three") { + go$a0 = Data$dMaybe.$Maybe("Just", {key: v1._5, value: v1._6}); + go$a1 = v1._7; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go(Data$dMaybe.Nothing); +})(); +const lookupLT = dictOrd => k => { + const go = v => { + if (v.tag === "Leaf") { return Data$dMaybe.Nothing; } + if (v.tag === "Two") { + const v2 = dictOrd.compare(k)(v._2); + if (v2.tag === "EQ") { return findMax(v._1); } + if (v2.tag === "GT") { + return Data$dMaybe.$Maybe( + "Just", + (() => { + const $5 = go(v._4); + if ($5.tag === "Nothing") { return {key: v._2, value: v._3}; } + if ($5.tag === "Just") { return $5._1; } + $runtime.fail(); + })() + ); + } + if (v2.tag === "LT") { return go(v._1); } + $runtime.fail(); + } + if (v.tag === "Three") { + const v3 = dictOrd.compare(k)(v._5); + if (v3.tag === "EQ") { return findMax($Map("Two", v._1, v._2, v._3, v._4)); } + if (v3.tag === "GT") { + return Data$dMaybe.$Maybe( + "Just", + (() => { + const $5 = go(v._7); + if ($5.tag === "Nothing") { return {key: v._5, value: v._6}; } + if ($5.tag === "Just") { return $5._1; } + $runtime.fail(); + })() + ); + } + if (v3.tag === "LT") { return go($Map("Two", v._1, v._2, v._3, v._4)); } + $runtime.fail(); + } + $runtime.fail(); + }; + return go; +}; +const eqMap = dictEq => dictEq1 => { + const eq1 = Data$dEq.eqArrayImpl(x => y => dictEq.eq(x._1)(y._1) && dictEq1.eq(x._2)(y._2)); + return {eq: m1 => m2 => eq1(toUnfoldable(Data$dUnfoldable.unfoldableArray)(m1))(toUnfoldable(Data$dUnfoldable.unfoldableArray)(m2))}; +}; +const ordMap = dictOrd => { + const ordTuple = Data$dTuple.ordTuple(dictOrd); + const eqMap1 = eqMap(dictOrd.Eq0()); + return dictOrd1 => { + const compare = Data$dOrd.ordArray(ordTuple(dictOrd1)).compare; + const eqMap2 = eqMap1(dictOrd1.Eq0()); + return {compare: m1 => m2 => compare(toUnfoldable(Data$dUnfoldable.unfoldableArray)(m1))(toUnfoldable(Data$dUnfoldable.unfoldableArray)(m2)), Eq0: () => eqMap2}; + }; +}; +const eq1Map = dictEq => ({eq1: dictEq1 => eqMap(dictEq)(dictEq1).eq}); +const ord1Map = dictOrd => { + const ordMap1 = ordMap(dictOrd); + const $2 = dictOrd.Eq0(); + const eq1Map1 = {eq1: dictEq1 => eqMap($2)(dictEq1).eq}; + return {compare1: dictOrd1 => ordMap1(dictOrd1).compare, Eq10: () => eq1Map1}; +}; +const empty = Leaf; +const fromFoldable = dictOrd => dictFoldable => dictFoldable.foldl(m => v => insert(dictOrd)(v._1)(v._2)(m))(Leaf); +const filterWithKey = dictOrd => { + const fromFoldable1 = fromFoldable(dictOrd)(Data$dList$dLazy$dTypes.foldableList); + return predicate => { + const $3 = Data$dList$dLazy.filter(v => predicate(v._1)(v._2)); + return x => fromFoldable1($3(toUnfoldable(Data$dList$dLazy$dTypes.unfoldableList)(x))); + }; +}; +const filter = dictOrd => { + const filterWithKey1 = filterWithKey(dictOrd); + return predicate => filterWithKey1(v => predicate); +}; +const filterKeys = dictOrd => { + const filterWithKey1 = filterWithKey(dictOrd); + return predicate => filterWithKey1(x => { + const $4 = predicate(x); + return v => $4; + }); +}; +const fromFoldableWithIndex = dictOrd => dictFoldableWithIndex => dictFoldableWithIndex.foldlWithIndex(k => m => v => insert(dictOrd)(k)(v)(m))(Leaf); +const intersectionWith = dictOrd => f => m1 => m2 => { + const go = go$a0$copy => go$a1$copy => go$a2$copy => { + let go$a0 = go$a0$copy, go$a1 = go$a1$copy, go$a2 = go$a2$copy, go$c = true, go$r; + while (go$c) { + const v = go$a0, v1 = go$a1, v2 = go$a2; + if (v.tag === "Nil") { + go$c = false; + go$r = v2; + continue; + } + if (v1.tag === "Nil") { + go$c = false; + go$r = v2; + continue; + } + if (v.tag === "Cons") { + if (v1.tag === "Cons") { + const v3 = dictOrd.compare(v._1._1)(v1._1._1); + if (v3.tag === "LT") { + go$a0 = v._2; + go$a1 = v1; + go$a2 = v2; + continue; + } + if (v3.tag === "EQ") { + go$a0 = v._2; + go$a1 = v1._2; + go$a2 = insert(dictOrd)(v._1._1)(f(v._1._2)(v1._1._2))(v2); + continue; + } + if (v3.tag === "GT") { + go$a0 = v; + go$a1 = v1._2; + go$a2 = v2; + continue; + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + }; + return go$r; + }; + return go(toUnfoldable(Data$dList$dTypes.unfoldableList)(m1))(toUnfoldable(Data$dList$dTypes.unfoldableList)(m2))(Leaf); +}; +const intersection = dictOrd => intersectionWith(dictOrd)(Data$dFunction.const); +const mapMaybeWithKey = dictOrd => f => foldableWithIndexMap.foldrWithIndex(k => a => acc => { + const $5 = f(k)(a); + if ($5.tag === "Nothing") { return acc; } + if ($5.tag === "Just") { return insert(dictOrd)(k)($5._1)(acc); } + $runtime.fail(); +})(Leaf); +const mapMaybe = dictOrd => x => mapMaybeWithKey(dictOrd)(v => x); +const $$delete = dictOrd => k => m => { + const $3 = pop(dictOrd)(k)(m); + if ($3.tag === "Nothing") { return m; } + if ($3.tag === "Just") { return $3._1._2; } + $runtime.fail(); +}; +const difference = dictOrd => m1 => m2 => { + 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 = $$delete(dictOrd)(v._1)(b); + go$a1 = v._2; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go(m1)(foldableWithIndexMap.foldrWithIndex(k => v => acc => Data$dList$dTypes.$List("Cons", k, acc))(Data$dList$dTypes.Nil)(m2)); +}; +const checkValid = tree => { + const allHeights = v => { + if (v.tag === "Leaf") { return Data$dList$dTypes.$List("Cons", 0, Data$dList$dTypes.Nil); } + if (v.tag === "Two") { return Data$dList$dTypes.listMap(n => n + 1 | 0)(Data$dList$dTypes.foldableList.foldr(Data$dList$dTypes.Cons)(allHeights(v._4))(allHeights(v._1))); } + if (v.tag === "Three") { + return Data$dList$dTypes.listMap(n => n + 1 | 0)(Data$dList$dTypes.foldableList.foldr(Data$dList$dTypes.Cons)(Data$dList$dTypes.foldableList.foldr(Data$dList$dTypes.Cons)(allHeights(v._7))(allHeights(v._4)))(allHeights(v._1))); + } + $runtime.fail(); + }; + 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 = b + 1 | 0; + go$a1 = v._2; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go(0)(nub(allHeights(tree))) === 1; +}; +const catMaybes = dictOrd => mapMaybe(dictOrd)(identity); +const applyMap = dictOrd => ({apply: intersectionWith(dictOrd)(identity), Functor0: () => functorMap}); +const bindMap = dictOrd => ( + { + bind: m => f => mapMaybeWithKey(dictOrd)(k => { + const $4 = lookup(dictOrd)(k); + return x => $4(f(x)); + })(m), + Apply0: () => ({apply: intersectionWith(dictOrd)(identity), Functor0: () => functorMap}) + } +); +const alter = dictOrd => f => k => m => { + const v = f(lookup(dictOrd)(k)(m)); + if (v.tag === "Nothing") { return $$delete(dictOrd)(k)(m); } + if (v.tag === "Just") { return insert(dictOrd)(k)(v._1)(m); } + $runtime.fail(); +}; +const fromFoldableWith = dictOrd => dictFoldable => f => dictFoldable.foldl(m => v => alter(dictOrd)(v1 => { + if (v1.tag === "Just") { return Data$dMaybe.$Maybe("Just", f(v._2)(v1._1)); } + if (v1.tag === "Nothing") { return Data$dMaybe.$Maybe("Just", v._2); } + $runtime.fail(); +})(v._1)(m))(Leaf); +const insertWith = dictOrd => f => k => v => alter(dictOrd)(x => Data$dMaybe.$Maybe( + "Just", + (() => { + if (x.tag === "Nothing") { return v; } + if (x.tag === "Just") { return f(x._1)(v); } + $runtime.fail(); + })() +))(k); +const unionWith = dictOrd => f => m1 => m2 => foldableWithIndexMap.foldlWithIndex(k => m => v => alter(dictOrd)((() => { + const $7 = f(v); + return x => Data$dMaybe.$Maybe( + "Just", + (() => { + if (x.tag === "Nothing") { return v; } + if (x.tag === "Just") { return $7(x._1); } + $runtime.fail(); + })() + ); +})())(k)(m))(m2)(m1); +const semigroupMap = () => dictOrd => dictSemigroup => ({append: l => r => unionWith(dictOrd)(dictSemigroup.append)(l)(r)}); +const monoidSemigroupMap = () => dictOrd => dictSemigroup => { + const semigroupMap3 = {append: l => r => unionWith(dictOrd)(dictSemigroup.append)(l)(r)}; + return {mempty: Leaf, Semigroup0: () => semigroupMap3}; +}; +const union = dictOrd => unionWith(dictOrd)(Data$dFunction.const); +const submap = dictOrd => kmin => kmax => foldSubmapBy(dictOrd)(union(dictOrd))(Leaf)(kmin)(kmax)(singleton); +const unions = dictOrd => dictFoldable => dictFoldable.foldl(union(dictOrd))(Leaf); +const update = dictOrd => f => k => m => alter(dictOrd)(v2 => { + if (v2.tag === "Nothing") { return Data$dMaybe.Nothing; } + if (v2.tag === "Just") { return f(v2._1); } + $runtime.fail(); +})(k)(m); +const altMap = dictOrd => ({alt: union(dictOrd), Functor0: () => functorMap}); +const plusMap = dictOrd => ({empty: Leaf, Alt0: () => ({alt: union(dictOrd), Functor0: () => functorMap})}); +export { + $KickUp, + $Map, + $TreeContext, + KickUp, + Leaf, + Three, + ThreeLeft, + ThreeMiddle, + ThreeRight, + Two, + TwoLeft, + TwoRight, + all, + altMap, + alter, + applyMap, + bindMap, + catMaybes, + checkValid, + $$delete as delete, + difference, + empty, + eq1Map, + eqMap, + filter, + filterKeys, + filterWithKey, + findMax, + findMin, + foldSubmap, + foldSubmapBy, + foldableMap, + foldableWithIndexMap, + fromFoldable, + fromFoldableWith, + fromFoldableWithIndex, + fromZipper, + functorMap, + functorWithIndexMap, + identity, + insert, + insertWith, + intersection, + intersectionWith, + isEmpty, + isSubmap, + keys, + lookup, + lookupGE, + lookupGT, + lookupLE, + lookupLT, + mapMaybe, + mapMaybeWithKey, + member, + monoidSemigroupMap, + nub, + ord1Map, + ordMap, + plusMap, + pop, + semigroupMap, + showMap, + showTree, + singleton, + size, + submap, + toUnfoldable, + toUnfoldableUnordered, + traversableMap, + traversableWithIndexMap, + union, + unionWith, + unions, + update, + values +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Map/index.js b/.storybook/purescript-indexer/output-es/Data.Map/index.js new file mode 100644 index 0000000..cd47dc8 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Map/index.js @@ -0,0 +1,48 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dMap$dInternal from "../Data.Map.Internal/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +const SemigroupMap = x => x; +const traversableWithIndexSemigroupMap = Data$dMap$dInternal.traversableWithIndexMap; +const traversableSemigroupMap = Data$dMap$dInternal.traversableMap; +const showSemigroupMap = dictShow => dictShow1 => Data$dMap$dInternal.showMap(dictShow)(dictShow1); +const semigroupSemigroupMap = dictOrd => dictSemigroup => ({append: v => v1 => Data$dMap$dInternal.unionWith(dictOrd)(dictSemigroup.append)(v)(v1)}); +const plusSemigroupMap = dictOrd => ({empty: Data$dMap$dInternal.Leaf, Alt0: () => ({alt: Data$dMap$dInternal.union(dictOrd), Functor0: () => Data$dMap$dInternal.functorMap})}); +const ordSemigroupMap = dictOrd => Data$dMap$dInternal.ordMap(dictOrd); +const ord1SemigroupMap = dictOrd => Data$dMap$dInternal.ord1Map(dictOrd); +const newtypeSemigroupMap = {Coercible0: () => undefined}; +const monoidSemigroupMap = dictOrd => dictSemigroup => { + const semigroupSemigroupMap2 = {append: v => v1 => Data$dMap$dInternal.unionWith(dictOrd)(dictSemigroup.append)(v)(v1)}; + return {mempty: Data$dMap$dInternal.Leaf, Semigroup0: () => semigroupSemigroupMap2}; +}; +const keys = x => Data$dMap$dInternal.functorMap.map(v => Data$dUnit.unit)(x); +const functorWithIndexSemigroupMap = Data$dMap$dInternal.functorWithIndexMap; +const functorSemigroupMap = Data$dMap$dInternal.functorMap; +const foldableWithIndexSemigroupMap = Data$dMap$dInternal.foldableWithIndexMap; +const foldableSemigroupMap = Data$dMap$dInternal.foldableMap; +const eqSemigroupMap = dictEq => dictEq1 => Data$dMap$dInternal.eqMap(dictEq)(dictEq1); +const eq1SemigroupMap = dictEq => ({eq1: dictEq1 => Data$dMap$dInternal.eqMap(dictEq)(dictEq1).eq}); +const bindSemigroupMap = dictOrd => Data$dMap$dInternal.bindMap(dictOrd); +const applySemigroupMap = dictOrd => ({apply: Data$dMap$dInternal.intersectionWith(dictOrd)(Data$dMap$dInternal.identity), Functor0: () => Data$dMap$dInternal.functorMap}); +const altSemigroupMap = dictOrd => ({alt: Data$dMap$dInternal.union(dictOrd), Functor0: () => Data$dMap$dInternal.functorMap}); +export { + SemigroupMap, + altSemigroupMap, + applySemigroupMap, + bindSemigroupMap, + eq1SemigroupMap, + eqSemigroupMap, + foldableSemigroupMap, + foldableWithIndexSemigroupMap, + functorSemigroupMap, + functorWithIndexSemigroupMap, + keys, + monoidSemigroupMap, + newtypeSemigroupMap, + ord1SemigroupMap, + ordSemigroupMap, + plusSemigroupMap, + semigroupSemigroupMap, + showSemigroupMap, + traversableSemigroupMap, + traversableWithIndexSemigroupMap +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Maybe.First/index.js b/.storybook/purescript-indexer/output-es/Data.Maybe.First/index.js new file mode 100644 index 0000000..4bbb671 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Maybe.First/index.js @@ -0,0 +1,68 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +const First = x => x; +const showFirst = dictShow => ( + { + show: v => { + if (v.tag === "Just") { return "First ((Just " + dictShow.show(v._1) + "))"; } + if (v.tag === "Nothing") { return "First (Nothing)"; } + $runtime.fail(); + } + } +); +const semigroupFirst = { + append: v => v1 => { + if (v.tag === "Just") { return v; } + return v1; + } +}; +const ordFirst = dictOrd => Data$dMaybe.ordMaybe(dictOrd); +const ord1First = Data$dMaybe.ord1Maybe; +const newtypeFirst = {Coercible0: () => undefined}; +const monoidFirst = {mempty: Data$dMaybe.Nothing, Semigroup0: () => semigroupFirst}; +const monadFirst = Data$dMaybe.monadMaybe; +const invariantFirst = Data$dMaybe.invariantMaybe; +const functorFirst = Data$dMaybe.functorMaybe; +const extendFirst = Data$dMaybe.extendMaybe; +const eqFirst = dictEq => ( + { + eq: x => y => { + if (x.tag === "Nothing") { return y.tag === "Nothing"; } + if (x.tag === "Just") { + if (y.tag === "Just") { return dictEq.eq(x._1)(y._1); } + return false; + } + return false; + } + } +); +const eq1First = Data$dMaybe.eq1Maybe; +const boundedFirst = dictBounded => Data$dMaybe.boundedMaybe(dictBounded); +const bindFirst = Data$dMaybe.bindMaybe; +const applyFirst = Data$dMaybe.applyMaybe; +const applicativeFirst = Data$dMaybe.applicativeMaybe; +const altFirst = /* #__PURE__ */ (() => ({alt: semigroupFirst.append, Functor0: () => Data$dMaybe.functorMaybe}))(); +const plusFirst = {empty: Data$dMaybe.Nothing, Alt0: () => altFirst}; +const alternativeFirst = {Applicative0: () => Data$dMaybe.applicativeMaybe, Plus1: () => plusFirst}; +export { + First, + altFirst, + alternativeFirst, + applicativeFirst, + applyFirst, + bindFirst, + boundedFirst, + eq1First, + eqFirst, + extendFirst, + functorFirst, + invariantFirst, + monadFirst, + monoidFirst, + newtypeFirst, + ord1First, + ordFirst, + plusFirst, + semigroupFirst, + showFirst +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Maybe.Last/index.js b/.storybook/purescript-indexer/output-es/Data.Maybe.Last/index.js new file mode 100644 index 0000000..d83026d --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Maybe.Last/index.js @@ -0,0 +1,69 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +const Last = x => x; +const showLast = dictShow => ( + { + show: v => { + if (v.tag === "Just") { return "(Last (Just " + dictShow.show(v._1) + "))"; } + if (v.tag === "Nothing") { return "(Last Nothing)"; } + $runtime.fail(); + } + } +); +const semigroupLast = { + append: v => v1 => { + if (v1.tag === "Just") { return v1; } + if (v1.tag === "Nothing") { return v; } + $runtime.fail(); + } +}; +const ordLast = dictOrd => Data$dMaybe.ordMaybe(dictOrd); +const ord1Last = Data$dMaybe.ord1Maybe; +const newtypeLast = {Coercible0: () => undefined}; +const monoidLast = {mempty: Data$dMaybe.Nothing, Semigroup0: () => semigroupLast}; +const monadLast = Data$dMaybe.monadMaybe; +const invariantLast = Data$dMaybe.invariantMaybe; +const functorLast = Data$dMaybe.functorMaybe; +const extendLast = Data$dMaybe.extendMaybe; +const eqLast = dictEq => ( + { + eq: x => y => { + if (x.tag === "Nothing") { return y.tag === "Nothing"; } + if (x.tag === "Just") { + if (y.tag === "Just") { return dictEq.eq(x._1)(y._1); } + return false; + } + return false; + } + } +); +const eq1Last = Data$dMaybe.eq1Maybe; +const boundedLast = dictBounded => Data$dMaybe.boundedMaybe(dictBounded); +const bindLast = Data$dMaybe.bindMaybe; +const applyLast = Data$dMaybe.applyMaybe; +const applicativeLast = Data$dMaybe.applicativeMaybe; +const altLast = /* #__PURE__ */ (() => ({alt: semigroupLast.append, Functor0: () => Data$dMaybe.functorMaybe}))(); +const plusLast = {empty: Data$dMaybe.Nothing, Alt0: () => altLast}; +const alternativeLast = {Applicative0: () => Data$dMaybe.applicativeMaybe, Plus1: () => plusLast}; +export { + Last, + altLast, + alternativeLast, + applicativeLast, + applyLast, + bindLast, + boundedLast, + eq1Last, + eqLast, + extendLast, + functorLast, + invariantLast, + monadLast, + monoidLast, + newtypeLast, + ord1Last, + ordLast, + plusLast, + semigroupLast, + showLast +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Maybe/index.js b/.storybook/purescript-indexer/output-es/Data.Maybe/index.js new file mode 100644 index 0000000..7286a7b --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Maybe/index.js @@ -0,0 +1,232 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dGeneric$dRep from "../Data.Generic.Rep/index.js"; +import * as Data$dOrdering from "../Data.Ordering/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +const $Maybe = (tag, _1) => ({tag, _1}); +const identity = x => x; +const Nothing = /* #__PURE__ */ $Maybe("Nothing"); +const Just = value0 => $Maybe("Just", value0); +const showMaybe = dictShow => ( + { + show: v => { + if (v.tag === "Just") { return "(Just " + (dictShow.show(v._1) + ")"); } + if (v.tag === "Nothing") { return "Nothing"; } + $runtime.fail(); + } + } +); +const semigroupMaybe = dictSemigroup => ( + { + append: v => v1 => { + if (v.tag === "Nothing") { return v1; } + if (v1.tag === "Nothing") { return v; } + if (v.tag === "Just") { + if (v1.tag === "Just") { return $Maybe("Just", dictSemigroup.append(v._1)(v1._1)); } + $runtime.fail(); + } + $runtime.fail(); + } + } +); +const optional = dictAlt => { + const map1 = dictAlt.Functor0().map; + return dictApplicative => a => dictAlt.alt(map1(Just)(a))(dictApplicative.pure(Nothing)); +}; +const monoidMaybe = dictSemigroup => { + const semigroupMaybe1 = semigroupMaybe(dictSemigroup); + return {mempty: Nothing, Semigroup0: () => semigroupMaybe1}; +}; +const maybe$p = v => v1 => v2 => { + if (v2.tag === "Nothing") { return v(Data$dUnit.unit); } + if (v2.tag === "Just") { return v1(v2._1); } + $runtime.fail(); +}; +const maybe = v => v1 => v2 => { + if (v2.tag === "Nothing") { return v; } + if (v2.tag === "Just") { return v1(v2._1); } + $runtime.fail(); +}; +const isNothing = v2 => { + if (v2.tag === "Nothing") { return true; } + if (v2.tag === "Just") { return false; } + $runtime.fail(); +}; +const isJust = v2 => { + if (v2.tag === "Nothing") { return false; } + if (v2.tag === "Just") { return true; } + $runtime.fail(); +}; +const genericMaybe = { + to: x => { + if (x.tag === "Inl") { return Nothing; } + if (x.tag === "Inr") { return $Maybe("Just", x._1); } + $runtime.fail(); + }, + from: x => { + if (x.tag === "Nothing") { return Data$dGeneric$dRep.$Sum("Inl", Data$dGeneric$dRep.NoArguments); } + if (x.tag === "Just") { return Data$dGeneric$dRep.$Sum("Inr", x._1); } + $runtime.fail(); + } +}; +const functorMaybe = { + map: v => v1 => { + if (v1.tag === "Just") { return $Maybe("Just", v(v1._1)); } + return Nothing; + } +}; +const invariantMaybe = {imap: f => v => functorMaybe.map(f)}; +const fromMaybe$p = a => maybe$p(a)(identity); +const fromMaybe = a => v2 => { + if (v2.tag === "Nothing") { return a; } + if (v2.tag === "Just") { return v2._1; } + $runtime.fail(); +}; +const fromJust = () => v => { + if (v.tag === "Just") { return v._1; } + $runtime.fail(); +}; +const extendMaybe = { + extend: v => v1 => { + if (v1.tag === "Nothing") { return Nothing; } + return $Maybe("Just", v(v1)); + }, + Functor0: () => functorMaybe +}; +const eqMaybe = dictEq => ( + { + eq: x => y => { + if (x.tag === "Nothing") { return y.tag === "Nothing"; } + if (x.tag === "Just") { + if (y.tag === "Just") { return dictEq.eq(x._1)(y._1); } + return false; + } + return false; + } + } +); +const ordMaybe = dictOrd => { + const $1 = dictOrd.Eq0(); + const eqMaybe1 = { + eq: x => y => { + if (x.tag === "Nothing") { return y.tag === "Nothing"; } + if (x.tag === "Just") { + if (y.tag === "Just") { return $1.eq(x._1)(y._1); } + return false; + } + return false; + } + }; + return { + compare: x => y => { + if (x.tag === "Nothing") { + if (y.tag === "Nothing") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "Nothing") { return Data$dOrdering.GT; } + if (x.tag === "Just") { + if (y.tag === "Just") { return dictOrd.compare(x._1)(y._1); } + $runtime.fail(); + } + $runtime.fail(); + }, + Eq0: () => eqMaybe1 + }; +}; +const eq1Maybe = { + eq1: dictEq => x => y => { + if (x.tag === "Nothing") { return y.tag === "Nothing"; } + if (x.tag === "Just") { + if (y.tag === "Just") { return dictEq.eq(x._1)(y._1); } + return false; + } + return false; + } +}; +const ord1Maybe = {compare1: dictOrd => ordMaybe(dictOrd).compare, Eq10: () => eq1Maybe}; +const boundedMaybe = dictBounded => { + const ordMaybe1 = ordMaybe(dictBounded.Ord0()); + return {top: $Maybe("Just", dictBounded.top), bottom: Nothing, Ord0: () => ordMaybe1}; +}; +const 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; } + $runtime.fail(); + }, + Functor0: () => functorMaybe +}; +const bindMaybe = { + bind: v => v1 => { + if (v.tag === "Just") { return v1(v._1); } + if (v.tag === "Nothing") { return Nothing; } + $runtime.fail(); + }, + Apply0: () => applyMaybe +}; +const semiringMaybe = dictSemiring => ( + { + zero: Nothing, + one: $Maybe("Just", dictSemiring.one), + add: v => v1 => { + if (v.tag === "Nothing") { return v1; } + if (v1.tag === "Nothing") { return v; } + if (v.tag === "Just") { + if (v1.tag === "Just") { return $Maybe("Just", dictSemiring.add(v._1)(v1._1)); } + $runtime.fail(); + } + $runtime.fail(); + }, + mul: x => y => applyMaybe.apply((() => { + if (x.tag === "Just") { return $Maybe("Just", dictSemiring.mul(x._1)); } + return Nothing; + })())(y) + } +); +const applicativeMaybe = {pure: Just, Apply0: () => applyMaybe}; +const monadMaybe = {Applicative0: () => applicativeMaybe, Bind1: () => bindMaybe}; +const altMaybe = { + alt: v => v1 => { + if (v.tag === "Nothing") { return v1; } + return v; + }, + Functor0: () => functorMaybe +}; +const plusMaybe = {empty: Nothing, Alt0: () => altMaybe}; +const alternativeMaybe = {Applicative0: () => applicativeMaybe, Plus1: () => plusMaybe}; +export { + $Maybe, + Just, + Nothing, + altMaybe, + alternativeMaybe, + applicativeMaybe, + applyMaybe, + bindMaybe, + boundedMaybe, + eq1Maybe, + eqMaybe, + extendMaybe, + fromJust, + fromMaybe, + fromMaybe$p, + functorMaybe, + genericMaybe, + identity, + invariantMaybe, + isJust, + isNothing, + maybe, + maybe$p, + monadMaybe, + monoidMaybe, + optional, + ord1Maybe, + ordMaybe, + plusMaybe, + semigroupMaybe, + semiringMaybe, + showMaybe +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Monoid.Additive/index.js b/.storybook/purescript-indexer/output-es/Data.Monoid.Additive/index.js new file mode 100644 index 0000000..437986a --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Monoid.Additive/index.js @@ -0,0 +1,34 @@ +import * as $runtime from "../runtime.js"; +const Additive = x => x; +const showAdditive = dictShow => ({show: v => "(Additive " + (dictShow.show(v) + ")")}); +const semigroupAdditive = dictSemiring => ({append: v => v1 => dictSemiring.add(v)(v1)}); +const ordAdditive = dictOrd => dictOrd; +const monoidAdditive = dictSemiring => { + const semigroupAdditive1 = {append: v => v1 => dictSemiring.add(v)(v1)}; + return {mempty: dictSemiring.zero, Semigroup0: () => semigroupAdditive1}; +}; +const functorAdditive = {map: f => m => f(m)}; +const eqAdditive = dictEq => dictEq; +const eq1Additive = {eq1: dictEq => dictEq.eq}; +const ord1Additive = {compare1: dictOrd => dictOrd.compare, Eq10: () => eq1Additive}; +const boundedAdditive = dictBounded => dictBounded; +const applyAdditive = {apply: v => v1 => v(v1), Functor0: () => functorAdditive}; +const bindAdditive = {bind: v => f => f(v), Apply0: () => applyAdditive}; +const applicativeAdditive = {pure: Additive, Apply0: () => applyAdditive}; +const monadAdditive = {Applicative0: () => applicativeAdditive, Bind1: () => bindAdditive}; +export { + Additive, + applicativeAdditive, + applyAdditive, + bindAdditive, + boundedAdditive, + eq1Additive, + eqAdditive, + functorAdditive, + monadAdditive, + monoidAdditive, + ord1Additive, + ordAdditive, + semigroupAdditive, + showAdditive +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Monoid.Alternate/index.js b/.storybook/purescript-indexer/output-es/Data.Monoid.Alternate/index.js new file mode 100644 index 0000000..32727e1 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Monoid.Alternate/index.js @@ -0,0 +1,47 @@ +import * as $runtime from "../runtime.js"; +const Alternate = x => x; +const showAlternate = dictShow => ({show: v => "(Alternate " + (dictShow.show(v) + ")")}); +const semigroupAlternate = dictAlt => ({append: v => v1 => dictAlt.alt(v)(v1)}); +const plusAlternate = dictPlus => dictPlus; +const ordAlternate = dictOrd => dictOrd; +const ord1Alternate = dictOrd1 => dictOrd1; +const newtypeAlternate = {Coercible0: () => undefined}; +const monoidAlternate = dictPlus => { + const $1 = dictPlus.Alt0(); + const semigroupAlternate1 = {append: v => v1 => $1.alt(v)(v1)}; + return {mempty: dictPlus.empty, Semigroup0: () => semigroupAlternate1}; +}; +const monadAlternate = dictMonad => dictMonad; +const functorAlternate = dictFunctor => dictFunctor; +const extendAlternate = dictExtend => dictExtend; +const eqAlternate = dictEq => dictEq; +const eq1Alternate = dictEq1 => dictEq1; +const comonadAlternate = dictComonad => dictComonad; +const boundedAlternate = dictBounded => dictBounded; +const bindAlternate = dictBind => dictBind; +const applyAlternate = dictApply => dictApply; +const applicativeAlternate = dictApplicative => dictApplicative; +const alternativeAlternate = dictAlternative => dictAlternative; +const altAlternate = dictAlt => dictAlt; +export { + Alternate, + altAlternate, + alternativeAlternate, + applicativeAlternate, + applyAlternate, + bindAlternate, + boundedAlternate, + comonadAlternate, + eq1Alternate, + eqAlternate, + extendAlternate, + functorAlternate, + monadAlternate, + monoidAlternate, + newtypeAlternate, + ord1Alternate, + ordAlternate, + plusAlternate, + semigroupAlternate, + showAlternate +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Monoid.Conj/index.js b/.storybook/purescript-indexer/output-es/Data.Monoid.Conj/index.js new file mode 100644 index 0000000..ca887e9 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Monoid.Conj/index.js @@ -0,0 +1,22 @@ +import * as $runtime from "../runtime.js"; +const Conj = x => x; +const showConj = dictShow => ({show: v => "(Conj " + (dictShow.show(v) + ")")}); +const semiringConj = dictHeytingAlgebra => ( + {zero: dictHeytingAlgebra.tt, one: dictHeytingAlgebra.ff, add: v => v1 => dictHeytingAlgebra.conj(v)(v1), mul: v => v1 => dictHeytingAlgebra.disj(v)(v1)} +); +const semigroupConj = dictHeytingAlgebra => ({append: v => v1 => dictHeytingAlgebra.conj(v)(v1)}); +const ordConj = dictOrd => dictOrd; +const monoidConj = dictHeytingAlgebra => { + const semigroupConj1 = {append: v => v1 => dictHeytingAlgebra.conj(v)(v1)}; + return {mempty: dictHeytingAlgebra.tt, Semigroup0: () => semigroupConj1}; +}; +const functorConj = {map: f => m => f(m)}; +const eqConj = dictEq => dictEq; +const eq1Conj = {eq1: dictEq => dictEq.eq}; +const ord1Conj = {compare1: dictOrd => dictOrd.compare, Eq10: () => eq1Conj}; +const boundedConj = dictBounded => dictBounded; +const applyConj = {apply: v => v1 => v(v1), Functor0: () => functorConj}; +const bindConj = {bind: v => f => f(v), Apply0: () => applyConj}; +const applicativeConj = {pure: Conj, Apply0: () => applyConj}; +const monadConj = {Applicative0: () => applicativeConj, Bind1: () => bindConj}; +export {Conj, applicativeConj, applyConj, bindConj, boundedConj, eq1Conj, eqConj, functorConj, monadConj, monoidConj, ord1Conj, ordConj, semigroupConj, semiringConj, showConj}; diff --git a/.storybook/purescript-indexer/output-es/Data.Monoid.Disj/index.js b/.storybook/purescript-indexer/output-es/Data.Monoid.Disj/index.js new file mode 100644 index 0000000..6742c86 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Monoid.Disj/index.js @@ -0,0 +1,22 @@ +import * as $runtime from "../runtime.js"; +const Disj = x => x; +const showDisj = dictShow => ({show: v => "(Disj " + (dictShow.show(v) + ")")}); +const semiringDisj = dictHeytingAlgebra => ( + {zero: dictHeytingAlgebra.ff, one: dictHeytingAlgebra.tt, add: v => v1 => dictHeytingAlgebra.disj(v)(v1), mul: v => v1 => dictHeytingAlgebra.conj(v)(v1)} +); +const semigroupDisj = dictHeytingAlgebra => ({append: v => v1 => dictHeytingAlgebra.disj(v)(v1)}); +const ordDisj = dictOrd => dictOrd; +const monoidDisj = dictHeytingAlgebra => { + const semigroupDisj1 = {append: v => v1 => dictHeytingAlgebra.disj(v)(v1)}; + return {mempty: dictHeytingAlgebra.ff, Semigroup0: () => semigroupDisj1}; +}; +const functorDisj = {map: f => m => f(m)}; +const eqDisj = dictEq => dictEq; +const eq1Disj = {eq1: dictEq => dictEq.eq}; +const ord1Disj = {compare1: dictOrd => dictOrd.compare, Eq10: () => eq1Disj}; +const boundedDisj = dictBounded => dictBounded; +const applyDisj = {apply: v => v1 => v(v1), Functor0: () => functorDisj}; +const bindDisj = {bind: v => f => f(v), Apply0: () => applyDisj}; +const applicativeDisj = {pure: Disj, Apply0: () => applyDisj}; +const monadDisj = {Applicative0: () => applicativeDisj, Bind1: () => bindDisj}; +export {Disj, applicativeDisj, applyDisj, bindDisj, boundedDisj, eq1Disj, eqDisj, functorDisj, monadDisj, monoidDisj, ord1Disj, ordDisj, semigroupDisj, semiringDisj, showDisj}; diff --git a/.storybook/purescript-indexer/output-es/Data.Monoid.Dual/index.js b/.storybook/purescript-indexer/output-es/Data.Monoid.Dual/index.js new file mode 100644 index 0000000..a2b2813 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Monoid.Dual/index.js @@ -0,0 +1,20 @@ +import * as $runtime from "../runtime.js"; +const Dual = x => x; +const showDual = dictShow => ({show: v => "(Dual " + (dictShow.show(v) + ")")}); +const semigroupDual = dictSemigroup => ({append: v => v1 => dictSemigroup.append(v1)(v)}); +const ordDual = dictOrd => dictOrd; +const monoidDual = dictMonoid => { + const $1 = dictMonoid.Semigroup0(); + const semigroupDual1 = {append: v => v1 => $1.append(v1)(v)}; + return {mempty: dictMonoid.mempty, Semigroup0: () => semigroupDual1}; +}; +const functorDual = {map: f => m => f(m)}; +const eqDual = dictEq => dictEq; +const eq1Dual = {eq1: dictEq => dictEq.eq}; +const ord1Dual = {compare1: dictOrd => dictOrd.compare, Eq10: () => eq1Dual}; +const boundedDual = dictBounded => dictBounded; +const applyDual = {apply: v => v1 => v(v1), Functor0: () => functorDual}; +const bindDual = {bind: v => f => f(v), Apply0: () => applyDual}; +const applicativeDual = {pure: Dual, Apply0: () => applyDual}; +const monadDual = {Applicative0: () => applicativeDual, Bind1: () => bindDual}; +export {Dual, applicativeDual, applyDual, bindDual, boundedDual, eq1Dual, eqDual, functorDual, monadDual, monoidDual, ord1Dual, ordDual, semigroupDual, showDual}; diff --git a/.storybook/purescript-indexer/output-es/Data.Monoid.Endo/index.js b/.storybook/purescript-indexer/output-es/Data.Monoid.Endo/index.js new file mode 100644 index 0000000..54328f7 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Monoid.Endo/index.js @@ -0,0 +1,13 @@ +import * as $runtime from "../runtime.js"; +const Endo = x => x; +const showEndo = dictShow => ({show: v => "(Endo " + (dictShow.show(v) + ")")}); +const semigroupEndo = dictSemigroupoid => ({append: v => v1 => dictSemigroupoid.compose(v)(v1)}); +const ordEndo = dictOrd => dictOrd; +const monoidEndo = dictCategory => { + const $1 = dictCategory.Semigroupoid0(); + const semigroupEndo1 = {append: v => v1 => $1.compose(v)(v1)}; + return {mempty: dictCategory.identity, Semigroup0: () => semigroupEndo1}; +}; +const eqEndo = dictEq => dictEq; +const boundedEndo = dictBounded => dictBounded; +export {Endo, boundedEndo, eqEndo, monoidEndo, ordEndo, semigroupEndo, showEndo}; diff --git a/.storybook/purescript-indexer/output-es/Data.Monoid.Generic/index.js b/.storybook/purescript-indexer/output-es/Data.Monoid.Generic/index.js new file mode 100644 index 0000000..ef46b7d --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Monoid.Generic/index.js @@ -0,0 +1,11 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dGeneric$dRep from "../Data.Generic.Rep/index.js"; +const genericMonoidNoArguments = {"genericMempty'": Data$dGeneric$dRep.NoArguments}; +const genericMonoidArgument = dictMonoid => ({"genericMempty'": dictMonoid.mempty}); +const genericMempty$p = dict => dict["genericMempty'"]; +const genericMonoidConstructor = dictGenericMonoid => ({"genericMempty'": dictGenericMonoid["genericMempty'"]}); +const genericMonoidProduct = dictGenericMonoid => dictGenericMonoid1 => ( + {"genericMempty'": Data$dGeneric$dRep.$Product(dictGenericMonoid["genericMempty'"], dictGenericMonoid1["genericMempty'"])} +); +const genericMempty = dictGeneric => dictGenericMonoid => dictGeneric.to(dictGenericMonoid["genericMempty'"]); +export {genericMempty, genericMempty$p, genericMonoidArgument, genericMonoidConstructor, genericMonoidNoArguments, genericMonoidProduct}; diff --git a/.storybook/purescript-indexer/output-es/Data.Monoid.Multiplicative/index.js b/.storybook/purescript-indexer/output-es/Data.Monoid.Multiplicative/index.js new file mode 100644 index 0000000..ae98e55 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Monoid.Multiplicative/index.js @@ -0,0 +1,34 @@ +import * as $runtime from "../runtime.js"; +const Multiplicative = x => x; +const showMultiplicative = dictShow => ({show: v => "(Multiplicative " + (dictShow.show(v) + ")")}); +const semigroupMultiplicative = dictSemiring => ({append: v => v1 => dictSemiring.mul(v)(v1)}); +const ordMultiplicative = dictOrd => dictOrd; +const monoidMultiplicative = dictSemiring => { + const semigroupMultiplicative1 = {append: v => v1 => dictSemiring.mul(v)(v1)}; + return {mempty: dictSemiring.one, Semigroup0: () => semigroupMultiplicative1}; +}; +const functorMultiplicative = {map: f => m => f(m)}; +const eqMultiplicative = dictEq => dictEq; +const eq1Multiplicative = {eq1: dictEq => dictEq.eq}; +const ord1Multiplicative = {compare1: dictOrd => dictOrd.compare, Eq10: () => eq1Multiplicative}; +const boundedMultiplicative = dictBounded => dictBounded; +const applyMultiplicative = {apply: v => v1 => v(v1), Functor0: () => functorMultiplicative}; +const bindMultiplicative = {bind: v => f => f(v), Apply0: () => applyMultiplicative}; +const applicativeMultiplicative = {pure: Multiplicative, Apply0: () => applyMultiplicative}; +const monadMultiplicative = {Applicative0: () => applicativeMultiplicative, Bind1: () => bindMultiplicative}; +export { + Multiplicative, + applicativeMultiplicative, + applyMultiplicative, + bindMultiplicative, + boundedMultiplicative, + eq1Multiplicative, + eqMultiplicative, + functorMultiplicative, + monadMultiplicative, + monoidMultiplicative, + ord1Multiplicative, + ordMultiplicative, + semigroupMultiplicative, + showMultiplicative +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Monoid/index.js b/.storybook/purescript-indexer/output-es/Data.Monoid/index.js new file mode 100644 index 0000000..e2d2c70 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Monoid/index.js @@ -0,0 +1,61 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dEuclideanRing from "../Data.EuclideanRing/index.js"; +import * as Data$dOrdering from "../Data.Ordering/index.js"; +import * as Data$dSemigroup from "../Data.Semigroup/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +import * as Record$dUnsafe from "../Record.Unsafe/index.js"; +import * as Type$dProxy from "../Type.Proxy/index.js"; +const monoidUnit = {mempty: Data$dUnit.unit, Semigroup0: () => Data$dSemigroup.semigroupUnit}; +const monoidString = {mempty: "", Semigroup0: () => Data$dSemigroup.semigroupString}; +const monoidRecordNil = {memptyRecord: v => ({}), SemigroupRecord0: () => Data$dSemigroup.semigroupRecordNil}; +const monoidOrdering = {mempty: Data$dOrdering.EQ, Semigroup0: () => Data$dOrdering.semigroupOrdering}; +const monoidArray = {mempty: [], Semigroup0: () => Data$dSemigroup.semigroupArray}; +const memptyRecord = dict => dict.memptyRecord; +const monoidRecord = () => dictMonoidRecord => { + const semigroupRecord1 = {append: dictMonoidRecord.SemigroupRecord0().appendRecord(Type$dProxy.Proxy)}; + return {mempty: dictMonoidRecord.memptyRecord(Type$dProxy.Proxy), Semigroup0: () => semigroupRecord1}; +}; +const mempty = dict => dict.mempty; +const monoidFn = dictMonoid => { + const $1 = dictMonoid.Semigroup0(); + const semigroupFn = {append: f => g => x => $1.append(f(x))(g(x))}; + return {mempty: v => dictMonoid.mempty, Semigroup0: () => semigroupFn}; +}; +const monoidRecordCons = dictIsSymbol => dictMonoid => { + const Semigroup0 = dictMonoid.Semigroup0(); + return () => dictMonoidRecord => { + const $5 = dictMonoidRecord.SemigroupRecord0(); + const semigroupRecordCons1 = { + appendRecord: v => ra => rb => { + const key = dictIsSymbol.reflectSymbol(Type$dProxy.Proxy); + const $$get = Record$dUnsafe.unsafeGet(key); + return Record$dUnsafe.unsafeSet(key)(Semigroup0.append($$get(ra))($$get(rb)))($5.appendRecord(Type$dProxy.Proxy)(ra)(rb)); + } + }; + return { + memptyRecord: v => Record$dUnsafe.unsafeSet(dictIsSymbol.reflectSymbol(Type$dProxy.Proxy))(dictMonoid.mempty)(dictMonoidRecord.memptyRecord(Type$dProxy.Proxy)), + SemigroupRecord0: () => semigroupRecordCons1 + }; + }; +}; +const power = dictMonoid => { + const append = dictMonoid.Semigroup0().append; + return x => { + const go = p => { + if (p <= 0) { return dictMonoid.mempty; } + if (p === 1) { return x; } + if (Data$dEuclideanRing.intMod(p)(2) === 0) { + const x$p = go(Data$dEuclideanRing.intDiv(p)(2)); + return append(x$p)(x$p); + } + const x$p = go(Data$dEuclideanRing.intDiv(p)(2)); + return append(x$p)(append(x$p)(x)); + }; + return go; + }; +}; +const guard = dictMonoid => v => v1 => { + if (v) { return v1; } + return dictMonoid.mempty; +}; +export {guard, mempty, memptyRecord, monoidArray, monoidFn, monoidOrdering, monoidRecord, monoidRecordCons, monoidRecordNil, monoidString, monoidUnit, power}; diff --git a/.storybook/purescript-indexer/output-es/Data.NaturalTransformation/index.js b/.storybook/purescript-indexer/output-es/Data.NaturalTransformation/index.js new file mode 100644 index 0000000..2d3a7c9 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.NaturalTransformation/index.js @@ -0,0 +1,2 @@ +import * as $runtime from "../runtime.js"; +export {}; diff --git a/.storybook/purescript-indexer/output-es/Data.Newtype/index.js b/.storybook/purescript-indexer/output-es/Data.Newtype/index.js new file mode 100644 index 0000000..ab5126a --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Newtype/index.js @@ -0,0 +1,52 @@ +import * as $runtime from "../runtime.js"; +import * as Unsafe$dCoerce from "../Unsafe.Coerce/index.js"; +const wrap = () => Unsafe$dCoerce.unsafeCoerce; +const unwrap = () => Unsafe$dCoerce.unsafeCoerce; +const underF2 = () => () => () => () => v => Unsafe$dCoerce.unsafeCoerce; +const underF = () => () => () => () => v => Unsafe$dCoerce.unsafeCoerce; +const under2 = () => () => v => Unsafe$dCoerce.unsafeCoerce; +const under = () => () => v => Unsafe$dCoerce.unsafeCoerce; +const un = () => v => Unsafe$dCoerce.unsafeCoerce; +const traverse = () => () => v => Unsafe$dCoerce.unsafeCoerce; +const overF2 = () => () => () => () => v => Unsafe$dCoerce.unsafeCoerce; +const overF = () => () => () => () => v => Unsafe$dCoerce.unsafeCoerce; +const over2 = () => () => v => Unsafe$dCoerce.unsafeCoerce; +const over = () => () => v => Unsafe$dCoerce.unsafeCoerce; +const newtypeMultiplicative = {Coercible0: () => undefined}; +const newtypeLast = {Coercible0: () => undefined}; +const newtypeFirst = {Coercible0: () => undefined}; +const newtypeEndo = {Coercible0: () => undefined}; +const newtypeDual = {Coercible0: () => undefined}; +const newtypeDisj = {Coercible0: () => undefined}; +const newtypeConj = {Coercible0: () => undefined}; +const newtypeAdditive = {Coercible0: () => undefined}; +const modify = () => fn => t => fn(t); +const collect = () => () => v => Unsafe$dCoerce.unsafeCoerce; +const alaF = () => () => () => () => v => Unsafe$dCoerce.unsafeCoerce; +const ala = () => () => () => v => f => f(Unsafe$dCoerce.unsafeCoerce); +export { + ala, + alaF, + collect, + modify, + newtypeAdditive, + newtypeConj, + newtypeDisj, + newtypeDual, + newtypeEndo, + newtypeFirst, + newtypeLast, + newtypeMultiplicative, + over, + over2, + overF, + overF2, + traverse, + un, + under, + under2, + underF, + underF2, + unwrap, + wrap +}; diff --git a/.storybook/purescript-indexer/output-es/Data.NonEmpty/index.js b/.storybook/purescript-indexer/output-es/Data.NonEmpty/index.js new file mode 100644 index 0000000..c9f22e1 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.NonEmpty/index.js @@ -0,0 +1,213 @@ +// | This module defines a generic non-empty data structure, which adds an +// | additional element to any container type. +import * as $runtime from "../runtime.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dOrdering from "../Data.Ordering/index.js"; +const $NonEmpty = (_1, _2) => ({tag: "NonEmpty", _1, _2}); +const NonEmpty = value0 => value1 => $NonEmpty(value0, value1); +const unfoldable1NonEmpty = dictUnfoldable => ( + { + unfoldr1: f => b => { + const $3 = f(b); + return $NonEmpty($3._1, dictUnfoldable.unfoldr(Data$dMaybe.functorMaybe.map(f))($3._2)); + } + } +); +const tail = v => v._2; +const singleton = dictPlus => a => $NonEmpty(a, dictPlus.empty); +const showNonEmpty = dictShow => dictShow1 => ({show: v => "(NonEmpty " + (dictShow.show(v._1) + (" " + (dictShow1.show(v._2) + ")")))}); +const semigroupNonEmpty = dictApplicative => dictSemigroup => ( + {append: v => v1 => $NonEmpty(v._1, dictSemigroup.append(v._2)(dictSemigroup.append(dictApplicative.pure(v1._1))(v1._2)))} +); +const oneOf = dictAlternative => { + const alt = dictAlternative.Plus1().Alt0().alt; + const pure = dictAlternative.Applicative0().pure; + return v => alt(pure(v._1))(v._2); +}; +const head = v => v._1; +const functorNonEmpty = dictFunctor => ({map: f => m => $NonEmpty(f(m._1), dictFunctor.map(f)(m._2))}); +const functorWithIndex = dictFunctorWithIndex => { + const functorNonEmpty1 = functorNonEmpty(dictFunctorWithIndex.Functor0()); + return { + mapWithIndex: f => v => $NonEmpty(f(Data$dMaybe.Nothing)(v._1), dictFunctorWithIndex.mapWithIndex(x => f(Data$dMaybe.$Maybe("Just", x)))(v._2)), + Functor0: () => functorNonEmpty1 + }; +}; +const fromNonEmpty = f => v => f(v._1)(v._2); +const foldableNonEmpty = dictFoldable => ( + { + foldMap: dictMonoid => { + const append1 = dictMonoid.Semigroup0().append; + const foldMap1 = dictFoldable.foldMap(dictMonoid); + return f => v => append1(f(v._1))(foldMap1(f)(v._2)); + }, + foldl: f => b => v => dictFoldable.foldl(f)(f(b)(v._1))(v._2), + foldr: f => b => v => f(v._1)(dictFoldable.foldr(f)(b)(v._2)) + } +); +const foldableWithIndexNonEmpty = dictFoldableWithIndex => { + const $1 = dictFoldableWithIndex.Foldable0(); + const foldableNonEmpty1 = { + foldMap: dictMonoid => { + const append1 = dictMonoid.Semigroup0().append; + const foldMap1 = $1.foldMap(dictMonoid); + return f => v => append1(f(v._1))(foldMap1(f)(v._2)); + }, + foldl: f => b => v => $1.foldl(f)(f(b)(v._1))(v._2), + foldr: f => b => v => f(v._1)($1.foldr(f)(b)(v._2)) + }; + return { + foldMapWithIndex: dictMonoid => { + const append1 = dictMonoid.Semigroup0().append; + const foldMapWithIndex1 = dictFoldableWithIndex.foldMapWithIndex(dictMonoid); + return f => v => append1(f(Data$dMaybe.Nothing)(v._1))(foldMapWithIndex1(x => f(Data$dMaybe.$Maybe("Just", x)))(v._2)); + }, + foldlWithIndex: f => b => v => dictFoldableWithIndex.foldlWithIndex(x => f(Data$dMaybe.$Maybe("Just", x)))(f(Data$dMaybe.Nothing)(b)(v._1))(v._2), + foldrWithIndex: f => b => v => f(Data$dMaybe.Nothing)(v._1)(dictFoldableWithIndex.foldrWithIndex(x => f(Data$dMaybe.$Maybe("Just", x)))(b)(v._2)), + Foldable0: () => foldableNonEmpty1 + }; +}; +const traversableNonEmpty = dictTraversable => { + const functorNonEmpty1 = functorNonEmpty(dictTraversable.Functor0()); + const $2 = dictTraversable.Foldable1(); + const foldableNonEmpty1 = { + foldMap: dictMonoid => { + const append1 = dictMonoid.Semigroup0().append; + const foldMap1 = $2.foldMap(dictMonoid); + return f => v => append1(f(v._1))(foldMap1(f)(v._2)); + }, + foldl: f => b => v => $2.foldl(f)(f(b)(v._1))(v._2), + foldr: f => b => v => f(v._1)($2.foldr(f)(b)(v._2)) + }; + return { + sequence: dictApplicative => { + const Apply0 = dictApplicative.Apply0(); + const map2 = Apply0.Functor0().map; + const sequence1 = dictTraversable.sequence(dictApplicative); + return v => Apply0.apply(map2(NonEmpty)(v._1))(sequence1(v._2)); + }, + traverse: dictApplicative => { + const Apply0 = dictApplicative.Apply0(); + const map2 = Apply0.Functor0().map; + const traverse1 = dictTraversable.traverse(dictApplicative); + return f => v => Apply0.apply(map2(NonEmpty)(f(v._1)))(traverse1(f)(v._2)); + }, + Functor0: () => functorNonEmpty1, + Foldable1: () => foldableNonEmpty1 + }; +}; +const traversableWithIndexNonEmpty = dictTraversableWithIndex => { + const functorWithIndex1 = functorWithIndex(dictTraversableWithIndex.FunctorWithIndex0()); + const foldableWithIndexNonEmpty1 = foldableWithIndexNonEmpty(dictTraversableWithIndex.FoldableWithIndex1()); + const traversableNonEmpty1 = traversableNonEmpty(dictTraversableWithIndex.Traversable2()); + return { + traverseWithIndex: dictApplicative => { + const Apply0 = dictApplicative.Apply0(); + const map2 = Apply0.Functor0().map; + const traverseWithIndex1 = dictTraversableWithIndex.traverseWithIndex(dictApplicative); + return f => v => Apply0.apply(map2(NonEmpty)(f(Data$dMaybe.Nothing)(v._1)))(traverseWithIndex1(x => f(Data$dMaybe.$Maybe("Just", x)))(v._2)); + }, + FunctorWithIndex0: () => functorWithIndex1, + FoldableWithIndex1: () => foldableWithIndexNonEmpty1, + Traversable2: () => traversableNonEmpty1 + }; +}; +const foldable1NonEmpty = dictFoldable => { + const foldableNonEmpty1 = { + foldMap: dictMonoid => { + const append1 = dictMonoid.Semigroup0().append; + const foldMap1 = dictFoldable.foldMap(dictMonoid); + return f => v => append1(f(v._1))(foldMap1(f)(v._2)); + }, + foldl: f => b => v => dictFoldable.foldl(f)(f(b)(v._1))(v._2), + foldr: f => b => v => f(v._1)(dictFoldable.foldr(f)(b)(v._2)) + }; + return { + foldMap1: dictSemigroup => f => v => dictFoldable.foldl(s => a1 => dictSemigroup.append(s)(f(a1)))(f(v._1))(v._2), + foldr1: f => v => { + const $4 = f(v._1); + const $5 = dictFoldable.foldr(a1 => { + const $6 = f(a1); + return x => Data$dMaybe.$Maybe( + "Just", + (() => { + if (x.tag === "Nothing") { return a1; } + if (x.tag === "Just") { return $6(x._1); } + $runtime.fail(); + })() + ); + })(Data$dMaybe.Nothing)(v._2); + if ($5.tag === "Nothing") { return v._1; } + if ($5.tag === "Just") { return $4($5._1); } + $runtime.fail(); + }, + foldl1: f => v => dictFoldable.foldl(f)(v._1)(v._2), + Foldable0: () => foldableNonEmpty1 + }; +}; +const foldl1 = dictFoldable => foldable1NonEmpty(dictFoldable).foldl1; +const eqNonEmpty = dictEq1 => dictEq => { + const eq11 = dictEq1.eq1(dictEq); + return {eq: x => y => dictEq.eq(x._1)(y._1) && eq11(x._2)(y._2)}; +}; +const ordNonEmpty = dictOrd1 => { + const $1 = dictOrd1.Eq10(); + return dictOrd => { + const compare11 = dictOrd1.compare1(dictOrd); + const $4 = dictOrd.Eq0(); + const eq11 = $1.eq1($4); + const eqNonEmpty2 = {eq: x => y => $4.eq(x._1)(y._1) && eq11(x._2)(y._2)}; + return { + compare: x => y => { + const v = dictOrd.compare(x._1)(y._1); + if (v.tag === "LT") { return Data$dOrdering.LT; } + if (v.tag === "GT") { return Data$dOrdering.GT; } + return compare11(x._2)(y._2); + }, + Eq0: () => eqNonEmpty2 + }; + }; +}; +const eq1NonEmpty = dictEq1 => ( + { + eq1: dictEq => { + const eq11 = dictEq1.eq1(dictEq); + return x => y => dictEq.eq(x._1)(y._1) && eq11(x._2)(y._2); + } + } +); +const ord1NonEmpty = dictOrd1 => { + const ordNonEmpty1 = ordNonEmpty(dictOrd1); + const $2 = dictOrd1.Eq10(); + const eq1NonEmpty1 = { + eq1: dictEq => { + const eq11 = $2.eq1(dictEq); + return x => y => dictEq.eq(x._1)(y._1) && eq11(x._2)(y._2); + } + }; + return {compare1: dictOrd => ordNonEmpty1(dictOrd).compare, Eq10: () => eq1NonEmpty1}; +}; +export { + $NonEmpty, + NonEmpty, + eq1NonEmpty, + eqNonEmpty, + foldable1NonEmpty, + foldableNonEmpty, + foldableWithIndexNonEmpty, + foldl1, + fromNonEmpty, + functorNonEmpty, + functorWithIndex, + head, + oneOf, + ord1NonEmpty, + ordNonEmpty, + semigroupNonEmpty, + showNonEmpty, + singleton, + tail, + traversableNonEmpty, + traversableWithIndexNonEmpty, + unfoldable1NonEmpty +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Nullable/foreign.js b/.storybook/purescript-indexer/output-es/Data.Nullable/foreign.js new file mode 100644 index 0000000..e66d640 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Nullable/foreign.js @@ -0,0 +1,12 @@ +/* eslint-disable no-eq-null, eqeqeq */ + +const nullImpl = null; +export { nullImpl as null }; + +export function nullable(a, r, f) { + return a == null ? r : f(a); +} + +export function notNull(x) { + return x; +} diff --git a/.storybook/purescript-indexer/output-es/Data.Nullable/index.js b/.storybook/purescript-indexer/output-es/Data.Nullable/index.js new file mode 100644 index 0000000..b0bf0fb --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Nullable/index.js @@ -0,0 +1,49 @@ +// | This module defines types and functions for working with nullable types +// | using the FFI. +import * as $runtime from "../runtime.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import {notNull, null as $$null, nullable} from "./foreign.js"; +const toNullable = v2 => { + if (v2.tag === "Nothing") { return $$null; } + if (v2.tag === "Just") { return notNull(v2._1); } + $runtime.fail(); +}; +const toMaybe = n => nullable(n, Data$dMaybe.Nothing, Data$dMaybe.Just); +const showNullable = dictShow => ( + { + show: x => { + const $2 = nullable(x, Data$dMaybe.Nothing, Data$dMaybe.Just); + if ($2.tag === "Nothing") { return "null"; } + if ($2.tag === "Just") { return dictShow.show($2._1); } + $runtime.fail(); + } + } +); +const eqNullable = dictEq => ( + { + eq: x => y => { + const $3 = nullable(x, Data$dMaybe.Nothing, Data$dMaybe.Just); + const $4 = nullable(y, Data$dMaybe.Nothing, Data$dMaybe.Just); + if ($3.tag === "Nothing") { return $4.tag === "Nothing"; } + if ($3.tag === "Just") { + if ($4.tag === "Just") { return dictEq.eq($3._1)($4._1); } + return false; + } + return false; + } + } +); +const ordNullable = dictOrd => { + const eqNullable1 = eqNullable(dictOrd.Eq0()); + return { + compare: (() => { + const $2 = Data$dMaybe.ordMaybe(dictOrd).compare; + return x => y => $2(nullable(x, Data$dMaybe.Nothing, Data$dMaybe.Just))(nullable(y, Data$dMaybe.Nothing, Data$dMaybe.Just)); + })(), + Eq0: () => eqNullable1 + }; +}; +const eq1Nullable = {eq1: dictEq => eqNullable(dictEq).eq}; +const ord1Nullable = {compare1: dictOrd => ordNullable(dictOrd).compare, Eq10: () => eq1Nullable}; +export {eq1Nullable, eqNullable, ord1Nullable, ordNullable, showNullable, toMaybe, toNullable}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Data.Number.Approximate/index.js b/.storybook/purescript-indexer/output-es/Data.Number.Approximate/index.js new file mode 100644 index 0000000..cea4298 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Number.Approximate/index.js @@ -0,0 +1,14 @@ +// | This module defines functions for comparing numbers. +import * as $runtime from "../runtime.js"; +import * as Data$dNumber from "../Data.Number/index.js"; +const Tolerance = x => x; +const Fraction = x => x; +const eqRelative = v => v1 => v2 => { + if (v1 === 0.0) { return Data$dNumber.abs(v2) <= v; } + if (v2 === 0.0) { return Data$dNumber.abs(v1) <= v; } + return Data$dNumber.abs(v1 - v2) <= v * Data$dNumber.abs(v1 + v2) / 2.0; +}; +const eqApproximate = /* #__PURE__ */ eqRelative(0.000001); +const neqApproximate = x => y => !eqRelative(0.000001)(x)(y); +const eqAbsolute = v => x => y => Data$dNumber.abs(x - y) <= v; +export {Fraction, Tolerance, eqAbsolute, eqApproximate, eqRelative, neqApproximate}; diff --git a/.storybook/purescript-indexer/output-es/Data.Number.Format/foreign.js b/.storybook/purescript-indexer/output-es/Data.Number.Format/foreign.js new file mode 100644 index 0000000..0f28069 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Number.Format/foreign.js @@ -0,0 +1,12 @@ +function wrap(method) { + return function(d) { + return function(num) { + return method.apply(num, [d]); + }; + }; +} + +export const toPrecisionNative = wrap(Number.prototype.toPrecision); +export const toFixedNative = wrap(Number.prototype.toFixed); +export const toExponentialNative = wrap(Number.prototype.toExponential); +export function toString(num) { return num.toString(); } diff --git a/.storybook/purescript-indexer/output-es/Data.Number.Format/index.js b/.storybook/purescript-indexer/output-es/Data.Number.Format/index.js new file mode 100644 index 0000000..fdc30b1 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Number.Format/index.js @@ -0,0 +1,53 @@ +// | A module for formatting numbers as strings. +// | +// | Usage: +// | ``` purs +// | > let x = 1234.56789 +// | +// | > toStringWith (precision 6) x +// | "1234.57" +// | +// | > toStringWith (fixed 3) x +// | "1234.568" +// | +// | > toStringWith (exponential 2) x +// | "1.23e+3" +// | ``` +// | +// | The main method of this module is the `toStringWith` function that accepts +// | a `Format` argument which can be constructed through one of the smart +// | constructors `precision`, `fixed` and `exponential`. Internally, the +// | number will be formatted with JavaScripts `toPrecision`, `toFixed` or +// | `toExponential`. +import * as $runtime from "../runtime.js"; +import * as Data$dOrd from "../Data.Ord/index.js"; +import {toExponentialNative, toFixedNative, toPrecisionNative, toString} from "./foreign.js"; +const $Format = (tag, _1) => ({tag, _1}); +const clamp = low => hi => x => { + const v = Data$dOrd.ordInt.compare(low)(x); + const $4 = (() => { + if (v.tag === "LT") { return x; } + if (v.tag === "EQ") { return low; } + if (v.tag === "GT") { return low; } + $runtime.fail(); + })(); + const v$1 = Data$dOrd.ordInt.compare(hi)($4); + if (v$1.tag === "LT") { return hi; } + if (v$1.tag === "EQ") { return hi; } + if (v$1.tag === "GT") { return $4; } + $runtime.fail(); +}; +const Precision = value0 => $Format("Precision", value0); +const Fixed = value0 => $Format("Fixed", value0); +const Exponential = value0 => $Format("Exponential", value0); +const toStringWith = v => { + if (v.tag === "Precision") { return toPrecisionNative(v._1); } + if (v.tag === "Fixed") { return toFixedNative(v._1); } + if (v.tag === "Exponential") { return toExponentialNative(v._1); } + $runtime.fail(); +}; +const precision = x => $Format("Precision", clamp(1)(21)(x)); +const fixed = x => $Format("Fixed", clamp(0)(20)(x)); +const exponential = x => $Format("Exponential", clamp(0)(20)(x)); +export {$Format, Exponential, Fixed, Precision, clamp, exponential, fixed, precision, toStringWith}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Data.Number/foreign.js b/.storybook/purescript-indexer/output-es/Data.Number/foreign.js new file mode 100644 index 0000000..d100f07 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Number/foreign.js @@ -0,0 +1,80 @@ +/* globals exports */ +export const nan = NaN; +const isNaNImpl = isNaN; +export { isNaNImpl as isNaN }; +export const infinity = Infinity; +const isFiniteImpl = isFinite; +export { isFiniteImpl as isFinite }; + +export function fromStringImpl(str, isFinite, just, nothing) { + var num = parseFloat(str); + if (isFinite(num)) { + return just(num); + } else { + return nothing; + } +} + +export const abs = Math.abs; + +export const acos = Math.acos; + +export const asin = Math.asin; + +export const atan = Math.atan; + +export const atan2 = function (y) { + return function (x) { + return Math.atan2(y, x); + }; +}; + +export const ceil = Math.ceil; + +export const cos = Math.cos; + +export const exp = Math.exp; + +export const floor = Math.floor; + +export const log = Math.log; + +export const max = function (n1) { + return function (n2) { + return Math.max(n1, n2); + }; +}; + +export const min = function (n1) { + return function (n2) { + return Math.min(n1, n2); + }; +}; + +export const pow = function (n) { + return function (p) { + return Math.pow(n, p); + }; +}; + +export const remainder = function (n) { + return function (m) { + return n % m; + }; +}; + +export const round = Math.round; + +export const sign = Math.sign ? Math.sign : function(x) { + return x === 0 || x !== x ? x : (x < 0 ? -1 : 1); +}; + +export const sin = Math.sin; + +export const sqrt = Math.sqrt; + +export const tan = Math.tan; + +export const trunc = Math.trunc ? Math.trunc : function(x) { + return x < 0 ? Math.ceil(x) : Math.floor(x); +} diff --git a/.storybook/purescript-indexer/output-es/Data.Number/index.js b/.storybook/purescript-indexer/output-es/Data.Number/index.js new file mode 100644 index 0000000..f17467d --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Number/index.js @@ -0,0 +1,16 @@ +// | Functions for working with PureScripts builtin `Number` type. +import * as $runtime from "../runtime.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import {abs, acos, asin, atan, atan2, ceil, cos, exp, floor, fromStringImpl, infinity, isFinite, isNaN, log, max, min, nan, pow, remainder, round, sign, sin, sqrt, tan, trunc} from "./foreign.js"; +const tau = 6.283185307179586; +const sqrt2 = 1.4142135623730951; +const sqrt1_2 = 0.7071067811865476; +const pi = 3.141592653589793; +const log2e = 1.4426950408889634; +const log10e = 0.4342944819032518; +const ln2 = 0.6931471805599453; +const ln10 = 2.302585092994046; +const fromString = str => fromStringImpl(str, isFinite, Data$dMaybe.Just, Data$dMaybe.Nothing); +const e = 2.718281828459045; +export {e, fromString, ln10, ln2, log10e, log2e, pi, sqrt1_2, sqrt2, tau}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Data.Op/index.js b/.storybook/purescript-indexer/output-es/Data.Op/index.js new file mode 100644 index 0000000..942b86b --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Op/index.js @@ -0,0 +1,13 @@ +import * as $runtime from "../runtime.js"; +const Op = x => x; +const semigroupoidOp = {compose: v => v1 => x => v1(v(x))}; +const semigroupOp = dictSemigroup => ({append: f => g => x => dictSemigroup.append(f(x))(g(x))}); +const newtypeOp = {Coercible0: () => undefined}; +const monoidOp = dictMonoid => { + const $1 = dictMonoid.Semigroup0(); + const semigroupFn = {append: f => g => x => $1.append(f(x))(g(x))}; + return {mempty: v => dictMonoid.mempty, Semigroup0: () => semigroupFn}; +}; +const contravariantOp = {cmap: f => v => x => v(f(x))}; +const categoryOp = {identity: x => x, Semigroupoid0: () => semigroupoidOp}; +export {Op, categoryOp, contravariantOp, monoidOp, newtypeOp, semigroupOp, semigroupoidOp}; diff --git a/.storybook/purescript-indexer/output-es/Data.Ord.Down/index.js b/.storybook/purescript-indexer/output-es/Data.Ord.Down/index.js new file mode 100644 index 0000000..d630f78 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Ord.Down/index.js @@ -0,0 +1,24 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dOrdering from "../Data.Ordering/index.js"; +const Down = x => x; +const showDown = dictShow => ({show: v => "(Down " + (dictShow.show(v) + ")")}); +const newtypeDown = {Coercible0: () => undefined}; +const eqDown = dictEq => dictEq; +const ordDown = dictOrd => { + const eqDown1 = dictOrd.Eq0(); + return { + compare: v => v1 => { + const $4 = dictOrd.compare(v)(v1); + if ($4.tag === "GT") { return Data$dOrdering.LT; } + if ($4.tag === "EQ") { return Data$dOrdering.EQ; } + if ($4.tag === "LT") { return Data$dOrdering.GT; } + $runtime.fail(); + }, + Eq0: () => eqDown1 + }; +}; +const boundedDown = dictBounded => { + const ordDown1 = ordDown(dictBounded.Ord0()); + return {top: dictBounded.bottom, bottom: dictBounded.top, Ord0: () => ordDown1}; +}; +export {Down, boundedDown, eqDown, newtypeDown, ordDown, showDown}; diff --git a/.storybook/purescript-indexer/output-es/Data.Ord.Generic/index.js b/.storybook/purescript-indexer/output-es/Data.Ord.Generic/index.js new file mode 100644 index 0000000..0c4374d --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Ord.Generic/index.js @@ -0,0 +1,35 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dOrdering from "../Data.Ordering/index.js"; +const genericOrdNoConstructors = {"genericCompare'": v => v1 => Data$dOrdering.EQ}; +const genericOrdNoArguments = {"genericCompare'": v => v1 => Data$dOrdering.EQ}; +const genericOrdArgument = dictOrd => ({"genericCompare'": v => v1 => dictOrd.compare(v)(v1)}); +const genericCompare$p = dict => dict["genericCompare'"]; +const genericOrdConstructor = dictGenericOrd => ({"genericCompare'": v => v1 => dictGenericOrd["genericCompare'"](v)(v1)}); +const genericOrdProduct = dictGenericOrd => dictGenericOrd1 => ( + { + "genericCompare'": v => v1 => { + const v2 = dictGenericOrd["genericCompare'"](v._1)(v1._1); + if (v2.tag === "EQ") { return dictGenericOrd1["genericCompare'"](v._2)(v1._2); } + return v2; + } + } +); +const genericOrdSum = dictGenericOrd => dictGenericOrd1 => ( + { + "genericCompare'": v => v1 => { + if (v.tag === "Inl") { + if (v1.tag === "Inl") { return dictGenericOrd["genericCompare'"](v._1)(v1._1); } + if (v1.tag === "Inr") { return Data$dOrdering.LT; } + $runtime.fail(); + } + if (v.tag === "Inr") { + if (v1.tag === "Inr") { return dictGenericOrd1["genericCompare'"](v._1)(v1._1); } + if (v1.tag === "Inl") { return Data$dOrdering.GT; } + $runtime.fail(); + } + $runtime.fail(); + } + } +); +const genericCompare = dictGeneric => dictGenericOrd => x => y => dictGenericOrd["genericCompare'"](dictGeneric.from(x))(dictGeneric.from(y)); +export {genericCompare, genericCompare$p, genericOrdArgument, genericOrdConstructor, genericOrdNoArguments, genericOrdNoConstructors, genericOrdProduct, genericOrdSum}; diff --git a/.storybook/purescript-indexer/output-es/Data.Ord.Max/index.js b/.storybook/purescript-indexer/output-es/Data.Ord.Max/index.js new file mode 100644 index 0000000..08cac59 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Ord.Max/index.js @@ -0,0 +1,34 @@ +import * as $runtime from "../runtime.js"; +const Max = x => x; +const showMax = dictShow => ({show: v => "(Max " + (dictShow.show(v) + ")")}); +const semigroupMax = dictOrd => ( + { + append: v => v1 => { + const v$1 = dictOrd.compare(v)(v1); + if (v$1.tag === "LT") { return v1; } + if (v$1.tag === "EQ") { return v; } + if (v$1.tag === "GT") { return v; } + $runtime.fail(); + } + } +); +const newtypeMax = {Coercible0: () => undefined}; +const monoidMax = dictBounded => { + const $1 = dictBounded.Ord0(); + const semigroupMax1 = { + append: v => v1 => { + const v$1 = $1.compare(v)(v1); + if (v$1.tag === "LT") { return v1; } + if (v$1.tag === "EQ") { return v; } + if (v$1.tag === "GT") { return v; } + $runtime.fail(); + } + }; + return {mempty: dictBounded.bottom, Semigroup0: () => semigroupMax1}; +}; +const eqMax = dictEq => dictEq; +const ordMax = dictOrd => { + const eqMax1 = dictOrd.Eq0(); + return {compare: v => v1 => dictOrd.compare(v)(v1), Eq0: () => eqMax1}; +}; +export {Max, eqMax, monoidMax, newtypeMax, ordMax, semigroupMax, showMax}; diff --git a/.storybook/purescript-indexer/output-es/Data.Ord.Min/index.js b/.storybook/purescript-indexer/output-es/Data.Ord.Min/index.js new file mode 100644 index 0000000..489f6a8 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Ord.Min/index.js @@ -0,0 +1,34 @@ +import * as $runtime from "../runtime.js"; +const Min = x => x; +const showMin = dictShow => ({show: v => "(Min " + (dictShow.show(v) + ")")}); +const semigroupMin = dictOrd => ( + { + append: v => v1 => { + const v$1 = dictOrd.compare(v)(v1); + if (v$1.tag === "LT") { return v; } + if (v$1.tag === "EQ") { return v; } + if (v$1.tag === "GT") { return v1; } + $runtime.fail(); + } + } +); +const newtypeMin = {Coercible0: () => undefined}; +const monoidMin = dictBounded => { + const $1 = dictBounded.Ord0(); + const semigroupMin1 = { + append: v => v1 => { + const v$1 = $1.compare(v)(v1); + if (v$1.tag === "LT") { return v; } + if (v$1.tag === "EQ") { return v; } + if (v$1.tag === "GT") { return v1; } + $runtime.fail(); + } + }; + return {mempty: dictBounded.top, Semigroup0: () => semigroupMin1}; +}; +const eqMin = dictEq => dictEq; +const ordMin = dictOrd => { + const eqMin1 = dictOrd.Eq0(); + return {compare: v => v1 => dictOrd.compare(v)(v1), Eq0: () => eqMin1}; +}; +export {Min, eqMin, monoidMin, newtypeMin, ordMin, semigroupMin, showMin}; diff --git a/.storybook/purescript-indexer/output-es/Data.Ord/foreign.js b/.storybook/purescript-indexer/output-es/Data.Ord/foreign.js new file mode 100644 index 0000000..548760e --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Ord/foreign.js @@ -0,0 +1,43 @@ +var unsafeCompareImpl = function (lt) { + return function (eq) { + return function (gt) { + return function (x) { + return function (y) { + return x < y ? lt : x === y ? eq : gt; + }; + }; + }; + }; +}; + +export const ordBooleanImpl = unsafeCompareImpl; +export const ordIntImpl = unsafeCompareImpl; +export const ordNumberImpl = unsafeCompareImpl; +export const ordStringImpl = unsafeCompareImpl; +export const ordCharImpl = unsafeCompareImpl; + +export const 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; + } + }; + }; +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Ord/index.js b/.storybook/purescript-indexer/output-es/Data.Ord/index.js new file mode 100644 index 0000000..e41f690 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Ord/index.js @@ -0,0 +1,159 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dEq from "../Data.Eq/index.js"; +import * as Data$dOrdering from "../Data.Ordering/index.js"; +import * as Record$dUnsafe from "../Record.Unsafe/index.js"; +import * as Type$dProxy from "../Type.Proxy/index.js"; +import {ordArrayImpl, ordBooleanImpl, ordCharImpl, ordIntImpl, ordNumberImpl, ordStringImpl} from "./foreign.js"; +const ordVoid = {compare: v => v1 => Data$dOrdering.EQ, Eq0: () => Data$dEq.eqVoid}; +const ordUnit = {compare: v => v1 => Data$dOrdering.EQ, Eq0: () => Data$dEq.eqUnit}; +const ordString = {compare: /* #__PURE__ */ ordStringImpl(Data$dOrdering.LT)(Data$dOrdering.EQ)(Data$dOrdering.GT), Eq0: () => Data$dEq.eqString}; +const ordRecordNil = {compareRecord: v => v1 => v2 => Data$dOrdering.EQ, EqRecord0: () => Data$dEq.eqRowNil}; +const ordProxy = {compare: v => v1 => Data$dOrdering.EQ, Eq0: () => Data$dEq.eqProxy}; +const ordOrdering = { + compare: v => v1 => { + if (v.tag === "LT") { + if (v1.tag === "LT") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (v.tag === "EQ") { + if (v1.tag === "EQ") { return Data$dOrdering.EQ; } + if (v1.tag === "LT") { return Data$dOrdering.GT; } + if (v1.tag === "GT") { return Data$dOrdering.LT; } + $runtime.fail(); + } + if (v.tag === "GT") { + if (v1.tag === "GT") { return Data$dOrdering.EQ; } + return Data$dOrdering.GT; + } + $runtime.fail(); + }, + Eq0: () => Data$dOrdering.eqOrdering +}; +const ordNumber = {compare: /* #__PURE__ */ ordNumberImpl(Data$dOrdering.LT)(Data$dOrdering.EQ)(Data$dOrdering.GT), Eq0: () => Data$dEq.eqNumber}; +const ordInt = {compare: /* #__PURE__ */ ordIntImpl(Data$dOrdering.LT)(Data$dOrdering.EQ)(Data$dOrdering.GT), Eq0: () => Data$dEq.eqInt}; +const ordChar = {compare: /* #__PURE__ */ ordCharImpl(Data$dOrdering.LT)(Data$dOrdering.EQ)(Data$dOrdering.GT), Eq0: () => Data$dEq.eqChar}; +const ordBoolean = {compare: /* #__PURE__ */ ordBooleanImpl(Data$dOrdering.LT)(Data$dOrdering.EQ)(Data$dOrdering.GT), Eq0: () => Data$dEq.eqBoolean}; +const compareRecord = dict => dict.compareRecord; +const ordRecord = () => dictOrdRecord => { + const eqRec1 = {eq: dictOrdRecord.EqRecord0().eqRecord(Type$dProxy.Proxy)}; + return {compare: dictOrdRecord.compareRecord(Type$dProxy.Proxy), Eq0: () => eqRec1}; +}; +const compare1 = dict => dict.compare1; +const compare = dict => dict.compare; +const comparing = dictOrd => f => x => y => dictOrd.compare(f(x))(f(y)); +const greaterThan = dictOrd => a1 => a2 => dictOrd.compare(a1)(a2).tag === "GT"; +const greaterThanOrEq = dictOrd => a1 => a2 => !(dictOrd.compare(a1)(a2).tag === "LT"); +const lessThan = dictOrd => a1 => a2 => dictOrd.compare(a1)(a2).tag === "LT"; +const signum = dictOrd => dictRing => { + const Semiring0 = dictRing.Semiring0(); + const zero = dictRing.Semiring0().zero; + return x => { + if (dictOrd.compare(x)(Semiring0.zero).tag === "LT") { return dictRing.sub(zero)(Semiring0.one); } + if (dictOrd.compare(x)(Semiring0.zero).tag === "GT") { return Semiring0.one; } + return x; + }; +}; +const lessThanOrEq = dictOrd => a1 => a2 => !(dictOrd.compare(a1)(a2).tag === "GT"); +const max = dictOrd => x => y => { + const v = dictOrd.compare(x)(y); + if (v.tag === "LT") { return y; } + if (v.tag === "EQ") { return x; } + if (v.tag === "GT") { return x; } + $runtime.fail(); +}; +const min = dictOrd => x => y => { + const v = dictOrd.compare(x)(y); + if (v.tag === "LT") { return x; } + if (v.tag === "EQ") { return x; } + if (v.tag === "GT") { return y; } + $runtime.fail(); +}; +const ordArray = dictOrd => { + const eqArray = {eq: Data$dEq.eqArrayImpl(dictOrd.Eq0().eq)}; + return { + compare: xs => ys => ordInt.compare(0)(ordArrayImpl(x => y => { + const v = dictOrd.compare(x)(y); + if (v.tag === "EQ") { return 0; } + if (v.tag === "LT") { return 1; } + if (v.tag === "GT") { return -1; } + $runtime.fail(); + })(xs)(ys)), + Eq0: () => eqArray + }; +}; +const ord1Array = {compare1: dictOrd => ordArray(dictOrd).compare, Eq10: () => Data$dEq.eq1Array}; +const ordRecordCons = dictOrdRecord => { + const eqRowCons = Data$dEq.eqRowCons(dictOrdRecord.EqRecord0())(); + return () => dictIsSymbol => { + const eqRowCons1 = eqRowCons(dictIsSymbol); + return dictOrd => { + const eqRowCons2 = eqRowCons1(dictOrd.Eq0()); + return { + compareRecord: v => ra => rb => { + const key = dictIsSymbol.reflectSymbol(Type$dProxy.Proxy); + const left = dictOrd.compare(Record$dUnsafe.unsafeGet(key)(ra))(Record$dUnsafe.unsafeGet(key)(rb)); + if (left.tag === "LT" || (left.tag === "GT" || !(left.tag === "EQ"))) { return left; } + return dictOrdRecord.compareRecord(Type$dProxy.Proxy)(ra)(rb); + }, + EqRecord0: () => eqRowCons2 + }; + }; + }; +}; +const clamp = dictOrd => low => hi => x => { + const v = dictOrd.compare(low)(x); + const $5 = (() => { + if (v.tag === "LT") { return x; } + if (v.tag === "EQ") { return low; } + if (v.tag === "GT") { return low; } + $runtime.fail(); + })(); + const v$1 = dictOrd.compare(hi)($5); + if (v$1.tag === "LT") { return hi; } + if (v$1.tag === "EQ") { return hi; } + if (v$1.tag === "GT") { return $5; } + $runtime.fail(); +}; +const between = dictOrd => low => hi => x => { + if (dictOrd.compare(x)(low).tag === "LT") { return false; } + return !(dictOrd.compare(x)(hi).tag === "GT"); +}; +const abs = dictOrd => dictRing => { + const zero = dictRing.Semiring0().zero; + const zero$1 = dictRing.Semiring0().zero; + return x => { + if (!(dictOrd.compare(x)(zero).tag === "LT")) { return x; } + return dictRing.sub(zero$1)(x); + }; +}; +export { + abs, + between, + clamp, + compare, + compare1, + compareRecord, + comparing, + greaterThan, + greaterThanOrEq, + lessThan, + lessThanOrEq, + max, + min, + ord1Array, + ordArray, + ordBoolean, + ordChar, + ordInt, + ordNumber, + ordOrdering, + ordProxy, + ordRecord, + ordRecordCons, + ordRecordNil, + ordString, + ordUnit, + ordVoid, + signum +}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Data.Ordering/index.js b/.storybook/purescript-indexer/output-es/Data.Ordering/index.js new file mode 100644 index 0000000..829a101 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Ordering/index.js @@ -0,0 +1,36 @@ +import * as $runtime from "../runtime.js"; +const $Ordering = tag => ({tag}); +const LT = /* #__PURE__ */ $Ordering("LT"); +const GT = /* #__PURE__ */ $Ordering("GT"); +const EQ = /* #__PURE__ */ $Ordering("EQ"); +const showOrdering = { + show: v => { + if (v.tag === "LT") { return "LT"; } + if (v.tag === "GT") { return "GT"; } + if (v.tag === "EQ") { return "EQ"; } + $runtime.fail(); + } +}; +const semigroupOrdering = { + append: v => v1 => { + if (v.tag === "LT") { return LT; } + if (v.tag === "GT") { return GT; } + if (v.tag === "EQ") { return v1; } + $runtime.fail(); + } +}; +const invert = v => { + if (v.tag === "GT") { return LT; } + if (v.tag === "EQ") { return EQ; } + if (v.tag === "LT") { return GT; } + $runtime.fail(); +}; +const eqOrdering = { + eq: v => v1 => { + if (v.tag === "LT") { return v1.tag === "LT"; } + if (v.tag === "GT") { return v1.tag === "GT"; } + if (v.tag === "EQ") { return v1.tag === "EQ"; } + return false; + } +}; +export {$Ordering, EQ, GT, LT, eqOrdering, invert, semigroupOrdering, showOrdering}; diff --git a/.storybook/purescript-indexer/output-es/Data.Posix.Signal/index.js b/.storybook/purescript-indexer/output-es/Data.Posix.Signal/index.js new file mode 100644 index 0000000..6b27f2c --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Posix.Signal/index.js @@ -0,0 +1,409 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dOrdering from "../Data.Ordering/index.js"; +const $Signal = tag => ({tag}); +const SIGABRT = /* #__PURE__ */ $Signal("SIGABRT"); +const SIGALRM = /* #__PURE__ */ $Signal("SIGALRM"); +const SIGBUS = /* #__PURE__ */ $Signal("SIGBUS"); +const SIGCHLD = /* #__PURE__ */ $Signal("SIGCHLD"); +const SIGCLD = /* #__PURE__ */ $Signal("SIGCLD"); +const SIGCONT = /* #__PURE__ */ $Signal("SIGCONT"); +const SIGEMT = /* #__PURE__ */ $Signal("SIGEMT"); +const SIGFPE = /* #__PURE__ */ $Signal("SIGFPE"); +const SIGHUP = /* #__PURE__ */ $Signal("SIGHUP"); +const SIGILL = /* #__PURE__ */ $Signal("SIGILL"); +const SIGINFO = /* #__PURE__ */ $Signal("SIGINFO"); +const SIGINT = /* #__PURE__ */ $Signal("SIGINT"); +const SIGIO = /* #__PURE__ */ $Signal("SIGIO"); +const SIGIOT = /* #__PURE__ */ $Signal("SIGIOT"); +const SIGKILL = /* #__PURE__ */ $Signal("SIGKILL"); +const SIGLOST = /* #__PURE__ */ $Signal("SIGLOST"); +const SIGPIPE = /* #__PURE__ */ $Signal("SIGPIPE"); +const SIGPOLL = /* #__PURE__ */ $Signal("SIGPOLL"); +const SIGPROF = /* #__PURE__ */ $Signal("SIGPROF"); +const SIGPWR = /* #__PURE__ */ $Signal("SIGPWR"); +const SIGQUIT = /* #__PURE__ */ $Signal("SIGQUIT"); +const SIGSEGV = /* #__PURE__ */ $Signal("SIGSEGV"); +const SIGSTKFLT = /* #__PURE__ */ $Signal("SIGSTKFLT"); +const SIGSTOP = /* #__PURE__ */ $Signal("SIGSTOP"); +const SIGSYS = /* #__PURE__ */ $Signal("SIGSYS"); +const SIGTERM = /* #__PURE__ */ $Signal("SIGTERM"); +const SIGTRAP = /* #__PURE__ */ $Signal("SIGTRAP"); +const SIGTSTP = /* #__PURE__ */ $Signal("SIGTSTP"); +const SIGTTIN = /* #__PURE__ */ $Signal("SIGTTIN"); +const SIGTTOU = /* #__PURE__ */ $Signal("SIGTTOU"); +const SIGUNUSED = /* #__PURE__ */ $Signal("SIGUNUSED"); +const SIGURG = /* #__PURE__ */ $Signal("SIGURG"); +const SIGUSR1 = /* #__PURE__ */ $Signal("SIGUSR1"); +const SIGUSR2 = /* #__PURE__ */ $Signal("SIGUSR2"); +const SIGVTALRM = /* #__PURE__ */ $Signal("SIGVTALRM"); +const SIGWINCH = /* #__PURE__ */ $Signal("SIGWINCH"); +const SIGXCPU = /* #__PURE__ */ $Signal("SIGXCPU"); +const SIGXFSZ = /* #__PURE__ */ $Signal("SIGXFSZ"); +const toString = s => { + if (s.tag === "SIGABRT") { return "SIGABRT"; } + if (s.tag === "SIGALRM") { return "SIGALRM"; } + if (s.tag === "SIGBUS") { return "SIGBUS"; } + if (s.tag === "SIGCHLD") { return "SIGCHLD"; } + if (s.tag === "SIGCLD") { return "SIGCLD"; } + if (s.tag === "SIGCONT") { return "SIGCONT"; } + if (s.tag === "SIGEMT") { return "SIGEMT"; } + if (s.tag === "SIGFPE") { return "SIGFPE"; } + if (s.tag === "SIGHUP") { return "SIGHUP"; } + if (s.tag === "SIGILL") { return "SIGILL"; } + if (s.tag === "SIGINFO") { return "SIGINFO"; } + if (s.tag === "SIGINT") { return "SIGINT"; } + if (s.tag === "SIGIO") { return "SIGIO"; } + if (s.tag === "SIGIOT") { return "SIGIOT"; } + if (s.tag === "SIGKILL") { return "SIGKILL"; } + if (s.tag === "SIGLOST") { return "SIGLOST"; } + if (s.tag === "SIGPIPE") { return "SIGPIPE"; } + if (s.tag === "SIGPOLL") { return "SIGPOLL"; } + if (s.tag === "SIGPROF") { return "SIGPROF"; } + if (s.tag === "SIGPWR") { return "SIGPWR"; } + if (s.tag === "SIGQUIT") { return "SIGQUIT"; } + if (s.tag === "SIGSEGV") { return "SIGSEGV"; } + if (s.tag === "SIGSTKFLT") { return "SIGSTKFLT"; } + if (s.tag === "SIGSTOP") { return "SIGSTOP"; } + if (s.tag === "SIGSYS") { return "SIGSYS"; } + if (s.tag === "SIGTERM") { return "SIGTERM"; } + if (s.tag === "SIGTRAP") { return "SIGTRAP"; } + if (s.tag === "SIGTSTP") { return "SIGTSTP"; } + if (s.tag === "SIGTTIN") { return "SIGTTIN"; } + if (s.tag === "SIGTTOU") { return "SIGTTOU"; } + if (s.tag === "SIGUNUSED") { return "SIGUNUSED"; } + if (s.tag === "SIGURG") { return "SIGURG"; } + if (s.tag === "SIGUSR1") { return "SIGUSR1"; } + if (s.tag === "SIGUSR2") { return "SIGUSR2"; } + if (s.tag === "SIGVTALRM") { return "SIGVTALRM"; } + if (s.tag === "SIGWINCH") { return "SIGWINCH"; } + if (s.tag === "SIGXCPU") { return "SIGXCPU"; } + if (s.tag === "SIGXFSZ") { return "SIGXFSZ"; } + $runtime.fail(); +}; +const showSignal = {show: toString}; +const fromString = s => { + if (s === "SIGABRT") { return Data$dMaybe.$Maybe("Just", SIGABRT); } + if (s === "SIGALRM") { return Data$dMaybe.$Maybe("Just", SIGALRM); } + if (s === "SIGBUS") { return Data$dMaybe.$Maybe("Just", SIGBUS); } + if (s === "SIGCHLD") { return Data$dMaybe.$Maybe("Just", SIGCHLD); } + if (s === "SIGCLD") { return Data$dMaybe.$Maybe("Just", SIGCLD); } + if (s === "SIGCONT") { return Data$dMaybe.$Maybe("Just", SIGCONT); } + if (s === "SIGEMT") { return Data$dMaybe.$Maybe("Just", SIGEMT); } + if (s === "SIGFPE") { return Data$dMaybe.$Maybe("Just", SIGFPE); } + if (s === "SIGHUP") { return Data$dMaybe.$Maybe("Just", SIGHUP); } + if (s === "SIGILL") { return Data$dMaybe.$Maybe("Just", SIGILL); } + if (s === "SIGINFO") { return Data$dMaybe.$Maybe("Just", SIGINFO); } + if (s === "SIGINT") { return Data$dMaybe.$Maybe("Just", SIGINT); } + if (s === "SIGIO") { return Data$dMaybe.$Maybe("Just", SIGIO); } + if (s === "SIGIOT") { return Data$dMaybe.$Maybe("Just", SIGIOT); } + if (s === "SIGKILL") { return Data$dMaybe.$Maybe("Just", SIGKILL); } + if (s === "SIGLOST") { return Data$dMaybe.$Maybe("Just", SIGLOST); } + if (s === "SIGPIPE") { return Data$dMaybe.$Maybe("Just", SIGPIPE); } + if (s === "SIGPOLL") { return Data$dMaybe.$Maybe("Just", SIGPOLL); } + if (s === "SIGPROF") { return Data$dMaybe.$Maybe("Just", SIGPROF); } + if (s === "SIGPWR") { return Data$dMaybe.$Maybe("Just", SIGPWR); } + if (s === "SIGQUIT") { return Data$dMaybe.$Maybe("Just", SIGQUIT); } + if (s === "SIGSEGV") { return Data$dMaybe.$Maybe("Just", SIGSEGV); } + if (s === "SIGSTKFLT") { return Data$dMaybe.$Maybe("Just", SIGSTKFLT); } + if (s === "SIGSTOP") { return Data$dMaybe.$Maybe("Just", SIGSTOP); } + if (s === "SIGSYS") { return Data$dMaybe.$Maybe("Just", SIGSYS); } + if (s === "SIGTERM") { return Data$dMaybe.$Maybe("Just", SIGTERM); } + if (s === "SIGTRAP") { return Data$dMaybe.$Maybe("Just", SIGTRAP); } + if (s === "SIGTSTP") { return Data$dMaybe.$Maybe("Just", SIGTSTP); } + if (s === "SIGTTIN") { return Data$dMaybe.$Maybe("Just", SIGTTIN); } + if (s === "SIGTTOU") { return Data$dMaybe.$Maybe("Just", SIGTTOU); } + if (s === "SIGUNUSED") { return Data$dMaybe.$Maybe("Just", SIGUNUSED); } + if (s === "SIGURG") { return Data$dMaybe.$Maybe("Just", SIGURG); } + if (s === "SIGUSR1") { return Data$dMaybe.$Maybe("Just", SIGUSR1); } + if (s === "SIGUSR2") { return Data$dMaybe.$Maybe("Just", SIGUSR2); } + if (s === "SIGVTALRM") { return Data$dMaybe.$Maybe("Just", SIGVTALRM); } + if (s === "SIGWINCH") { return Data$dMaybe.$Maybe("Just", SIGWINCH); } + if (s === "SIGXCPU") { return Data$dMaybe.$Maybe("Just", SIGXCPU); } + if (s === "SIGXFSZ") { return Data$dMaybe.$Maybe("Just", SIGXFSZ); } + return Data$dMaybe.Nothing; +}; +const eqSignal = { + eq: x => y => { + if (x.tag === "SIGABRT") { return y.tag === "SIGABRT"; } + if (x.tag === "SIGALRM") { return y.tag === "SIGALRM"; } + if (x.tag === "SIGBUS") { return y.tag === "SIGBUS"; } + if (x.tag === "SIGCHLD") { return y.tag === "SIGCHLD"; } + if (x.tag === "SIGCLD") { return y.tag === "SIGCLD"; } + if (x.tag === "SIGCONT") { return y.tag === "SIGCONT"; } + if (x.tag === "SIGEMT") { return y.tag === "SIGEMT"; } + if (x.tag === "SIGFPE") { return y.tag === "SIGFPE"; } + if (x.tag === "SIGHUP") { return y.tag === "SIGHUP"; } + if (x.tag === "SIGILL") { return y.tag === "SIGILL"; } + if (x.tag === "SIGINFO") { return y.tag === "SIGINFO"; } + if (x.tag === "SIGINT") { return y.tag === "SIGINT"; } + if (x.tag === "SIGIO") { return y.tag === "SIGIO"; } + if (x.tag === "SIGIOT") { return y.tag === "SIGIOT"; } + if (x.tag === "SIGKILL") { return y.tag === "SIGKILL"; } + if (x.tag === "SIGLOST") { return y.tag === "SIGLOST"; } + if (x.tag === "SIGPIPE") { return y.tag === "SIGPIPE"; } + if (x.tag === "SIGPOLL") { return y.tag === "SIGPOLL"; } + if (x.tag === "SIGPROF") { return y.tag === "SIGPROF"; } + if (x.tag === "SIGPWR") { return y.tag === "SIGPWR"; } + if (x.tag === "SIGQUIT") { return y.tag === "SIGQUIT"; } + if (x.tag === "SIGSEGV") { return y.tag === "SIGSEGV"; } + if (x.tag === "SIGSTKFLT") { return y.tag === "SIGSTKFLT"; } + if (x.tag === "SIGSTOP") { return y.tag === "SIGSTOP"; } + if (x.tag === "SIGSYS") { return y.tag === "SIGSYS"; } + if (x.tag === "SIGTERM") { return y.tag === "SIGTERM"; } + if (x.tag === "SIGTRAP") { return y.tag === "SIGTRAP"; } + if (x.tag === "SIGTSTP") { return y.tag === "SIGTSTP"; } + if (x.tag === "SIGTTIN") { return y.tag === "SIGTTIN"; } + if (x.tag === "SIGTTOU") { return y.tag === "SIGTTOU"; } + if (x.tag === "SIGUNUSED") { return y.tag === "SIGUNUSED"; } + if (x.tag === "SIGURG") { return y.tag === "SIGURG"; } + if (x.tag === "SIGUSR1") { return y.tag === "SIGUSR1"; } + if (x.tag === "SIGUSR2") { return y.tag === "SIGUSR2"; } + if (x.tag === "SIGVTALRM") { return y.tag === "SIGVTALRM"; } + if (x.tag === "SIGWINCH") { return y.tag === "SIGWINCH"; } + if (x.tag === "SIGXCPU") { return y.tag === "SIGXCPU"; } + if (x.tag === "SIGXFSZ") { return y.tag === "SIGXFSZ"; } + return false; + } +}; +const ordSignal = { + compare: x => y => { + if (x.tag === "SIGABRT") { + if (y.tag === "SIGABRT") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "SIGABRT") { return Data$dOrdering.GT; } + if (x.tag === "SIGALRM") { + if (y.tag === "SIGALRM") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "SIGALRM") { return Data$dOrdering.GT; } + if (x.tag === "SIGBUS") { + if (y.tag === "SIGBUS") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "SIGBUS") { return Data$dOrdering.GT; } + if (x.tag === "SIGCHLD") { + if (y.tag === "SIGCHLD") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "SIGCHLD") { return Data$dOrdering.GT; } + if (x.tag === "SIGCLD") { + if (y.tag === "SIGCLD") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "SIGCLD") { return Data$dOrdering.GT; } + if (x.tag === "SIGCONT") { + if (y.tag === "SIGCONT") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "SIGCONT") { return Data$dOrdering.GT; } + if (x.tag === "SIGEMT") { + if (y.tag === "SIGEMT") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "SIGEMT") { return Data$dOrdering.GT; } + if (x.tag === "SIGFPE") { + if (y.tag === "SIGFPE") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "SIGFPE") { return Data$dOrdering.GT; } + if (x.tag === "SIGHUP") { + if (y.tag === "SIGHUP") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "SIGHUP") { return Data$dOrdering.GT; } + if (x.tag === "SIGILL") { + if (y.tag === "SIGILL") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "SIGILL") { return Data$dOrdering.GT; } + if (x.tag === "SIGINFO") { + if (y.tag === "SIGINFO") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "SIGINFO") { return Data$dOrdering.GT; } + if (x.tag === "SIGINT") { + if (y.tag === "SIGINT") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "SIGINT") { return Data$dOrdering.GT; } + if (x.tag === "SIGIO") { + if (y.tag === "SIGIO") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "SIGIO") { return Data$dOrdering.GT; } + if (x.tag === "SIGIOT") { + if (y.tag === "SIGIOT") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "SIGIOT") { return Data$dOrdering.GT; } + if (x.tag === "SIGKILL") { + if (y.tag === "SIGKILL") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "SIGKILL") { return Data$dOrdering.GT; } + if (x.tag === "SIGLOST") { + if (y.tag === "SIGLOST") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "SIGLOST") { return Data$dOrdering.GT; } + if (x.tag === "SIGPIPE") { + if (y.tag === "SIGPIPE") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "SIGPIPE") { return Data$dOrdering.GT; } + if (x.tag === "SIGPOLL") { + if (y.tag === "SIGPOLL") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "SIGPOLL") { return Data$dOrdering.GT; } + if (x.tag === "SIGPROF") { + if (y.tag === "SIGPROF") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "SIGPROF") { return Data$dOrdering.GT; } + if (x.tag === "SIGPWR") { + if (y.tag === "SIGPWR") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "SIGPWR") { return Data$dOrdering.GT; } + if (x.tag === "SIGQUIT") { + if (y.tag === "SIGQUIT") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "SIGQUIT") { return Data$dOrdering.GT; } + if (x.tag === "SIGSEGV") { + if (y.tag === "SIGSEGV") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "SIGSEGV") { return Data$dOrdering.GT; } + if (x.tag === "SIGSTKFLT") { + if (y.tag === "SIGSTKFLT") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "SIGSTKFLT") { return Data$dOrdering.GT; } + if (x.tag === "SIGSTOP") { + if (y.tag === "SIGSTOP") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "SIGSTOP") { return Data$dOrdering.GT; } + if (x.tag === "SIGSYS") { + if (y.tag === "SIGSYS") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "SIGSYS") { return Data$dOrdering.GT; } + if (x.tag === "SIGTERM") { + if (y.tag === "SIGTERM") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "SIGTERM") { return Data$dOrdering.GT; } + if (x.tag === "SIGTRAP") { + if (y.tag === "SIGTRAP") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "SIGTRAP") { return Data$dOrdering.GT; } + if (x.tag === "SIGTSTP") { + if (y.tag === "SIGTSTP") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "SIGTSTP") { return Data$dOrdering.GT; } + if (x.tag === "SIGTTIN") { + if (y.tag === "SIGTTIN") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "SIGTTIN") { return Data$dOrdering.GT; } + if (x.tag === "SIGTTOU") { + if (y.tag === "SIGTTOU") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "SIGTTOU") { return Data$dOrdering.GT; } + if (x.tag === "SIGUNUSED") { + if (y.tag === "SIGUNUSED") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "SIGUNUSED") { return Data$dOrdering.GT; } + if (x.tag === "SIGURG") { + if (y.tag === "SIGURG") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "SIGURG") { return Data$dOrdering.GT; } + if (x.tag === "SIGUSR1") { + if (y.tag === "SIGUSR1") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "SIGUSR1") { return Data$dOrdering.GT; } + if (x.tag === "SIGUSR2") { + if (y.tag === "SIGUSR2") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "SIGUSR2") { return Data$dOrdering.GT; } + if (x.tag === "SIGVTALRM") { + if (y.tag === "SIGVTALRM") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "SIGVTALRM") { return Data$dOrdering.GT; } + if (x.tag === "SIGWINCH") { + if (y.tag === "SIGWINCH") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "SIGWINCH") { return Data$dOrdering.GT; } + if (x.tag === "SIGXCPU") { + if (y.tag === "SIGXCPU") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "SIGXCPU") { return Data$dOrdering.GT; } + if (x.tag === "SIGXFSZ") { + if (y.tag === "SIGXFSZ") { return Data$dOrdering.EQ; } + $runtime.fail(); + } + $runtime.fail(); + }, + Eq0: () => eqSignal +}; +export { + $Signal, + SIGABRT, + SIGALRM, + SIGBUS, + SIGCHLD, + SIGCLD, + SIGCONT, + SIGEMT, + SIGFPE, + SIGHUP, + SIGILL, + SIGINFO, + SIGINT, + SIGIO, + SIGIOT, + SIGKILL, + SIGLOST, + SIGPIPE, + SIGPOLL, + SIGPROF, + SIGPWR, + SIGQUIT, + SIGSEGV, + SIGSTKFLT, + SIGSTOP, + SIGSYS, + SIGTERM, + SIGTRAP, + SIGTSTP, + SIGTTIN, + SIGTTOU, + SIGUNUSED, + SIGURG, + SIGUSR1, + SIGUSR2, + SIGVTALRM, + SIGWINCH, + SIGXCPU, + SIGXFSZ, + eqSignal, + fromString, + ordSignal, + showSignal, + toString +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Posix/index.js b/.storybook/purescript-indexer/output-es/Data.Posix/index.js new file mode 100644 index 0000000..a720cc2 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Posix/index.js @@ -0,0 +1,20 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dEq from "../Data.Eq/index.js"; +import * as Data$dOrd from "../Data.Ord/index.js"; +import * as Data$dShow from "../Data.Show/index.js"; +const Uid = x => x; +const Pid = x => x; +const Gid = x => x; +const showUid = {show: v => "(Uid " + (Data$dShow.showIntImpl(v) + ")")}; +const showPid = {show: v => "(Pid " + (Data$dShow.showIntImpl(v) + ")")}; +const showGid = {show: v => "(Gid " + (Data$dShow.showIntImpl(v) + ")")}; +const ordUid = Data$dOrd.ordInt; +const ordPid = Data$dOrd.ordInt; +const ordGid = Data$dOrd.ordInt; +const newtypeUid = {Coercible0: () => undefined}; +const newtypePid = {Coercible0: () => undefined}; +const newtypeGid = {Coercible0: () => undefined}; +const eqUid = Data$dEq.eqInt; +const eqPid = Data$dEq.eqInt; +const eqGid = Data$dEq.eqInt; +export {Gid, Pid, Uid, eqGid, eqPid, eqUid, newtypeGid, newtypePid, newtypeUid, ordGid, ordPid, ordUid, showGid, showPid, showUid}; diff --git a/.storybook/purescript-indexer/output-es/Data.Predicate/index.js b/.storybook/purescript-indexer/output-es/Data.Predicate/index.js new file mode 100644 index 0000000..421fef5 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Predicate/index.js @@ -0,0 +1,15 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dBooleanAlgebra from "../Data.BooleanAlgebra/index.js"; +const Predicate = x => x; +const newtypePredicate = {Coercible0: () => undefined}; +const heytingAlgebraPredicate = { + ff: v => false, + tt: v => true, + implies: f => g => a => !f(a) || g(a), + conj: f => g => a => f(a) && g(a), + disj: f => g => a => f(a) || g(a), + not: f => a => !f(a) +}; +const contravariantPredicate = {cmap: f => v => x => v(f(x))}; +const booleanAlgebraPredicate = /* #__PURE__ */ Data$dBooleanAlgebra.booleanAlgebraFn(Data$dBooleanAlgebra.booleanAlgebraBoolean); +export {Predicate, booleanAlgebraPredicate, contravariantPredicate, heytingAlgebraPredicate, newtypePredicate}; diff --git a/.storybook/purescript-indexer/output-es/Data.Profunctor.Choice/index.js b/.storybook/purescript-indexer/output-es/Data.Profunctor.Choice/index.js new file mode 100644 index 0000000..f762907 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Profunctor.Choice/index.js @@ -0,0 +1,34 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dEither from "../Data.Either/index.js"; +import * as Data$dProfunctor from "../Data.Profunctor/index.js"; +const identity = x => x; +const right = dict => dict.right; +const left = dict => dict.left; +const splitChoice = dictCategory => { + const $1 = dictCategory.Semigroupoid0(); + return dictChoice => l => r => $1.compose(dictChoice.right(r))(dictChoice.left(l)); +}; +const fanin = dictCategory => { + const $1 = dictCategory.Semigroupoid0(); + const $2 = dictCategory.Semigroupoid0(); + return dictChoice => { + const dimap = dictChoice.Profunctor0().dimap; + return l => r => $1.compose(dimap(v2 => { + if (v2.tag === "Left") { return v2._1; } + if (v2.tag === "Right") { return v2._1; } + $runtime.fail(); + })(identity)(dictCategory.identity))($2.compose(dictChoice.right(r))(dictChoice.left(l))); + }; +}; +const choiceFn = /* #__PURE__ */ (() => ( + { + left: v => v1 => { + if (v1.tag === "Left") { return Data$dEither.$Either("Left", v(v1._1)); } + if (v1.tag === "Right") { return Data$dEither.$Either("Right", v1._1); } + $runtime.fail(); + }, + right: Data$dEither.functorEither.map, + Profunctor0: () => Data$dProfunctor.profunctorFn + } +))(); +export {choiceFn, fanin, identity, left, right, splitChoice}; diff --git a/.storybook/purescript-indexer/output-es/Data.Profunctor.Closed/index.js b/.storybook/purescript-indexer/output-es/Data.Profunctor.Closed/index.js new file mode 100644 index 0000000..223aa3f --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Profunctor.Closed/index.js @@ -0,0 +1,6 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dSemigroupoid from "../Control.Semigroupoid/index.js"; +import * as Data$dProfunctor from "../Data.Profunctor/index.js"; +const closedFunction = /* #__PURE__ */ (() => ({closed: Control$dSemigroupoid.semigroupoidFn.compose, Profunctor0: () => Data$dProfunctor.profunctorFn}))(); +const closed = dict => dict.closed; +export {closed, closedFunction}; diff --git a/.storybook/purescript-indexer/output-es/Data.Profunctor.Cochoice/index.js b/.storybook/purescript-indexer/output-es/Data.Profunctor.Cochoice/index.js new file mode 100644 index 0000000..4254769 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Profunctor.Cochoice/index.js @@ -0,0 +1,4 @@ +import * as $runtime from "../runtime.js"; +const unright = dict => dict.unright; +const unleft = dict => dict.unleft; +export {unleft, unright}; diff --git a/.storybook/purescript-indexer/output-es/Data.Profunctor.Costrong/index.js b/.storybook/purescript-indexer/output-es/Data.Profunctor.Costrong/index.js new file mode 100644 index 0000000..c553351 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Profunctor.Costrong/index.js @@ -0,0 +1,4 @@ +import * as $runtime from "../runtime.js"; +const unsecond = dict => dict.unsecond; +const unfirst = dict => dict.unfirst; +export {unfirst, unsecond}; diff --git a/.storybook/purescript-indexer/output-es/Data.Profunctor.Join/index.js b/.storybook/purescript-indexer/output-es/Data.Profunctor.Join/index.js new file mode 100644 index 0000000..4f588b2 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Profunctor.Join/index.js @@ -0,0 +1,14 @@ +import * as $runtime from "../runtime.js"; +const Join = x => x; +const showJoin = dictShow => ({show: v => "(Join " + (dictShow.show(v) + ")")}); +const semigroupJoin = dictSemigroupoid => ({append: v => v1 => dictSemigroupoid.compose(v)(v1)}); +const ordJoin = dictOrd => dictOrd; +const newtypeJoin = {Coercible0: () => undefined}; +const monoidJoin = dictCategory => { + const $1 = dictCategory.Semigroupoid0(); + const semigroupJoin1 = {append: v => v1 => $1.compose(v)(v1)}; + return {mempty: dictCategory.identity, Semigroup0: () => semigroupJoin1}; +}; +const invariantJoin = dictProfunctor => ({imap: f => g => v => dictProfunctor.dimap(g)(f)(v)}); +const eqJoin = dictEq => dictEq; +export {Join, eqJoin, invariantJoin, monoidJoin, newtypeJoin, ordJoin, semigroupJoin, showJoin}; diff --git a/.storybook/purescript-indexer/output-es/Data.Profunctor.Split/index.js b/.storybook/purescript-indexer/output-es/Data.Profunctor.Split/index.js new file mode 100644 index 0000000..dd3fc7b --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Profunctor.Split/index.js @@ -0,0 +1,12 @@ +import * as $runtime from "../runtime.js"; +const $SplitF = (_1, _2, _3) => ({tag: "SplitF", _1, _2, _3}); +const identity = x => x; +const SplitF = value0 => value1 => value2 => $SplitF(value0, value1, value2); +const unSplit = f => v => f(v._1)(v._2)(v._3); +const split = f => g => fx => $SplitF(f, g, fx); +const profunctorSplit = {dimap: f => g => v => $SplitF(x => v._1(f(x)), x => g(v._2(x)), v._3)}; +const lowerSplit = dictInvariant => v => dictInvariant.imap(v._2)(v._1)(v._3); +const liftSplit = /* #__PURE__ */ split(identity)(identity); +const hoistSplit = nat => v => $SplitF(v._1, v._2, nat(v._3)); +const functorSplit = {map: f => v => $SplitF(v._1, x => f(v._2(x)), v._3)}; +export {$SplitF, SplitF, functorSplit, hoistSplit, identity, liftSplit, lowerSplit, profunctorSplit, split, unSplit}; diff --git a/.storybook/purescript-indexer/output-es/Data.Profunctor.Star/index.js b/.storybook/purescript-indexer/output-es/Data.Profunctor.Star/index.js new file mode 100644 index 0000000..579e408 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Profunctor.Star/index.js @@ -0,0 +1,232 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dEither from "../Data.Either/index.js"; +import * as Data$dFunctor from "../Data.Functor/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +const Star = x => x; +const semigroupoidStar = dictBind => ({compose: v => v1 => x => dictBind.bind(v1(x))(v)}); +const profunctorStar = dictFunctor => ( + { + dimap: f => g => v => { + const $4 = dictFunctor.map(g); + return x => $4(v(f(x))); + } + } +); +const strongStar = dictFunctor => { + const profunctorStar1 = { + dimap: f => g => v => { + const $4 = dictFunctor.map(g); + return x => $4(v(f(x))); + } + }; + return { + first: v => v1 => dictFunctor.map(v2 => Data$dTuple.$Tuple(v2, v1._2))(v(v1._1)), + second: v => v1 => dictFunctor.map(Data$dTuple.Tuple(v1._1))(v(v1._2)), + Profunctor0: () => profunctorStar1 + }; +}; +const newtypeStar = {Coercible0: () => undefined}; +const invariantStar = dictInvariant => ( + { + imap: f => g => v => { + const $4 = dictInvariant.imap(f)(g); + return x => $4(v(x)); + } + } +); +const hoistStar = f => v => x => f(v(x)); +const functorStar = dictFunctor => ( + { + map: f => v => { + const $3 = dictFunctor.map(f); + return x => $3(v(x)); + } + } +); +const distributiveStar = dictDistributive => { + const $1 = dictDistributive.Functor0(); + const functorStar1 = { + map: f => v => { + const $4 = $1.map(f); + return x => $4(v(x)); + } + }; + return { + distribute: dictFunctor => { + const collect1 = dictDistributive.collect(dictFunctor); + return f => a => collect1(v => v(a))(f); + }, + collect: dictFunctor => f => { + const $5 = distributiveStar(dictDistributive).distribute(dictFunctor); + const $6 = dictFunctor.map(f); + return x => $5($6(x)); + }, + Functor0: () => functorStar1 + }; +}; +const closedStar = dictDistributive => { + const distribute = dictDistributive.distribute(Data$dFunctor.functorFn); + const $2 = dictDistributive.Functor0(); + const profunctorStar1 = { + dimap: f => g => v => { + const $6 = $2.map(g); + return x => $6(v(f(x))); + } + }; + return {closed: v => g => distribute(x => v(g(x))), Profunctor0: () => profunctorStar1}; +}; +const choiceStar = dictApplicative => { + const Functor0 = dictApplicative.Apply0().Functor0(); + const profunctorStar1 = { + dimap: f => g => v => { + const $5 = Functor0.map(g); + return x => $5(v(f(x))); + } + }; + return { + left: v => { + const $4 = Functor0.map(Data$dEither.Left); + return v2 => { + if (v2.tag === "Left") { return $4(v(v2._1)); } + if (v2.tag === "Right") { return dictApplicative.pure(Data$dEither.$Either("Right", v2._1)); } + $runtime.fail(); + }; + }, + right: v => { + const $4 = Functor0.map(Data$dEither.Right); + return v2 => { + if (v2.tag === "Left") { return dictApplicative.pure(Data$dEither.$Either("Left", v2._1)); } + if (v2.tag === "Right") { return $4(v(v2._1)); } + $runtime.fail(); + }; + }, + Profunctor0: () => profunctorStar1 + }; +}; +const categoryStar = dictMonad => { + const $1 = dictMonad.Bind1(); + const semigroupoidStar1 = {compose: v => v1 => x => $1.bind(v1(x))(v)}; + return {identity: dictMonad.Applicative0().pure, Semigroupoid0: () => semigroupoidStar1}; +}; +const applyStar = dictApply => { + const $1 = dictApply.Functor0(); + const functorStar1 = { + map: f => v => { + const $4 = $1.map(f); + return x => $4(v(x)); + } + }; + return {apply: v => v1 => a => dictApply.apply(v(a))(v1(a)), Functor0: () => functorStar1}; +}; +const bindStar = dictBind => { + const $1 = dictBind.Apply0(); + const $2 = $1.Functor0(); + const functorStar1 = { + map: f => v => { + const $5 = $2.map(f); + return x => $5(v(x)); + } + }; + const applyStar1 = {apply: v => v1 => a => $1.apply(v(a))(v1(a)), Functor0: () => functorStar1}; + return {bind: v => f => x => dictBind.bind(v(x))(a => f(a)(x)), Apply0: () => applyStar1}; +}; +const applicativeStar = dictApplicative => { + const $1 = dictApplicative.Apply0(); + const $2 = $1.Functor0(); + const functorStar1 = { + map: f => v => { + const $5 = $2.map(f); + return x => $5(v(x)); + } + }; + const applyStar1 = {apply: v => v1 => a => $1.apply(v(a))(v1(a)), Functor0: () => functorStar1}; + return {pure: a => v => dictApplicative.pure(a), Apply0: () => applyStar1}; +}; +const monadStar = dictMonad => { + const $1 = dictMonad.Applicative0(); + const $2 = $1.Apply0(); + const $3 = $2.Functor0(); + const functorStar1 = { + map: f => v => { + const $6 = $3.map(f); + return x => $6(v(x)); + } + }; + const applyStar1 = {apply: v => v1 => a => $2.apply(v(a))(v1(a)), Functor0: () => functorStar1}; + const applicativeStar1 = {pure: a => v => $1.pure(a), Apply0: () => applyStar1}; + const bindStar1 = bindStar(dictMonad.Bind1()); + return {Applicative0: () => applicativeStar1, Bind1: () => bindStar1}; +}; +const altStar = dictAlt => { + const $1 = dictAlt.Functor0(); + const functorStar1 = { + map: f => v => { + const $4 = $1.map(f); + return x => $4(v(x)); + } + }; + return {alt: v => v1 => a => dictAlt.alt(v(a))(v1(a)), Functor0: () => functorStar1}; +}; +const plusStar = dictPlus => { + const $1 = dictPlus.Alt0(); + const $2 = $1.Functor0(); + const functorStar1 = { + map: f => v => { + const $5 = $2.map(f); + return x => $5(v(x)); + } + }; + const altStar1 = {alt: v => v1 => a => $1.alt(v(a))(v1(a)), Functor0: () => functorStar1}; + return {empty: v => dictPlus.empty, Alt0: () => altStar1}; +}; +const alternativeStar = dictAlternative => { + const $1 = dictAlternative.Applicative0(); + const $2 = $1.Apply0(); + const $3 = $2.Functor0(); + const functorStar1 = { + map: f => v => { + const $6 = $3.map(f); + return x => $6(v(x)); + } + }; + const applyStar1 = {apply: v => v1 => a => $2.apply(v(a))(v1(a)), Functor0: () => functorStar1}; + const applicativeStar1 = {pure: a => v => $1.pure(a), Apply0: () => applyStar1}; + const $7 = dictAlternative.Plus1(); + const $8 = $7.Alt0(); + const $9 = $8.Functor0(); + const functorStar1$1 = { + map: f => v => { + const $12 = $9.map(f); + return x => $12(v(x)); + } + }; + const altStar1 = {alt: v => v1 => a => $8.alt(v(a))(v1(a)), Functor0: () => functorStar1$1}; + return {Applicative0: () => applicativeStar1, Plus1: () => ({empty: v => $7.empty, Alt0: () => altStar1})}; +}; +const monadPlusStar = dictMonadPlus => { + const monadStar1 = monadStar(dictMonadPlus.Monad0()); + const alternativeStar1 = alternativeStar(dictMonadPlus.Alternative1()); + return {Monad0: () => monadStar1, Alternative1: () => alternativeStar1}; +}; +export { + Star, + altStar, + alternativeStar, + applicativeStar, + applyStar, + bindStar, + categoryStar, + choiceStar, + closedStar, + distributiveStar, + functorStar, + hoistStar, + invariantStar, + monadPlusStar, + monadStar, + newtypeStar, + plusStar, + profunctorStar, + semigroupoidStar, + strongStar +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Profunctor.Strong/index.js b/.storybook/purescript-indexer/output-es/Data.Profunctor.Strong/index.js new file mode 100644 index 0000000..e38b386 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Profunctor.Strong/index.js @@ -0,0 +1,22 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dProfunctor from "../Data.Profunctor/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +const identity = x => x; +const strongFn = /* #__PURE__ */ (() => ( + {first: a2b => v => Data$dTuple.$Tuple(a2b(v._1), v._2), second: Data$dTuple.functorTuple.map, Profunctor0: () => Data$dProfunctor.profunctorFn} +))(); +const second = dict => dict.second; +const first = dict => dict.first; +const splitStrong = dictCategory => { + const $1 = dictCategory.Semigroupoid0(); + return dictStrong => l => r => $1.compose(dictStrong.second(r))(dictStrong.first(l)); +}; +const fanout = dictCategory => { + const $1 = dictCategory.Semigroupoid0(); + const $2 = dictCategory.Semigroupoid0(); + return dictStrong => { + const dimap = dictStrong.Profunctor0().dimap; + return l => r => $1.compose($2.compose(dictStrong.second(r))(dictStrong.first(l)))(dimap(identity)(a => Data$dTuple.$Tuple(a, a))(dictCategory.identity)); + }; +}; +export {fanout, first, identity, second, splitStrong, strongFn}; diff --git a/.storybook/purescript-indexer/output-es/Data.Profunctor/index.js b/.storybook/purescript-indexer/output-es/Data.Profunctor/index.js new file mode 100644 index 0000000..620772a --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Profunctor/index.js @@ -0,0 +1,11 @@ +import * as $runtime from "../runtime.js"; +import * as Unsafe$dCoerce from "../Unsafe.Coerce/index.js"; +const identity = x => x; +const profunctorFn = {dimap: a2b => c2d => b2c => x => c2d(b2c(a2b(x)))}; +const dimap = dict => dict.dimap; +const lcmap = dictProfunctor => a2b => dictProfunctor.dimap(a2b)(identity); +const rmap = dictProfunctor => b2c => dictProfunctor.dimap(identity)(b2c); +const unwrapIso = dictProfunctor => () => dictProfunctor.dimap(Unsafe$dCoerce.unsafeCoerce)(Unsafe$dCoerce.unsafeCoerce); +const wrapIso = dictProfunctor => () => v => dictProfunctor.dimap(Unsafe$dCoerce.unsafeCoerce)(Unsafe$dCoerce.unsafeCoerce); +const arr = dictCategory => dictProfunctor => f => dictProfunctor.dimap(identity)(f)(dictCategory.identity); +export {arr, dimap, identity, lcmap, profunctorFn, rmap, unwrapIso, wrapIso}; diff --git a/.storybook/purescript-indexer/output-es/Data.Reflectable/foreign.js b/.storybook/purescript-indexer/output-es/Data.Reflectable/foreign.js new file mode 100644 index 0000000..822a20c --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Reflectable/foreign.js @@ -0,0 +1,5 @@ +// module Data.Reflectable + +export const unsafeCoerce = function (arg) { + return arg; +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Reflectable/index.js b/.storybook/purescript-indexer/output-es/Data.Reflectable/index.js new file mode 100644 index 0000000..3099189 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Reflectable/index.js @@ -0,0 +1,11 @@ +import * as $runtime from "../runtime.js"; +import * as Type$dProxy from "../Type.Proxy/index.js"; +import {unsafeCoerce} from "./foreign.js"; +const reifiableString = {}; +const reifiableOrdering = {}; +const reifiableInt = {}; +const reifiableBoolean = {}; +const reifyType = () => s => f => unsafeCoerce(dictReflectable => f(dictReflectable))({reflectType: v => s})(Type$dProxy.Proxy); +const reflectType = dict => dict.reflectType; +export {reflectType, reifiableBoolean, reifiableInt, reifiableOrdering, reifiableString, reifyType}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Data.Ring.Generic/index.js b/.storybook/purescript-indexer/output-es/Data.Ring.Generic/index.js new file mode 100644 index 0000000..48f8f45 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Ring.Generic/index.js @@ -0,0 +1,11 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dGeneric$dRep from "../Data.Generic.Rep/index.js"; +const genericSub$p = dict => dict["genericSub'"]; +const genericSub = dictGeneric => dictGenericRing => x => y => dictGeneric.to(dictGenericRing["genericSub'"](dictGeneric.from(x))(dictGeneric.from(y))); +const genericRingProduct = dictGenericRing => dictGenericRing1 => ( + {"genericSub'": v => v1 => Data$dGeneric$dRep.$Product(dictGenericRing["genericSub'"](v._1)(v1._1), dictGenericRing1["genericSub'"](v._2)(v1._2))} +); +const genericRingNoArguments = {"genericSub'": v => v1 => Data$dGeneric$dRep.NoArguments}; +const genericRingConstructor = dictGenericRing => ({"genericSub'": v => v1 => dictGenericRing["genericSub'"](v)(v1)}); +const genericRingArgument = dictRing => ({"genericSub'": v => v1 => dictRing.sub(v)(v1)}); +export {genericRingArgument, genericRingConstructor, genericRingNoArguments, genericRingProduct, genericSub, genericSub$p}; diff --git a/.storybook/purescript-indexer/output-es/Data.Ring/foreign.js b/.storybook/purescript-indexer/output-es/Data.Ring/foreign.js new file mode 100644 index 0000000..cceb66c --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Ring/foreign.js @@ -0,0 +1,12 @@ +export const intSub = function (x) { + return function (y) { + /* jshint bitwise: false */ + return x - y | 0; + }; +}; + +export const numSub = function (n1) { + return function (n2) { + return n1 - n2; + }; +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Ring/index.js b/.storybook/purescript-indexer/output-es/Data.Ring/index.js new file mode 100644 index 0000000..0dbcabe --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Ring/index.js @@ -0,0 +1,42 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dSemiring from "../Data.Semiring/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +import * as Record$dUnsafe from "../Record.Unsafe/index.js"; +import * as Type$dProxy from "../Type.Proxy/index.js"; +import {intSub, numSub} from "./foreign.js"; +const subRecord = dict => dict.subRecord; +const sub = dict => dict.sub; +const ringUnit = {sub: v => v1 => Data$dUnit.unit, Semiring0: () => Data$dSemiring.semiringUnit}; +const ringRecordNil = {subRecord: v => v1 => v2 => ({}), SemiringRecord0: () => Data$dSemiring.semiringRecordNil}; +const ringRecordCons = dictIsSymbol => () => dictRingRecord => { + const semiringRecordCons1 = Data$dSemiring.semiringRecordCons(dictIsSymbol)()(dictRingRecord.SemiringRecord0()); + return dictRing => { + const semiringRecordCons2 = semiringRecordCons1(dictRing.Semiring0()); + return { + subRecord: v => ra => rb => { + const key = dictIsSymbol.reflectSymbol(Type$dProxy.Proxy); + const $$get = Record$dUnsafe.unsafeGet(key); + return Record$dUnsafe.unsafeSet(key)(dictRing.sub($$get(ra))($$get(rb)))(dictRingRecord.subRecord(Type$dProxy.Proxy)(ra)(rb)); + }, + SemiringRecord0: () => semiringRecordCons2 + }; + }; +}; +const ringRecord = () => dictRingRecord => { + const semiringRecord1 = Data$dSemiring.semiringRecord()(dictRingRecord.SemiringRecord0()); + return {sub: dictRingRecord.subRecord(Type$dProxy.Proxy), Semiring0: () => semiringRecord1}; +}; +const ringProxy = {sub: v => v1 => Type$dProxy.Proxy, Semiring0: () => Data$dSemiring.semiringProxy}; +const ringNumber = {sub: numSub, Semiring0: () => Data$dSemiring.semiringNumber}; +const ringInt = {sub: intSub, Semiring0: () => Data$dSemiring.semiringInt}; +const ringFn = dictRing => { + const $1 = dictRing.Semiring0(); + const semiringFn = {add: f => g => x => $1.add(f(x))(g(x)), zero: v => $1.zero, mul: f => g => x => $1.mul(f(x))(g(x)), one: v => $1.one}; + return {sub: f => g => x => dictRing.sub(f(x))(g(x)), Semiring0: () => semiringFn}; +}; +const negate = dictRing => { + const zero = dictRing.Semiring0().zero; + return a => dictRing.sub(zero)(a); +}; +export {negate, ringFn, ringInt, ringNumber, ringProxy, ringRecord, ringRecordCons, ringRecordNil, ringUnit, sub, subRecord}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Data.Semigroup.First/index.js b/.storybook/purescript-indexer/output-es/Data.Semigroup.First/index.js new file mode 100644 index 0000000..940dad1 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Semigroup.First/index.js @@ -0,0 +1,15 @@ +import * as $runtime from "../runtime.js"; +const First = x => x; +const showFirst = dictShow => ({show: v => "(First " + (dictShow.show(v) + ")")}); +const semigroupFirst = {append: x => v => x}; +const ordFirst = dictOrd => dictOrd; +const functorFirst = {map: f => m => f(m)}; +const eqFirst = dictEq => dictEq; +const eq1First = {eq1: dictEq => dictEq.eq}; +const ord1First = {compare1: dictOrd => dictOrd.compare, Eq10: () => eq1First}; +const boundedFirst = dictBounded => dictBounded; +const applyFirst = {apply: v => v1 => v(v1), Functor0: () => functorFirst}; +const bindFirst = {bind: v => f => f(v), Apply0: () => applyFirst}; +const applicativeFirst = {pure: First, Apply0: () => applyFirst}; +const monadFirst = {Applicative0: () => applicativeFirst, Bind1: () => bindFirst}; +export {First, applicativeFirst, applyFirst, bindFirst, boundedFirst, eq1First, eqFirst, functorFirst, monadFirst, ord1First, ordFirst, semigroupFirst, showFirst}; diff --git a/.storybook/purescript-indexer/output-es/Data.Semigroup.Foldable/index.js b/.storybook/purescript-indexer/output-es/Data.Semigroup.Foldable/index.js new file mode 100644 index 0000000..e2e676a --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Semigroup.Foldable/index.js @@ -0,0 +1,131 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dApply from "../Control.Apply/index.js"; +import * as Data$dFoldable from "../Data.Foldable/index.js"; +import * as Data$dFunction from "../Data.Function/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +import * as Unsafe$dCoerce from "../Unsafe.Coerce/index.js"; +const $FoldRight1 = (_1, _2) => ({tag: "FoldRight1", _1, _2}); +const identity = x => x; +const FoldRight1 = value0 => value1 => $FoldRight1(value0, value1); +const semigroupAct = dictApply => { + const map = dictApply.Functor0().map; + return {append: v => v1 => dictApply.apply(map(v$1 => Control$dApply.identity)(v))(v1)}; +}; +const mkFoldRight1 = /* #__PURE__ */ FoldRight1(Data$dFunction.const); +const foldr1 = dict => dict.foldr1; +const foldl1 = dict => dict.foldl1; +const maximumBy = dictFoldable1 => cmp => dictFoldable1.foldl1(x => y => { + if (cmp(x)(y).tag === "GT") { return x; } + return y; +}); +const minimumBy = dictFoldable1 => cmp => dictFoldable1.foldl1(x => y => { + if (cmp(x)(y).tag === "LT") { return x; } + return y; +}); +const foldableTuple = {foldMap1: dictSemigroup => f => v => f(v._2), foldr1: v => v1 => v1._2, foldl1: v => v1 => v1._2, Foldable0: () => Data$dFoldable.foldableTuple}; +const foldableMultiplicative = {foldr1: v => v1 => v1, foldl1: v => v1 => v1, foldMap1: dictSemigroup => f => v => f(v), Foldable0: () => Data$dFoldable.foldableMultiplicative}; +const foldableIdentity = {foldMap1: dictSemigroup => f => v => f(v), foldl1: v => v1 => v1, foldr1: v => v1 => v1, Foldable0: () => Data$dFoldable.foldableIdentity}; +const foldableDual = {foldr1: v => v1 => v1, foldl1: v => v1 => v1, foldMap1: dictSemigroup => f => v => f(v), Foldable0: () => Data$dFoldable.foldableDual}; +const foldRight1Semigroup = {append: v => v1 => $FoldRight1(a => f => v._1(f(v._2)(v1._1(a)(f)))(f), v1._2)}; +const semigroupDual = {append: v => v1 => foldRight1Semigroup.append(v1)(v)}; +const foldMap1DefaultR = dictFoldable1 => dictFunctor => dictSemigroup => f => { + const $4 = dictFunctor.map(f); + const $5 = dictFoldable1.foldr1(dictSemigroup.append); + return x => $5($4(x)); +}; +const foldMap1DefaultL = dictFoldable1 => dictFunctor => dictSemigroup => f => { + const $4 = dictFunctor.map(f); + const $5 = dictFoldable1.foldl1(dictSemigroup.append); + return x => $5($4(x)); +}; +const foldMap1 = dict => dict.foldMap1; +const foldl1Default = dictFoldable1 => { + const $1 = dictFoldable1.foldMap1(semigroupDual)(mkFoldRight1); + return x => a => { + const $4 = $1(a); + return $4._1($4._2)(b => a$1 => x(a$1)(b)); + }; +}; +const foldr1Default = dictFoldable1 => { + const $1 = dictFoldable1.foldMap1(foldRight1Semigroup)(mkFoldRight1); + return b => a => { + const $4 = $1(a); + return $4._1($4._2)(b); + }; +}; +const intercalateMap = dictFoldable1 => dictSemigroup => { + const foldMap12 = dictFoldable1.foldMap1({append: v => v1 => j => dictSemigroup.append(v(j))(dictSemigroup.append(j)(v1(j)))}); + return j => f => foldable => foldMap12(x => { + const $7 = f(x); + return v => $7; + })(foldable)(j); +}; +const intercalate = dictFoldable1 => dictSemigroup => { + const foldMap12 = dictFoldable1.foldMap1({append: v => v1 => j => dictSemigroup.append(v(j))(dictSemigroup.append(j)(v1(j)))}); + return a => foldable => foldMap12(x => v => x)(foldable)(a); +}; +const maximum = dictOrd => { + const semigroupMax = { + append: v => v1 => { + const v$1 = dictOrd.compare(v)(v1); + if (v$1.tag === "LT") { return v1; } + if (v$1.tag === "EQ") { return v; } + if (v$1.tag === "GT") { return v; } + $runtime.fail(); + } + }; + return dictFoldable1 => dictFoldable1.foldMap1(semigroupMax)(Unsafe$dCoerce.unsafeCoerce); +}; +const minimum = dictOrd => { + const semigroupMin = { + append: v => v1 => { + const v$1 = dictOrd.compare(v)(v1); + if (v$1.tag === "LT") { return v; } + if (v$1.tag === "EQ") { return v; } + if (v$1.tag === "GT") { return v1; } + $runtime.fail(); + } + }; + return dictFoldable1 => dictFoldable1.foldMap1(semigroupMin)(Unsafe$dCoerce.unsafeCoerce); +}; +const traverse1_ = dictFoldable1 => dictApply => { + const $2 = dictApply.Functor0(); + const foldMap12 = dictFoldable1.foldMap1(semigroupAct(dictApply)); + return f => t => $2.map(v => Data$dUnit.unit)(foldMap12(x => f(x))(t)); +}; +const for1_ = dictFoldable1 => dictApply => { + const $2 = traverse1_(dictFoldable1)(dictApply); + return b => a => $2(a)(b); +}; +const sequence1_ = dictFoldable1 => dictApply => traverse1_(dictFoldable1)(dictApply)(identity); +const fold1 = dictFoldable1 => dictSemigroup => dictFoldable1.foldMap1(dictSemigroup)(identity); +export { + $FoldRight1, + FoldRight1, + fold1, + foldMap1, + foldMap1DefaultL, + foldMap1DefaultR, + foldRight1Semigroup, + foldableDual, + foldableIdentity, + foldableMultiplicative, + foldableTuple, + foldl1, + foldl1Default, + foldr1, + foldr1Default, + for1_, + identity, + intercalate, + intercalateMap, + maximum, + maximumBy, + minimum, + minimumBy, + mkFoldRight1, + semigroupAct, + semigroupDual, + sequence1_, + traverse1_ +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Semigroup.Generic/index.js b/.storybook/purescript-indexer/output-es/Data.Semigroup.Generic/index.js new file mode 100644 index 0000000..d17fce9 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Semigroup.Generic/index.js @@ -0,0 +1,12 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dGeneric$dRep from "../Data.Generic.Rep/index.js"; +const genericSemigroupNoConstructors = {"genericAppend'": a => v => a}; +const genericSemigroupNoArguments = {"genericAppend'": a => v => a}; +const genericSemigroupArgument = dictSemigroup => ({"genericAppend'": v => v1 => dictSemigroup.append(v)(v1)}); +const genericAppend$p = dict => dict["genericAppend'"]; +const genericSemigroupConstructor = dictGenericSemigroup => ({"genericAppend'": v => v1 => dictGenericSemigroup["genericAppend'"](v)(v1)}); +const genericSemigroupProduct = dictGenericSemigroup => dictGenericSemigroup1 => ( + {"genericAppend'": v => v1 => Data$dGeneric$dRep.$Product(dictGenericSemigroup["genericAppend'"](v._1)(v1._1), dictGenericSemigroup1["genericAppend'"](v._2)(v1._2))} +); +const genericAppend = dictGeneric => dictGenericSemigroup => x => y => dictGeneric.to(dictGenericSemigroup["genericAppend'"](dictGeneric.from(x))(dictGeneric.from(y))); +export {genericAppend, genericAppend$p, genericSemigroupArgument, genericSemigroupConstructor, genericSemigroupNoArguments, genericSemigroupNoConstructors, genericSemigroupProduct}; diff --git a/.storybook/purescript-indexer/output-es/Data.Semigroup.Last/index.js b/.storybook/purescript-indexer/output-es/Data.Semigroup.Last/index.js new file mode 100644 index 0000000..74ac14c --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Semigroup.Last/index.js @@ -0,0 +1,15 @@ +import * as $runtime from "../runtime.js"; +const Last = x => x; +const showLast = dictShow => ({show: v => "(Last " + (dictShow.show(v) + ")")}); +const semigroupLast = {append: v => x => x}; +const ordLast = dictOrd => dictOrd; +const functorLast = {map: f => m => f(m)}; +const eqLast = dictEq => dictEq; +const eq1Last = {eq1: dictEq => dictEq.eq}; +const ord1Last = {compare1: dictOrd => dictOrd.compare, Eq10: () => eq1Last}; +const boundedLast = dictBounded => dictBounded; +const applyLast = {apply: v => v1 => v(v1), Functor0: () => functorLast}; +const bindLast = {bind: v => f => f(v), Apply0: () => applyLast}; +const applicativeLast = {pure: Last, Apply0: () => applyLast}; +const monadLast = {Applicative0: () => applicativeLast, Bind1: () => bindLast}; +export {Last, applicativeLast, applyLast, bindLast, boundedLast, eq1Last, eqLast, functorLast, monadLast, ord1Last, ordLast, semigroupLast, showLast}; diff --git a/.storybook/purescript-indexer/output-es/Data.Semigroup.Traversable/index.js b/.storybook/purescript-indexer/output-es/Data.Semigroup.Traversable/index.js new file mode 100644 index 0000000..957c259 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Semigroup.Traversable/index.js @@ -0,0 +1,61 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dIdentity from "../Data.Identity/index.js"; +import * as Data$dMonoid$dDual from "../Data.Monoid.Dual/index.js"; +import * as Data$dMonoid$dMultiplicative from "../Data.Monoid.Multiplicative/index.js"; +import * as Data$dSemigroup$dFoldable from "../Data.Semigroup.Foldable/index.js"; +import * as Data$dTraversable from "../Data.Traversable/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +const identity = x => x; +const traverse1 = dict => dict.traverse1; +const traversableTuple = { + traverse1: dictApply => { + const map = dictApply.Functor0().map; + return f => v => map(Data$dTuple.Tuple(v._1))(f(v._2)); + }, + sequence1: dictApply => { + const map = dictApply.Functor0().map; + return v => map(Data$dTuple.Tuple(v._1))(v._2); + }, + Foldable10: () => Data$dSemigroup$dFoldable.foldableTuple, + Traversable1: () => Data$dTraversable.traversableTuple +}; +const traversableIdentity = { + traverse1: dictApply => { + const map = dictApply.Functor0().map; + return f => v => map(Data$dIdentity.Identity)(f(v)); + }, + sequence1: dictApply => { + const map = dictApply.Functor0().map; + return v => map(Data$dIdentity.Identity)(v); + }, + Foldable10: () => Data$dSemigroup$dFoldable.foldableIdentity, + Traversable1: () => Data$dTraversable.traversableIdentity +}; +const sequence1Default = dictTraversable1 => dictApply => dictTraversable1.traverse1(dictApply)(identity); +const traversableDual = { + traverse1: dictApply => { + const map = dictApply.Functor0().map; + return f => v => map(Data$dMonoid$dDual.Dual)(f(v)); + }, + sequence1: dictApply => traversableDual.traverse1(dictApply)(identity), + Foldable10: () => Data$dSemigroup$dFoldable.foldableDual, + Traversable1: () => Data$dTraversable.traversableDual +}; +const traversableMultiplicative = { + traverse1: dictApply => { + const map = dictApply.Functor0().map; + return f => v => map(Data$dMonoid$dMultiplicative.Multiplicative)(f(v)); + }, + sequence1: dictApply => traversableMultiplicative.traverse1(dictApply)(identity), + Foldable10: () => Data$dSemigroup$dFoldable.foldableMultiplicative, + Traversable1: () => Data$dTraversable.traversableMultiplicative +}; +const sequence1 = dict => dict.sequence1; +const traverse1Default = dictTraversable1 => { + const map = dictTraversable1.Traversable1().Functor0().map; + return dictApply => { + const sequence12 = dictTraversable1.sequence1(dictApply); + return f => ta => sequence12(map(f)(ta)); + }; +}; +export {identity, sequence1, sequence1Default, traversableDual, traversableIdentity, traversableMultiplicative, traversableTuple, traverse1, traverse1Default}; diff --git a/.storybook/purescript-indexer/output-es/Data.Semigroup/foreign.js b/.storybook/purescript-indexer/output-es/Data.Semigroup/foreign.js new file mode 100644 index 0000000..1909f55 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Semigroup/foreign.js @@ -0,0 +1,13 @@ +export const concatString = function (s1) { + return function (s2) { + return s1 + s2; + }; +}; + +export const concatArray = function (xs) { + return function (ys) { + if (xs.length === 0) return ys; + if (ys.length === 0) return xs; + return xs.concat(ys); + }; +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Semigroup/index.js b/.storybook/purescript-indexer/output-es/Data.Semigroup/index.js new file mode 100644 index 0000000..9d3a134 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Semigroup/index.js @@ -0,0 +1,27 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +import * as Data$dVoid from "../Data.Void/index.js"; +import * as Record$dUnsafe from "../Record.Unsafe/index.js"; +import * as Type$dProxy from "../Type.Proxy/index.js"; +import {concatArray, concatString} from "./foreign.js"; +const semigroupVoid = {append: v => Data$dVoid.absurd}; +const semigroupUnit = {append: v => v1 => Data$dUnit.unit}; +const semigroupString = {append: concatString}; +const semigroupRecordNil = {appendRecord: v => v1 => v2 => ({})}; +const semigroupProxy = {append: v => v1 => Type$dProxy.Proxy}; +const semigroupArray = {append: concatArray}; +const appendRecord = dict => dict.appendRecord; +const semigroupRecord = () => dictSemigroupRecord => ({append: dictSemigroupRecord.appendRecord(Type$dProxy.Proxy)}); +const append = dict => dict.append; +const semigroupFn = dictSemigroup => ({append: f => g => x => dictSemigroup.append(f(x))(g(x))}); +const semigroupRecordCons = dictIsSymbol => () => dictSemigroupRecord => dictSemigroup => ( + { + appendRecord: v => ra => rb => { + const key = dictIsSymbol.reflectSymbol(Type$dProxy.Proxy); + const $$get = Record$dUnsafe.unsafeGet(key); + return Record$dUnsafe.unsafeSet(key)(dictSemigroup.append($$get(ra))($$get(rb)))(dictSemigroupRecord.appendRecord(Type$dProxy.Proxy)(ra)(rb)); + } + } +); +export {append, appendRecord, semigroupArray, semigroupFn, semigroupProxy, semigroupRecord, semigroupRecordCons, semigroupRecordNil, semigroupString, semigroupUnit, semigroupVoid}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Data.Semiring.Generic/index.js b/.storybook/purescript-indexer/output-es/Data.Semiring.Generic/index.js new file mode 100644 index 0000000..af2ef8c --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Semiring.Generic/index.js @@ -0,0 +1,49 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dGeneric$dRep from "../Data.Generic.Rep/index.js"; +const genericZero$p = dict => dict["genericZero'"]; +const genericZero = dictGeneric => dictGenericSemiring => dictGeneric.to(dictGenericSemiring["genericZero'"]); +const genericSemiringNoArguments = { + "genericAdd'": v => v1 => Data$dGeneric$dRep.NoArguments, + "genericZero'": Data$dGeneric$dRep.NoArguments, + "genericMul'": v => v1 => Data$dGeneric$dRep.NoArguments, + "genericOne'": Data$dGeneric$dRep.NoArguments +}; +const genericSemiringArgument = dictSemiring => ( + {"genericAdd'": v => v1 => dictSemiring.add(v)(v1), "genericZero'": dictSemiring.zero, "genericMul'": v => v1 => dictSemiring.mul(v)(v1), "genericOne'": dictSemiring.one} +); +const genericOne$p = dict => dict["genericOne'"]; +const genericOne = dictGeneric => dictGenericSemiring => dictGeneric.to(dictGenericSemiring["genericOne'"]); +const genericMul$p = dict => dict["genericMul'"]; +const genericMul = dictGeneric => dictGenericSemiring => x => y => dictGeneric.to(dictGenericSemiring["genericMul'"](dictGeneric.from(x))(dictGeneric.from(y))); +const genericAdd$p = dict => dict["genericAdd'"]; +const genericSemiringConstructor = dictGenericSemiring => ( + { + "genericAdd'": v => v1 => dictGenericSemiring["genericAdd'"](v)(v1), + "genericZero'": dictGenericSemiring["genericZero'"], + "genericMul'": v => v1 => dictGenericSemiring["genericMul'"](v)(v1), + "genericOne'": dictGenericSemiring["genericOne'"] + } +); +const genericSemiringProduct = dictGenericSemiring => dictGenericSemiring1 => ( + { + "genericAdd'": v => v1 => Data$dGeneric$dRep.$Product(dictGenericSemiring["genericAdd'"](v._1)(v1._1), dictGenericSemiring1["genericAdd'"](v._2)(v1._2)), + "genericZero'": Data$dGeneric$dRep.$Product(dictGenericSemiring["genericZero'"], dictGenericSemiring1["genericZero'"]), + "genericMul'": v => v1 => Data$dGeneric$dRep.$Product(dictGenericSemiring["genericMul'"](v._1)(v1._1), dictGenericSemiring1["genericMul'"](v._2)(v1._2)), + "genericOne'": Data$dGeneric$dRep.$Product(dictGenericSemiring["genericOne'"], dictGenericSemiring1["genericOne'"]) + } +); +const genericAdd = dictGeneric => dictGenericSemiring => x => y => dictGeneric.to(dictGenericSemiring["genericAdd'"](dictGeneric.from(x))(dictGeneric.from(y))); +export { + genericAdd, + genericAdd$p, + genericMul, + genericMul$p, + genericOne, + genericOne$p, + genericSemiringArgument, + genericSemiringConstructor, + genericSemiringNoArguments, + genericSemiringProduct, + genericZero, + genericZero$p +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Semiring/foreign.js b/.storybook/purescript-indexer/output-es/Data.Semiring/foreign.js new file mode 100644 index 0000000..2d537c1 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Semiring/foreign.js @@ -0,0 +1,25 @@ +export const intAdd = function (x) { + return function (y) { + /* jshint bitwise: false */ + return x + y | 0; + }; +}; + +export const intMul = function (x) { + return function (y) { + /* jshint bitwise: false */ + return x * y | 0; + }; +}; + +export const numAdd = function (n1) { + return function (n2) { + return n1 + n2; + }; +}; + +export const numMul = function (n1) { + return function (n2) { + return n1 * n2; + }; +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Semiring/index.js b/.storybook/purescript-indexer/output-es/Data.Semiring/index.js new file mode 100644 index 0000000..73d426e --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Semiring/index.js @@ -0,0 +1,64 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +import * as Record$dUnsafe from "../Record.Unsafe/index.js"; +import * as Type$dProxy from "../Type.Proxy/index.js"; +import {intAdd, intMul, numAdd, numMul} from "./foreign.js"; +const zeroRecord = dict => dict.zeroRecord; +const zero = dict => dict.zero; +const semiringUnit = {add: v => v1 => Data$dUnit.unit, zero: Data$dUnit.unit, mul: v => v1 => Data$dUnit.unit, one: Data$dUnit.unit}; +const semiringRecordNil = {addRecord: v => v1 => v2 => ({}), mulRecord: v => v1 => v2 => ({}), oneRecord: v => v1 => ({}), zeroRecord: v => v1 => ({})}; +const semiringProxy = {add: v => v1 => Type$dProxy.Proxy, mul: v => v1 => Type$dProxy.Proxy, one: Type$dProxy.Proxy, zero: Type$dProxy.Proxy}; +const semiringNumber = {add: numAdd, zero: 0.0, mul: numMul, one: 1.0}; +const semiringInt = {add: intAdd, zero: 0, mul: intMul, one: 1}; +const oneRecord = dict => dict.oneRecord; +const one = dict => dict.one; +const mulRecord = dict => dict.mulRecord; +const mul = dict => dict.mul; +const addRecord = dict => dict.addRecord; +const semiringRecord = () => dictSemiringRecord => ( + { + add: dictSemiringRecord.addRecord(Type$dProxy.Proxy), + mul: dictSemiringRecord.mulRecord(Type$dProxy.Proxy), + one: dictSemiringRecord.oneRecord(Type$dProxy.Proxy)(Type$dProxy.Proxy), + zero: dictSemiringRecord.zeroRecord(Type$dProxy.Proxy)(Type$dProxy.Proxy) + } +); +const add = dict => dict.add; +const semiringFn = dictSemiring => ( + {add: f => g => x => dictSemiring.add(f(x))(g(x)), zero: v => dictSemiring.zero, mul: f => g => x => dictSemiring.mul(f(x))(g(x)), one: v => dictSemiring.one} +); +const semiringRecordCons = dictIsSymbol => () => dictSemiringRecord => dictSemiring => ( + { + addRecord: v => ra => rb => { + const key = dictIsSymbol.reflectSymbol(Type$dProxy.Proxy); + const $$get = Record$dUnsafe.unsafeGet(key); + return Record$dUnsafe.unsafeSet(key)(dictSemiring.add($$get(ra))($$get(rb)))(dictSemiringRecord.addRecord(Type$dProxy.Proxy)(ra)(rb)); + }, + mulRecord: v => ra => rb => { + const key = dictIsSymbol.reflectSymbol(Type$dProxy.Proxy); + const $$get = Record$dUnsafe.unsafeGet(key); + return Record$dUnsafe.unsafeSet(key)(dictSemiring.mul($$get(ra))($$get(rb)))(dictSemiringRecord.mulRecord(Type$dProxy.Proxy)(ra)(rb)); + }, + oneRecord: v => v1 => Record$dUnsafe.unsafeSet(dictIsSymbol.reflectSymbol(Type$dProxy.Proxy))(dictSemiring.one)(dictSemiringRecord.oneRecord(Type$dProxy.Proxy)(Type$dProxy.Proxy)), + zeroRecord: v => v1 => Record$dUnsafe.unsafeSet(dictIsSymbol.reflectSymbol(Type$dProxy.Proxy))(dictSemiring.zero)(dictSemiringRecord.zeroRecord(Type$dProxy.Proxy)(Type$dProxy.Proxy)) + } +); +export { + add, + addRecord, + mul, + mulRecord, + one, + oneRecord, + semiringFn, + semiringInt, + semiringNumber, + semiringProxy, + semiringRecord, + semiringRecordCons, + semiringRecordNil, + semiringUnit, + zero, + zeroRecord +}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Data.Set.NonEmpty/index.js b/.storybook/purescript-indexer/output-es/Data.Set.NonEmpty/index.js new file mode 100644 index 0000000..4ad55b5 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Set.NonEmpty/index.js @@ -0,0 +1,142 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dArray$dNonEmpty$dInternal from "../Data.Array.NonEmpty.Internal/index.js"; +import * as Data$dEq from "../Data.Eq/index.js"; +import * as Data$dFunction from "../Data.Function/index.js"; +import * as Data$dList$dTypes from "../Data.List.Types/index.js"; +import * as Data$dMap$dInternal from "../Data.Map.Internal/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dSet from "../Data.Set/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +import * as Data$dUnfoldable1 from "../Data.Unfoldable1/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +const toUnfoldable2 = /* #__PURE__ */ Data$dSet.toUnfoldable(Data$dList$dTypes.unfoldableList); +const unionSet = dictOrd => s1 => v => Data$dMap$dInternal.unionWith(dictOrd)(Data$dFunction.const)(s1)(v); +const toUnfoldable1 = dictUnfoldable1 => v => dictUnfoldable1.unfoldr1(v1 => { + if (v1.tag === "Cons") { + if (v1._2.tag === "Nil") { return Data$dTuple.$Tuple(v1._1, Data$dMaybe.Nothing); } + return Data$dTuple.$Tuple(v1._1, Data$dMaybe.$Maybe("Just", v1._2)); + } + $runtime.fail(); +})(toUnfoldable2(v)); +const toUnfoldable = dictUnfoldable => Data$dSet.toUnfoldable(dictUnfoldable); +const toSet = v => v; +const subset = dictOrd => v => v1 => Data$dSet.difference(dictOrd)(v)(v1).tag === "Leaf"; +const size = v => Data$dMap$dInternal.size(v); +const singleton = a => Data$dMap$dInternal.$Map("Two", Data$dMap$dInternal.Leaf, a, Data$dUnit.unit, Data$dMap$dInternal.Leaf); +const showNonEmptySet = dictShow => { + const show = Data$dArray$dNonEmpty$dInternal.showNonEmptyArray(dictShow).show; + return {show: s => "(fromFoldable1 " + (show(toUnfoldable1(Data$dUnfoldable1.unfoldable1Array)(s)) + ")")}; +}; +const semigroupNonEmptySet = dictOrd => ({append: Data$dSet.union(dictOrd)}); +const properSubset = dictOrd => Data$dSet.properSubset(dictOrd); +const ordNonEmptySet = dictOrd => Data$dSet.ordSet(dictOrd); +const ord1NonEmptySet = Data$dSet.ord1Set; +const min = v => { + const $1 = Data$dMap$dInternal.findMin(v); + if ($1.tag === "Just") { return $1._1.key; } + $runtime.fail(); +}; +const member = dictOrd => a => v => { + const $3 = Data$dMap$dInternal.lookup(dictOrd)(a)(v); + if ($3.tag === "Nothing") { return false; } + if ($3.tag === "Just") { return true; } + $runtime.fail(); +}; +const max = v => { + const $1 = Data$dMap$dInternal.findMax(v); + if ($1.tag === "Just") { return $1._1.key; } + $runtime.fail(); +}; +const mapMaybe = dictOrd => f => v => Data$dSet.mapMaybe(dictOrd)(f)(v); +const map = dictOrd => f => v => Data$dSet.map(dictOrd)(f)(v); +const insert = dictOrd => a => v => Data$dMap$dInternal.insert(dictOrd)(a)(Data$dUnit.unit)(v); +const fromSet = s => { + if (s.tag === "Leaf") { return Data$dMaybe.Nothing; } + return Data$dMaybe.$Maybe("Just", s); +}; +const intersection = dictOrd => { + const intersection1 = Data$dSet.intersection(dictOrd); + return v => v1 => { + const $4 = intersection1(v)(v1); + if ($4.tag === "Leaf") { return Data$dMaybe.Nothing; } + return Data$dMaybe.$Maybe("Just", $4); + }; +}; +const fromFoldable1 = dictFoldable1 => dictOrd => dictFoldable1.foldMap1({append: Data$dSet.union(dictOrd)})(singleton); +const fromFoldable = dictFoldable => dictOrd => { + const $2 = dictFoldable.foldl(m => a => Data$dMap$dInternal.insert(dictOrd)(a)(Data$dUnit.unit)(m))(Data$dMap$dInternal.Leaf); + return x => { + const $4 = $2(x); + if ($4.tag === "Leaf") { return Data$dMaybe.Nothing; } + return Data$dMaybe.$Maybe("Just", $4); + }; +}; +const foldableNonEmptySet = Data$dSet.foldableSet; +const foldable1NonEmptySet = { + foldMap1: dictSemigroup => { + const foldMap11 = Data$dList$dTypes.foldable1NonEmptyList.foldMap1(dictSemigroup); + return f => { + const $3 = foldMap11(f); + return x => $3(toUnfoldable1(Data$dList$dTypes.unfoldable1NonEmptyList)(x)); + }; + }, + foldr1: f => { + const $1 = Data$dList$dTypes.foldable1NonEmptyList.foldr1(f); + return x => $1(toUnfoldable1(Data$dList$dTypes.unfoldable1NonEmptyList)(x)); + }, + foldl1: f => { + const $1 = Data$dList$dTypes.foldable1NonEmptyList.foldl1(f); + return x => $1(toUnfoldable1(Data$dList$dTypes.unfoldable1NonEmptyList)(x)); + }, + Foldable0: () => Data$dSet.foldableSet +}; +const filter = dictOrd => Data$dSet.filter(dictOrd); +const eqNonEmptySet = dictEq => { + const eq = Data$dMap$dInternal.eqMap(dictEq)(Data$dEq.eqUnit).eq; + return {eq: v => v1 => eq(v)(v1)}; +}; +const eq1NonEmptySet = Data$dSet.eq1Set; +const difference = dictOrd => v => v1 => { + const $3 = Data$dSet.difference(dictOrd)(v)(v1); + if ($3.tag === "Leaf") { return Data$dMaybe.Nothing; } + return Data$dMaybe.$Maybe("Just", $3); +}; +const $$delete = dictOrd => a => v => { + const $3 = Data$dMap$dInternal.delete(dictOrd)(a)(v); + if ($3.tag === "Leaf") { return Data$dMaybe.Nothing; } + return Data$dMaybe.$Maybe("Just", $3); +}; +const cons = dictOrd => a => x => Data$dMap$dInternal.insert(dictOrd)(a)(Data$dUnit.unit)(x); +export { + cons, + $$delete as delete, + difference, + eq1NonEmptySet, + eqNonEmptySet, + filter, + foldable1NonEmptySet, + foldableNonEmptySet, + fromFoldable, + fromFoldable1, + fromSet, + insert, + intersection, + map, + mapMaybe, + max, + member, + min, + ord1NonEmptySet, + ordNonEmptySet, + properSubset, + semigroupNonEmptySet, + showNonEmptySet, + singleton, + size, + subset, + toSet, + toUnfoldable, + toUnfoldable1, + toUnfoldable2, + unionSet +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Set/index.js b/.storybook/purescript-indexer/output-es/Data.Set/index.js new file mode 100644 index 0000000..e306773 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Set/index.js @@ -0,0 +1,228 @@ +// | This module defines a type of sets as balanced 2-3 trees, based on +// | +// | +// | Qualified import is encouraged, so as to avoid name clashes with other modules. +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dRec$dClass from "../Control.Monad.Rec.Class/index.js"; +import * as Control$dMonad$dST$dInternal from "../Control.Monad.ST.Internal/index.js"; +import * as Data$dArray from "../Data.Array/index.js"; +import * as Data$dArray$dST from "../Data.Array.ST/index.js"; +import * as Data$dEq from "../Data.Eq/index.js"; +import * as Data$dFoldable from "../Data.Foldable/index.js"; +import * as Data$dFunction from "../Data.Function/index.js"; +import * as Data$dList from "../Data.List/index.js"; +import * as Data$dList$dTypes from "../Data.List.Types/index.js"; +import * as Data$dMap$dInternal from "../Data.Map.Internal/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dShow from "../Data.Show/index.js"; +import * as Data$dUnfoldable from "../Data.Unfoldable/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +const fromFoldable1 = /* #__PURE__ */ (() => Data$dArray.fromFoldableImpl(Data$dList$dTypes.foldableList.foldr))(); +const tailRecM2 = f => a => b => Control$dMonad$dST$dInternal.monadRecST.tailRecM(o => f(o.a)(o.b))({a: a, b: b}); +const identity = x => x; +const $$Set = x => x; +const union = dictOrd => v => v1 => Data$dMap$dInternal.unionWith(dictOrd)(Data$dFunction.const)(v)(v1); +const toggle = dictOrd => a => v => Data$dMap$dInternal.alter(dictOrd)(v2 => { + if (v2.tag === "Nothing") { return Data$dMaybe.$Maybe("Just", Data$dUnit.unit); } + if (v2.tag === "Just") { return Data$dMaybe.Nothing; } + $runtime.fail(); +})(a)(v); +const toMap = v => v; +const toUnfoldable = dictUnfoldable => { + const $1 = Data$dList.toUnfoldable(dictUnfoldable); + return x => $1(Data$dMap$dInternal.foldableWithIndexMap.foldrWithIndex(k => v => acc => Data$dList$dTypes.$List("Cons", k, acc))(Data$dList$dTypes.Nil)(x)); +}; +const toUnfoldable1 = /* #__PURE__ */ toUnfoldable(Data$dUnfoldable.unfoldableArray); +const size = v => Data$dMap$dInternal.size(v); +const singleton = a => Data$dMap$dInternal.$Map("Two", Data$dMap$dInternal.Leaf, a, Data$dUnit.unit, Data$dMap$dInternal.Leaf); +const showSet = dictShow => { + const show = Data$dShow.showArrayImpl(dictShow.show); + return {show: s => "(fromFoldable " + (show(toUnfoldable1(s)) + ")")}; +}; +const semigroupSet = dictOrd => ({append: union(dictOrd)}); +const member = dictOrd => a => v => { + const $3 = Data$dMap$dInternal.lookup(dictOrd)(a)(v); + if ($3.tag === "Nothing") { return false; } + if ($3.tag === "Just") { return true; } + $runtime.fail(); +}; +const isEmpty = v => v.tag === "Leaf"; +const insert = dictOrd => a => v => Data$dMap$dInternal.insert(dictOrd)(a)(Data$dUnit.unit)(v); +const fromMap = $$Set; +const foldableSet = { + foldMap: dictMonoid => { + const foldMap1 = Data$dList$dTypes.foldableList.foldMap(dictMonoid); + return f => { + const $3 = foldMap1(f); + return x => $3(Data$dMap$dInternal.foldableWithIndexMap.foldrWithIndex(k => v => acc => Data$dList$dTypes.$List("Cons", k, acc))(Data$dList$dTypes.Nil)(x)); + }; + }, + foldl: f => x => { + const $2 = (() => { + 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; + } + $runtime.fail(); + }; + return go$r; + }; + return go(x); + })(); + return x$1 => $2(Data$dMap$dInternal.foldableWithIndexMap.foldrWithIndex(k => v => acc => Data$dList$dTypes.$List("Cons", k, acc))(Data$dList$dTypes.Nil)(x$1)); + }, + foldr: f => x => { + const $2 = Data$dList$dTypes.foldableList.foldr(f)(x); + return x$1 => $2(Data$dMap$dInternal.foldableWithIndexMap.foldrWithIndex(k => v => acc => Data$dList$dTypes.$List("Cons", k, acc))(Data$dList$dTypes.Nil)(x$1)); + } +}; +const findMin = v => { + const $1 = Data$dMap$dInternal.findMin(v); + if ($1.tag === "Just") { return Data$dMaybe.$Maybe("Just", $1._1.key); } + return Data$dMaybe.Nothing; +}; +const findMax = v => { + const $1 = Data$dMap$dInternal.findMax(v); + if ($1.tag === "Just") { return Data$dMaybe.$Maybe("Just", $1._1.key); } + return Data$dMaybe.Nothing; +}; +const filter = dictOrd => { + const filterWithKey = Data$dMap$dInternal.filterWithKey(dictOrd); + return f => v => filterWithKey(k => v1 => f(k))(v); +}; +const eqSet = dictEq => { + const eq = Data$dMap$dInternal.eqMap(dictEq)(Data$dEq.eqUnit).eq; + return {eq: v => v1 => eq(v)(v1)}; +}; +const ordSet = dictOrd => { + const compare = Data$dList$dTypes.ordList(dictOrd).compare; + const eq = Data$dMap$dInternal.eqMap(dictOrd.Eq0())(Data$dEq.eqUnit).eq; + const eqSet1 = {eq: v => v1 => eq(v)(v1)}; + return { + compare: s1 => s2 => compare(Data$dMap$dInternal.foldableWithIndexMap.foldrWithIndex(k => v => acc => Data$dList$dTypes.$List("Cons", k, acc))(Data$dList$dTypes.Nil)(s1))(Data$dMap$dInternal.foldableWithIndexMap.foldrWithIndex(k => v => acc => Data$dList$dTypes.$List( + "Cons", + k, + acc + ))(Data$dList$dTypes.Nil)(s2)), + Eq0: () => eqSet1 + }; +}; +const eq1Set = {eq1: dictEq => Data$dMap$dInternal.eqMap(dictEq)(Data$dEq.eqUnit).eq}; +const ord1Set = {compare1: dictOrd => ordSet(dictOrd).compare, Eq10: () => eq1Set}; +const empty = Data$dMap$dInternal.Leaf; +const fromFoldable = dictFoldable => dictOrd => dictFoldable.foldl(m => a => Data$dMap$dInternal.insert(dictOrd)(a)(Data$dUnit.unit)(m))(Data$dMap$dInternal.Leaf); +const intersection = dictOrd => { + const fromFoldable3 = Data$dFoldable.foldlArray(m => a => Data$dMap$dInternal.insert(dictOrd)(a)(Data$dUnit.unit)(m))(Data$dMap$dInternal.Leaf); + return s1 => s2 => { + const rs = fromFoldable1(Data$dMap$dInternal.foldableWithIndexMap.foldrWithIndex(k => v => acc => Data$dList$dTypes.$List("Cons", k, acc))(Data$dList$dTypes.Nil)(s2)); + const rl = rs.length; + const ls = fromFoldable1(Data$dMap$dInternal.foldableWithIndexMap.foldrWithIndex(k => v => acc => Data$dList$dTypes.$List("Cons", k, acc))(Data$dList$dTypes.Nil)(s1)); + const ll = ls.length; + return fromFoldable3(Control$dMonad$dST$dInternal.run(Control$dMonad$dST$dInternal.bind_(() => { + const acc = Data$dArray$dST.new(); + return tailRecM2(l => r => { + if (l < ll && r < rl) { + const v = dictOrd.compare(ls[l])(rs[r]); + if (v.tag === "EQ") { + return () => { + Data$dArray$dST.pushAll([ls[l]])(acc)(); + return Control$dMonad$dRec$dClass.$Step("Loop", {a: l + 1 | 0, b: r + 1 | 0}); + }; + } + if (v.tag === "LT") { return () => Control$dMonad$dRec$dClass.$Step("Loop", {a: l + 1 | 0, b: r}); } + if (v.tag === "GT") { return () => Control$dMonad$dRec$dClass.$Step("Loop", {a: l, b: r + 1 | 0}); } + $runtime.fail(); + } + return () => Control$dMonad$dRec$dClass.$Step("Done", acc); + })(0)(0)(); + })(Data$dArray$dST.unsafeFreeze))); + }; +}; +const map = dictOrd => f => foldableSet.foldl(m => a => Data$dMap$dInternal.insert(dictOrd)(f(a))(Data$dUnit.unit)(m))(Data$dMap$dInternal.Leaf); +const mapMaybe = dictOrd => f => foldableSet.foldr(a => acc => { + const $4 = f(a); + if ($4.tag === "Nothing") { return acc; } + if ($4.tag === "Just") { return Data$dMap$dInternal.insert(dictOrd)($4._1)(Data$dUnit.unit)(acc); } + $runtime.fail(); +})(Data$dMap$dInternal.Leaf); +const monoidSet = dictOrd => ({mempty: Data$dMap$dInternal.Leaf, Semigroup0: () => ({append: union(dictOrd)})}); +const unions = dictFoldable => dictOrd => dictFoldable.foldl(union(dictOrd))(Data$dMap$dInternal.Leaf); +const $$delete = dictOrd => a => v => Data$dMap$dInternal.delete(dictOrd)(a)(v); +const difference = dictOrd => s1 => s2 => { + 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 = Data$dMap$dInternal.delete(dictOrd)(v._1)(b); + go$a1 = v._2; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go(s1)(Data$dMap$dInternal.foldableWithIndexMap.foldrWithIndex(k => v => acc => Data$dList$dTypes.$List("Cons", k, acc))(Data$dList$dTypes.Nil)(s2)); +}; +const subset = dictOrd => s1 => s2 => difference(dictOrd)(s1)(s2).tag === "Leaf"; +const properSubset = dictOrd => { + const eq = Data$dMap$dInternal.eqMap(dictOrd.Eq0())(Data$dEq.eqUnit).eq; + return s1 => s2 => difference(dictOrd)(s1)(s2).tag === "Leaf" && !eq(s1)(s2); +}; +const checkValid = v => Data$dMap$dInternal.checkValid(v); +const catMaybes = dictOrd => mapMaybe(dictOrd)(identity); +export { + $$Set as Set, + catMaybes, + checkValid, + $$delete as delete, + difference, + empty, + eq1Set, + eqSet, + filter, + findMax, + findMin, + foldableSet, + fromFoldable, + fromFoldable1, + fromMap, + identity, + insert, + intersection, + isEmpty, + map, + mapMaybe, + member, + monoidSet, + ord1Set, + ordSet, + properSubset, + semigroupSet, + showSet, + singleton, + size, + subset, + tailRecM2, + toMap, + toUnfoldable, + toUnfoldable1, + toggle, + union, + unions +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Show.Generic/foreign.js b/.storybook/purescript-indexer/output-es/Data.Show.Generic/foreign.js new file mode 100644 index 0000000..fb2cf11 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Show.Generic/foreign.js @@ -0,0 +1,5 @@ +export const intercalate = function (separator) { + return function (xs) { + return xs.join(separator); + }; +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Show.Generic/index.js b/.storybook/purescript-indexer/output-es/Data.Show.Generic/index.js new file mode 100644 index 0000000..f620313 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Show.Generic/index.js @@ -0,0 +1,44 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dSemigroup from "../Data.Semigroup/index.js"; +import * as Type$dProxy from "../Type.Proxy/index.js"; +import {intercalate} from "./foreign.js"; +const genericShowArgsNoArguments = {genericShowArgs: v => []}; +const genericShowArgsArgument = dictShow => ({genericShowArgs: v => [dictShow.show(v)]}); +const genericShowArgs = dict => dict.genericShowArgs; +const genericShowArgsProduct = dictGenericShowArgs => dictGenericShowArgs1 => ( + {genericShowArgs: v => Data$dSemigroup.concatArray(dictGenericShowArgs.genericShowArgs(v._1))(dictGenericShowArgs1.genericShowArgs(v._2))} +); +const genericShowConstructor = dictGenericShowArgs => dictIsSymbol => ( + { + "genericShow'": v => { + const ctor = dictIsSymbol.reflectSymbol(Type$dProxy.Proxy); + const v1 = dictGenericShowArgs.genericShowArgs(v); + if (v1.length === 0) { return ctor; } + return "(" + (intercalate(" ")(Data$dSemigroup.concatArray([ctor])(v1)) + ")"); + } + } +); +const genericShow$p = dict => dict["genericShow'"]; +const genericShowNoConstructors = {"genericShow'": a => genericShowNoConstructors["genericShow'"](a)}; +const genericShowSum = dictGenericShow => dictGenericShow1 => ( + { + "genericShow'": v => { + if (v.tag === "Inl") { return dictGenericShow["genericShow'"](v._1); } + if (v.tag === "Inr") { return dictGenericShow1["genericShow'"](v._1); } + $runtime.fail(); + } + } +); +const genericShow = dictGeneric => dictGenericShow => x => dictGenericShow["genericShow'"](dictGeneric.from(x)); +export { + genericShow, + genericShow$p, + genericShowArgs, + genericShowArgsArgument, + genericShowArgsNoArguments, + genericShowArgsProduct, + genericShowConstructor, + genericShowNoConstructors, + genericShowSum +}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Data.Show/foreign.js b/.storybook/purescript-indexer/output-es/Data.Show/foreign.js new file mode 100644 index 0000000..2526f70 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Show/foreign.js @@ -0,0 +1,59 @@ +export const showIntImpl = function (n) { + return n.toString(); +}; + +export const showNumberImpl = function (n) { + var str = n.toString(); + return isNaN(str + ".0") ? str : str + ".0"; +}; + +export const showCharImpl = function (c) { + var code = c.charCodeAt(0); + if (code < 0x20 || code === 0x7F) { + switch (c) { + case "\x07": return "'\\a'"; + case "\b": return "'\\b'"; + case "\f": return "'\\f'"; + case "\n": return "'\\n'"; + case "\r": return "'\\r'"; + case "\t": return "'\\t'"; + case "\v": return "'\\v'"; + } + return "'\\" + code.toString(10) + "'"; + } + return c === "'" || c === "\\" ? "'\\" + c + "'" : "'" + c + "'"; +}; + +export const 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 "\t": return "\\t"; + case "\v": return "\\v"; + } + var k = i + 1; + var empty = k < l && s[k] >= "0" && s[k] <= "9" ? "\\&" : ""; + return "\\" + c.charCodeAt(0).toString(10) + empty; + } + ) + "\""; +}; + +export const 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(",") + "]"; + }; +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Show/index.js b/.storybook/purescript-indexer/output-es/Data.Show/index.js new file mode 100644 index 0000000..0dc1cbd --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Show/index.js @@ -0,0 +1,57 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dVoid from "../Data.Void/index.js"; +import * as Record$dUnsafe from "../Record.Unsafe/index.js"; +import * as Type$dProxy from "../Type.Proxy/index.js"; +import {showArrayImpl, showCharImpl, showIntImpl, showNumberImpl, showStringImpl} from "./foreign.js"; +const showVoid = {show: Data$dVoid.absurd}; +const showUnit = {show: v => "unit"}; +const showString = {show: showStringImpl}; +const showRecordFieldsNil = {showRecordFields: v => v1 => ""}; +const showRecordFields = dict => dict.showRecordFields; +const showRecord = () => () => dictShowRecordFields => ({show: record => "{" + (dictShowRecordFields.showRecordFields(Type$dProxy.Proxy)(record) + "}")}); +const showProxy = {show: v => "Proxy"}; +const showNumber = {show: showNumberImpl}; +const showInt = {show: showIntImpl}; +const showChar = {show: showCharImpl}; +const showBoolean = { + show: v => { + if (v) { return "true"; } + return "false"; + } +}; +const show = dict => dict.show; +const showArray = dictShow => ({show: showArrayImpl(dictShow.show)}); +const showRecordFieldsCons = dictIsSymbol => dictShowRecordFields => dictShow => ( + { + showRecordFields: v => record => { + const key = dictIsSymbol.reflectSymbol(Type$dProxy.Proxy); + return " " + (key + (": " + (dictShow.show(Record$dUnsafe.unsafeGet(key)(record)) + ("," + dictShowRecordFields.showRecordFields(Type$dProxy.Proxy)(record))))); + } + } +); +const showRecordFieldsConsNil = dictIsSymbol => dictShow => ( + { + showRecordFields: v => record => { + const key = dictIsSymbol.reflectSymbol(Type$dProxy.Proxy); + return " " + (key + (": " + (dictShow.show(Record$dUnsafe.unsafeGet(key)(record)) + " "))); + } + } +); +export { + show, + showArray, + showBoolean, + showChar, + showInt, + showNumber, + showProxy, + showRecord, + showRecordFields, + showRecordFieldsCons, + showRecordFieldsConsNil, + showRecordFieldsNil, + showString, + showUnit, + showVoid +}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Data.String.CaseInsensitive/index.js b/.storybook/purescript-indexer/output-es/Data.String.CaseInsensitive/index.js new file mode 100644 index 0000000..d719e0b --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.String.CaseInsensitive/index.js @@ -0,0 +1,13 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dOrd from "../Data.Ord/index.js"; +import * as Data$dShow from "../Data.Show/index.js"; +import * as Data$dString$dCommon from "../Data.String.Common/index.js"; +const CaseInsensitiveString = x => x; +const showCaseInsensitiveString = {show: v => "(CaseInsensitiveString " + (Data$dShow.showStringImpl(v) + ")")}; +const newtypeCaseInsensitiveString = {Coercible0: () => undefined}; +const eqCaseInsensitiveString = {eq: v => v1 => Data$dString$dCommon.toLower(v) === Data$dString$dCommon.toLower(v1)}; +const ordCaseInsensitiveString = { + compare: v => v1 => Data$dOrd.ordString.compare(Data$dString$dCommon.toLower(v))(Data$dString$dCommon.toLower(v1)), + Eq0: () => eqCaseInsensitiveString +}; +export {CaseInsensitiveString, eqCaseInsensitiveString, newtypeCaseInsensitiveString, ordCaseInsensitiveString, showCaseInsensitiveString}; diff --git a/.storybook/purescript-indexer/output-es/Data.String.CodePoints/foreign.js b/.storybook/purescript-indexer/output-es/Data.String.CodePoints/foreign.js new file mode 100644 index 0000000..ebd9e39 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.String.CodePoints/foreign.js @@ -0,0 +1,107 @@ +/* global Symbol */ + +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"; + +export const _unsafeCodePointAt0 = function (fallback) { + return hasCodePointAt + ? function (str) { return str.codePointAt(0); } + : fallback; +}; + +export const _codePointAt = function (fallback) { + return function (Just) { + return function (Nothing) { + return function (unsafeCodePointAt0) { + return function (index) { + return function (str) { + var length = str.length; + if (index < 0 || index >= length) return Nothing; + if (hasStringIterator) { + var iter = str[Symbol.iterator](); + for (var i = index;; --i) { + var o = iter.next(); + if (o.done) return Nothing; + if (i === 0) return Just(unsafeCodePointAt0(o.value)); + } + } + return fallback(index)(str); + }; + }; + }; + }; + }; +}; + +export const _countPrefix = function (fallback) { + return function (unsafeCodePointAt0) { + 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 = unsafeCodePointAt0(o.value); + if (!pred(cp)) return cpCount; + } + }; + }; + } + return fallback; + }; +}; + +export const _fromCodePointArray = function (singleton) { + return hasFromCodePoint + ? function (cps) { + // Function.prototype.apply will fail for very large second parameters, + // so we don't use it for arrays with 10,000 or more entries. + if (cps.length < 10e3) { + return String.fromCodePoint.apply(String, cps); + } + return cps.map(singleton).join(""); + } + : function (cps) { + return cps.map(singleton).join(""); + }; +}; + +export const _singleton = function (fallback) { + return hasFromCodePoint ? String.fromCodePoint : fallback; +}; + +export const _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); + }; +}; + +export const _toCodePointArray = function (fallback) { + return function (unsafeCodePointAt0) { + if (hasArrayFrom) { + return function (str) { + return Array.from(str, unsafeCodePointAt0); + }; + } + return fallback; + }; +}; diff --git a/.storybook/purescript-indexer/output-es/Data.String.CodePoints/index.js b/.storybook/purescript-indexer/output-es/Data.String.CodePoints/index.js new file mode 100644 index 0000000..75043e9 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.String.CodePoints/index.js @@ -0,0 +1,209 @@ +// | These functions allow PureScript strings to be treated as if they were +// | sequences of Unicode code points instead of their true underlying +// | implementation (sequences of UTF-16 code units). For nearly all uses of +// | strings, these functions should be preferred over the ones in +// | `Data.String.CodeUnits`. +import * as $runtime from "../runtime.js"; +import * as Data$dEnum from "../Data.Enum/index.js"; +import * as Data$dEuclideanRing from "../Data.EuclideanRing/index.js"; +import * as Data$dInt from "../Data.Int/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dOrd from "../Data.Ord/index.js"; +import * as Data$dString$dCodeUnits from "../Data.String.CodeUnits/index.js"; +import * as Data$dString$dCommon from "../Data.String.Common/index.js"; +import * as Data$dString$dUnsafe from "../Data.String.Unsafe/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +import * as Data$dUnfoldable from "../Data.Unfoldable/index.js"; +import {_codePointAt, _countPrefix, _fromCodePointArray, _singleton, _take, _toCodePointArray, _unsafeCodePointAt0} from "./foreign.js"; +const showCodePoint = {show: v => "(CodePoint 0x" + (Data$dString$dCommon.toUpper(Data$dInt.toStringAs(16)(v)) + ")")}; +const uncons = s => { + const v = Data$dString$dCodeUnits.length(s); + if (v === 0) { return Data$dMaybe.Nothing; } + if (v === 1) { return Data$dMaybe.$Maybe("Just", {head: Data$dEnum.toCharCode(Data$dString$dUnsafe.charAt(0)(s)), tail: ""}); } + const cu1 = Data$dEnum.toCharCode(Data$dString$dUnsafe.charAt(1)(s)); + const cu0 = Data$dEnum.toCharCode(Data$dString$dUnsafe.charAt(0)(s)); + if (55296 <= cu0 && cu0 <= 56319 && (56320 <= cu1 && cu1 <= 57343)) { + return Data$dMaybe.$Maybe("Just", {head: (((cu0 - 55296 | 0) * 1024 | 0) + (cu1 - 56320 | 0) | 0) + 65536 | 0, tail: Data$dString$dCodeUnits.drop(2)(s)}); + } + return Data$dMaybe.$Maybe("Just", {head: cu0, tail: Data$dString$dCodeUnits.drop(1)(s)}); +}; +const unconsButWithTuple = s => { + const $1 = uncons(s); + if ($1.tag === "Just") { return Data$dMaybe.$Maybe("Just", Data$dTuple.$Tuple($1._1.head, $1._1.tail)); } + return Data$dMaybe.Nothing; +}; +const toCodePointArrayFallback = s => Data$dUnfoldable.unfoldableArray.unfoldr(unconsButWithTuple)(s); +const unsafeCodePointAt0Fallback = s => { + const cu0 = Data$dEnum.toCharCode(Data$dString$dUnsafe.charAt(0)(s)); + if (55296 <= cu0 && cu0 <= 56319 && Data$dString$dCodeUnits.length(s) > 1) { + const cu1 = Data$dEnum.toCharCode(Data$dString$dUnsafe.charAt(1)(s)); + if (56320 <= cu1 && cu1 <= 57343) { return (((cu0 - 55296 | 0) * 1024 | 0) + (cu1 - 56320 | 0) | 0) + 65536 | 0; } + return cu0; + } + return cu0; +}; +const unsafeCodePointAt0 = /* #__PURE__ */ _unsafeCodePointAt0(unsafeCodePointAt0Fallback); +const toCodePointArray = /* #__PURE__ */ _toCodePointArray(toCodePointArrayFallback)(unsafeCodePointAt0); +const length = x => toCodePointArray(x).length; +const lastIndexOf = p => s => { + const $2 = Data$dString$dCodeUnits.lastIndexOf(p)(s); + if ($2.tag === "Just") { return Data$dMaybe.$Maybe("Just", toCodePointArray(Data$dString$dCodeUnits.take($2._1)(s)).length); } + return Data$dMaybe.Nothing; +}; +const indexOf = p => s => { + const $2 = Data$dString$dCodeUnits.indexOf(p)(s); + if ($2.tag === "Just") { return Data$dMaybe.$Maybe("Just", toCodePointArray(Data$dString$dCodeUnits.take($2._1)(s)).length); } + return Data$dMaybe.Nothing; +}; +const fromCharCode = x => Data$dString$dCodeUnits.singleton((() => { + if (x >= 0 && x <= 65535) { return Data$dEnum.fromCharCode(x); } + if (x < 0) { return "\u0000"; } + return "￿"; +})()); +const singletonFallback = v => { + if (v <= 65535) { return fromCharCode(v); } + return fromCharCode(Data$dEuclideanRing.intDiv(v - 65536 | 0)(1024) + 55296 | 0) + fromCharCode(Data$dEuclideanRing.intMod(v - 65536 | 0)(1024) + 56320 | 0); +}; +const fromCodePointArray = /* #__PURE__ */ _fromCodePointArray(singletonFallback); +const singleton = /* #__PURE__ */ _singleton(singletonFallback); +const takeFallback = v => v1 => { + if (v < 1) { return ""; } + const v2 = uncons(v1); + if (v2.tag === "Just") { return singleton(v2._1.head) + takeFallback(v - 1 | 0)(v2._1.tail); } + return v1; +}; +const take = /* #__PURE__ */ _take(takeFallback); +const lastIndexOf$p = p => i => s => { + const $3 = Data$dString$dCodeUnits.lastIndexOf$p(p)(Data$dString$dCodeUnits.length(take(i)(s)))(s); + if ($3.tag === "Just") { return Data$dMaybe.$Maybe("Just", toCodePointArray(Data$dString$dCodeUnits.take($3._1)(s)).length); } + return Data$dMaybe.Nothing; +}; +const splitAt = i => s => { + const before = take(i)(s); + return {before: before, after: Data$dString$dCodeUnits.drop(Data$dString$dCodeUnits.length(before))(s)}; +}; +const eqCodePoint = {eq: x => y => x === y}; +const ordCodePoint = {compare: x => y => Data$dOrd.ordInt.compare(x)(y), Eq0: () => eqCodePoint}; +const drop = n => s => Data$dString$dCodeUnits.drop(Data$dString$dCodeUnits.length(take(n)(s)))(s); +const indexOf$p = p => i => s => { + const s$p = Data$dString$dCodeUnits.drop(Data$dString$dCodeUnits.length(take(i)(s)))(s); + const $4 = Data$dString$dCodeUnits.indexOf(p)(s$p); + if ($4.tag === "Just") { return Data$dMaybe.$Maybe("Just", i + toCodePointArray(Data$dString$dCodeUnits.take($4._1)(s$p)).length | 0); } + return Data$dMaybe.Nothing; +}; +const 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 = uncons(s); + if (v.tag === "Just") { + if (p(v._1.head)) { + countTail$a0 = p; + countTail$a1 = v._1.tail; + countTail$a2 = accum + 1 | 0; + continue; + } + countTail$c = false; + countTail$r = accum; + continue; + } + countTail$c = false; + countTail$r = accum; + continue; + }; + return countTail$r; +}; +const countFallback = p => s => countTail(p)(s)(0); +const countPrefix = /* #__PURE__ */ _countPrefix(countFallback)(unsafeCodePointAt0); +const dropWhile = p => s => Data$dString$dCodeUnits.drop(Data$dString$dCodeUnits.length(take(countPrefix(p)(s))(s)))(s); +const takeWhile = p => s => take(countPrefix(p)(s))(s); +const codePointFromChar = x => Data$dEnum.toCharCode(x); +const codePointAtFallback = codePointAtFallback$a0$copy => codePointAtFallback$a1$copy => { + let codePointAtFallback$a0 = codePointAtFallback$a0$copy, codePointAtFallback$a1 = codePointAtFallback$a1$copy, codePointAtFallback$c = true, codePointAtFallback$r; + while (codePointAtFallback$c) { + const n = codePointAtFallback$a0, s = codePointAtFallback$a1; + const v = uncons(s); + if (v.tag === "Just") { + if (n === 0) { + codePointAtFallback$c = false; + codePointAtFallback$r = Data$dMaybe.$Maybe("Just", v._1.head); + continue; + } + codePointAtFallback$a0 = n - 1 | 0; + codePointAtFallback$a1 = v._1.tail; + continue; + } + codePointAtFallback$c = false; + codePointAtFallback$r = Data$dMaybe.Nothing; + continue; + }; + return codePointAtFallback$r; +}; +const codePointAt = v => v1 => { + if (v < 0) { return Data$dMaybe.Nothing; } + if (v === 0) { + if (v1 === "") { return Data$dMaybe.Nothing; } + return Data$dMaybe.$Maybe("Just", unsafeCodePointAt0(v1)); + } + return _codePointAt(codePointAtFallback)(Data$dMaybe.Just)(Data$dMaybe.Nothing)(unsafeCodePointAt0)(v)(v1); +}; +const boundedCodePoint = {bottom: 0, top: 1114111, Ord0: () => ordCodePoint}; +const boundedEnumCodePoint = { + cardinality: 1114112, + fromEnum: v => v, + toEnum: n => { + if (n >= 0 && n <= 1114111) { return Data$dMaybe.$Maybe("Just", n); } + return Data$dMaybe.Nothing; + }, + Bounded0: () => boundedCodePoint, + Enum1: () => enumCodePoint +}; +const enumCodePoint = { + succ: a => { + const $1 = a + 1 | 0; + if ($1 >= 0 && $1 <= 1114111) { return Data$dMaybe.$Maybe("Just", $1); } + return Data$dMaybe.Nothing; + }, + pred: a => { + const $1 = a - 1 | 0; + if ($1 >= 0 && $1 <= 1114111) { return Data$dMaybe.$Maybe("Just", $1); } + return Data$dMaybe.Nothing; + }, + Ord0: () => ordCodePoint +}; +export { + boundedCodePoint, + boundedEnumCodePoint, + codePointAt, + codePointAtFallback, + codePointFromChar, + countFallback, + countPrefix, + countTail, + drop, + dropWhile, + enumCodePoint, + eqCodePoint, + fromCharCode, + fromCodePointArray, + indexOf, + indexOf$p, + lastIndexOf, + lastIndexOf$p, + length, + ordCodePoint, + showCodePoint, + singleton, + singletonFallback, + splitAt, + take, + takeFallback, + takeWhile, + toCodePointArray, + toCodePointArrayFallback, + uncons, + unconsButWithTuple, + unsafeCodePointAt0, + unsafeCodePointAt0Fallback +}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Data.String.CodeUnits/foreign.js b/.storybook/purescript-indexer/output-es/Data.String.CodeUnits/foreign.js new file mode 100644 index 0000000..2608384 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.String.CodeUnits/foreign.js @@ -0,0 +1,116 @@ +export const fromCharArray = function (a) { + return a.join(""); +}; + +export const toCharArray = function (s) { + return s.split(""); +}; + +export const singleton = function (c) { + return c; +}; + +export const _charAt = function (just) { + return function (nothing) { + return function (i) { + return function (s) { + return i >= 0 && i < s.length ? just(s.charAt(i)) : nothing; + }; + }; + }; +}; + +export const _toChar = function (just) { + return function (nothing) { + return function (s) { + return s.length === 1 ? just(s) : nothing; + }; + }; +}; + +export const length = function (s) { + return s.length; +}; + +export const countPrefix = function (p) { + return function (s) { + var i = 0; + while (i < s.length && p(s.charAt(i))) i++; + return i; + }; +}; + +export const _indexOf = function (just) { + return function (nothing) { + return function (x) { + return function (s) { + var i = s.indexOf(x); + return i === -1 ? nothing : just(i); + }; + }; + }; +}; + +export const _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); + }; + }; + }; + }; +}; + +export const _lastIndexOf = function (just) { + return function (nothing) { + return function (x) { + return function (s) { + var i = s.lastIndexOf(x); + return i === -1 ? nothing : just(i); + }; + }; + }; +}; + +export const _lastIndexOfStartingAt = function (just) { + return function (nothing) { + return function (x) { + return function (startAt) { + return function (s) { + var i = s.lastIndexOf(x, startAt); + return i === -1 ? nothing : just(i); + }; + }; + }; + }; +}; + +export const take = function (n) { + return function (s) { + return s.substr(0, n); + }; +}; + +export const drop = function (n) { + return function (s) { + return s.substring(n); + }; +}; + +export const slice = function (b) { + return function (e) { + return function (s) { + return s.slice(b,e); + }; + }; +}; + +export const splitAt = function (i) { + return function (s) { + return { before: s.substring(0, i), after: s.substring(i) }; + }; +}; diff --git a/.storybook/purescript-indexer/output-es/Data.String.CodeUnits/index.js b/.storybook/purescript-indexer/output-es/Data.String.CodeUnits/index.js new file mode 100644 index 0000000..6c3883a --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.String.CodeUnits/index.js @@ -0,0 +1,55 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dString$dUnsafe from "../Data.String.Unsafe/index.js"; +import { + _charAt, + _indexOf, + _indexOfStartingAt, + _lastIndexOf, + _lastIndexOfStartingAt, + _toChar, + countPrefix, + drop, + fromCharArray, + length, + singleton, + slice, + splitAt, + take, + toCharArray +} from "./foreign.js"; +const uncons = v => { + if (v === "") { return Data$dMaybe.Nothing; } + return Data$dMaybe.$Maybe("Just", {head: Data$dString$dUnsafe.charAt(0)(v), tail: drop(1)(v)}); +}; +const toChar = /* #__PURE__ */ _toChar(Data$dMaybe.Just)(Data$dMaybe.Nothing); +const takeWhile = p => s => take(countPrefix(p)(s))(s); +const takeRight = i => s => drop(length(s) - i | 0)(s); +const stripSuffix = v => str => { + const v1 = splitAt(length(str) - length(v) | 0)(str); + if (v1.after === v) { return Data$dMaybe.$Maybe("Just", v1.before); } + return Data$dMaybe.Nothing; +}; +const stripPrefix = v => str => { + const v1 = splitAt(length(v))(str); + if (v1.before === v) { return Data$dMaybe.$Maybe("Just", v1.after); } + return Data$dMaybe.Nothing; +}; +const lastIndexOf$p = /* #__PURE__ */ _lastIndexOfStartingAt(Data$dMaybe.Just)(Data$dMaybe.Nothing); +const lastIndexOf = /* #__PURE__ */ _lastIndexOf(Data$dMaybe.Just)(Data$dMaybe.Nothing); +const indexOf$p = /* #__PURE__ */ _indexOfStartingAt(Data$dMaybe.Just)(Data$dMaybe.Nothing); +const indexOf = /* #__PURE__ */ _indexOf(Data$dMaybe.Just)(Data$dMaybe.Nothing); +const dropWhile = p => s => drop(countPrefix(p)(s))(s); +const dropRight = i => s => take(length(s) - i | 0)(s); +const contains = pat => { + const $1 = indexOf(pat); + return x => { + const $3 = $1(x); + if ($3.tag === "Nothing") { return false; } + if ($3.tag === "Just") { return true; } + $runtime.fail(); + }; +}; +const charAt = /* #__PURE__ */ _charAt(Data$dMaybe.Just)(Data$dMaybe.Nothing); +export {charAt, contains, dropRight, dropWhile, indexOf, indexOf$p, lastIndexOf, lastIndexOf$p, stripPrefix, stripSuffix, takeRight, takeWhile, toChar, uncons}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Data.String.Common/foreign.js b/.storybook/purescript-indexer/output-es/Data.String.Common/foreign.js new file mode 100644 index 0000000..5693585 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.String.Common/foreign.js @@ -0,0 +1,52 @@ +export const _localeCompare = function (lt) { + return function (eq) { + return function (gt) { + return function (s1) { + return function (s2) { + var result = s1.localeCompare(s2); + return result < 0 ? lt : result > 0 ? gt : eq; + }; + }; + }; + }; +}; + +export const replace = function (s1) { + return function (s2) { + return function (s3) { + return s3.replace(s1, s2); + }; + }; +}; + +export const replaceAll = function (s1) { + return function (s2) { + return function (s3) { + return s3.replace(new RegExp(s1.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&"), "g"), s2); // eslint-disable-line no-useless-escape + }; + }; +}; + +export const split = function (sep) { + return function (s) { + return s.split(sep); + }; +}; + +export const toLower = function (s) { + return s.toLowerCase(); +}; + +export const toUpper = function (s) { + return s.toUpperCase(); +}; + +export const trim = function (s) { + return s.trim(); +}; + +export const joinWith = function (s) { + return function (xs) { + return xs.join(s); + }; +}; diff --git a/.storybook/purescript-indexer/output-es/Data.String.Common/index.js b/.storybook/purescript-indexer/output-es/Data.String.Common/index.js new file mode 100644 index 0000000..1b9dbd5 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.String.Common/index.js @@ -0,0 +1,7 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dOrdering from "../Data.Ordering/index.js"; +import {_localeCompare, joinWith, replace, replaceAll, split, toLower, toUpper, trim} from "./foreign.js"; +const $$null = s => s === ""; +const localeCompare = /* #__PURE__ */ _localeCompare(Data$dOrdering.LT)(Data$dOrdering.EQ)(Data$dOrdering.GT); +export {localeCompare, $$null as null}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Data.String.Gen/index.js b/.storybook/purescript-indexer/output-es/Data.String.Gen/index.js new file mode 100644 index 0000000..d8d2ac3 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.String.Gen/index.js @@ -0,0 +1,27 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dGen from "../Control.Monad.Gen/index.js"; +import * as Data$dChar$dGen from "../Data.Char.Gen/index.js"; +import * as Data$dOrd from "../Data.Ord/index.js"; +import * as Data$dString$dCodeUnits from "../Data.String.CodeUnits/index.js"; +import * as Data$dUnfoldable from "../Data.Unfoldable/index.js"; +const max = x => y => { + const v = Data$dOrd.ordInt.compare(x)(y); + if (v.tag === "LT") { return y; } + if (v.tag === "EQ") { return x; } + if (v.tag === "GT") { return x; } + $runtime.fail(); +}; +const genString = dictMonadRec => dictMonadGen => { + const Bind1 = dictMonadGen.Monad0().Bind1(); + const map = Bind1.Apply0().Functor0().map; + const unfoldable1 = Control$dMonad$dGen.unfoldable(dictMonadRec)(dictMonadGen)(Data$dUnfoldable.unfoldableArray); + return genChar => dictMonadGen.sized(size => Bind1.bind(dictMonadGen.chooseInt(1)(max(1)(size)))(newSize => dictMonadGen.resize(v => newSize)(map(Data$dString$dCodeUnits.fromCharArray)(unfoldable1(genChar))))); +}; +const genUnicodeString = dictMonadRec => dictMonadGen => genString(dictMonadRec)(dictMonadGen)(Data$dChar$dGen.genUnicodeChar(dictMonadGen)); +const genDigitString = dictMonadRec => dictMonadGen => genString(dictMonadRec)(dictMonadGen)(Data$dChar$dGen.genDigitChar(dictMonadGen)); +const genAsciiString$p = dictMonadRec => dictMonadGen => genString(dictMonadRec)(dictMonadGen)(Data$dChar$dGen.genAsciiChar$p(dictMonadGen)); +const genAsciiString = dictMonadRec => dictMonadGen => genString(dictMonadRec)(dictMonadGen)(Data$dChar$dGen.genAsciiChar(dictMonadGen)); +const genAlphaUppercaseString = dictMonadRec => dictMonadGen => genString(dictMonadRec)(dictMonadGen)(Data$dChar$dGen.genAlphaUppercase(dictMonadGen)); +const genAlphaString = dictMonadRec => dictMonadGen => genString(dictMonadRec)(dictMonadGen)(Data$dChar$dGen.genAlpha(dictMonadGen)); +const genAlphaLowercaseString = dictMonadRec => dictMonadGen => genString(dictMonadRec)(dictMonadGen)(Data$dChar$dGen.genAlphaLowercase(dictMonadGen)); +export {genAlphaLowercaseString, genAlphaString, genAlphaUppercaseString, genAsciiString, genAsciiString$p, genDigitString, genString, genUnicodeString, max}; diff --git a/.storybook/purescript-indexer/output-es/Data.String.NonEmpty.CaseInsensitive/index.js b/.storybook/purescript-indexer/output-es/Data.String.NonEmpty.CaseInsensitive/index.js new file mode 100644 index 0000000..8e0cce5 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.String.NonEmpty.CaseInsensitive/index.js @@ -0,0 +1,13 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dOrd from "../Data.Ord/index.js"; +import * as Data$dShow from "../Data.Show/index.js"; +import * as Data$dString$dCommon from "../Data.String.Common/index.js"; +const CaseInsensitiveNonEmptyString = x => x; +const showCaseInsensitiveNonEmptyString = {show: v => "(CaseInsensitiveNonEmptyString (NonEmptyString.unsafeFromString " + Data$dShow.showStringImpl(v) + "))"}; +const newtypeCaseInsensitiveNonEmptyString = {Coercible0: () => undefined}; +const eqCaseInsensitiveNonEmptyString = {eq: v => v1 => Data$dString$dCommon.toLower(v) === Data$dString$dCommon.toLower(v1)}; +const ordCaseInsensitiveNonEmptyString = { + compare: v => v1 => Data$dOrd.ordString.compare(Data$dString$dCommon.toLower(v))(Data$dString$dCommon.toLower(v1)), + Eq0: () => eqCaseInsensitiveNonEmptyString +}; +export {CaseInsensitiveNonEmptyString, eqCaseInsensitiveNonEmptyString, newtypeCaseInsensitiveNonEmptyString, ordCaseInsensitiveNonEmptyString, showCaseInsensitiveNonEmptyString}; diff --git a/.storybook/purescript-indexer/output-es/Data.String.NonEmpty.CodePoints/index.js b/.storybook/purescript-indexer/output-es/Data.String.NonEmpty.CodePoints/index.js new file mode 100644 index 0000000..89ebbd5 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.String.NonEmpty.CodePoints/index.js @@ -0,0 +1,98 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dSemigroup from "../Data.Semigroup/index.js"; +import * as Data$dString$dCodePoints from "../Data.String.CodePoints/index.js"; +import * as Data$dString$dCodeUnits from "../Data.String.CodeUnits/index.js"; +const snoc = c => s => s + Data$dString$dCodePoints.singleton(c); +const singleton = x => Data$dString$dCodePoints.singleton(x); +const takeWhile = f => x => { + const $2 = Data$dString$dCodePoints.take(Data$dString$dCodePoints.countPrefix(f)(x))(x); + if ($2 === "") { return Data$dMaybe.Nothing; } + return Data$dMaybe.$Maybe("Just", $2); +}; +const lastIndexOf$p = pat => x => v => Data$dString$dCodePoints.lastIndexOf$p(pat)(x)(v); +const lastIndexOf = x => v => Data$dString$dCodePoints.lastIndexOf(x)(v); +const indexOf$p = pat => x => v => Data$dString$dCodePoints.indexOf$p(pat)(x)(v); +const indexOf = x => v => Data$dString$dCodePoints.indexOf(x)(v); +const length = x => Data$dString$dCodePoints.toCodePointArray(x).length; +const splitAt = i => nes => { + const v = Data$dString$dCodePoints.splitAt(i)(nes); + return { + before: (() => { + if (v.before === "") { return Data$dMaybe.Nothing; } + return Data$dMaybe.$Maybe("Just", v.before); + })(), + after: (() => { + if (v.after === "") { return Data$dMaybe.Nothing; } + return Data$dMaybe.$Maybe("Just", v.after); + })() + }; +}; +const take = i => nes => { + if (i < 1) { return Data$dMaybe.Nothing; } + return Data$dMaybe.$Maybe("Just", Data$dString$dCodePoints.take(i)(nes)); +}; +const toCodePointArray = x => Data$dString$dCodePoints.toCodePointArray(x); +const toNonEmptyCodePointArray = x => { + const $1 = Data$dString$dCodePoints.toCodePointArray(x); + if ($1.length > 0) { return $1; } + $runtime.fail(); +}; +const uncons = nes => ( + { + head: (() => { + const $1 = Data$dString$dCodePoints.codePointAt(0)(nes); + if ($1.tag === "Just") { return $1._1; } + $runtime.fail(); + })(), + tail: (() => { + const $1 = Data$dString$dCodeUnits.drop(Data$dString$dCodeUnits.length(Data$dString$dCodePoints.take(1)(nes)))(nes); + if ($1 === "") { return Data$dMaybe.Nothing; } + return Data$dMaybe.$Maybe("Just", $1); + })() + } +); +const fromFoldable1 = dictFoldable1 => dictFoldable1.foldMap1(Data$dSemigroup.semigroupString)(singleton); +const fromCodePointArray = v => { + if (v.length === 0) { return Data$dMaybe.Nothing; } + return Data$dMaybe.$Maybe("Just", Data$dString$dCodePoints.fromCodePointArray(v)); +}; +const fromNonEmptyCodePointArray = x => { + if (x.length === 0) { $runtime.fail(); } + return Data$dString$dCodePoints.fromCodePointArray(x); +}; +const dropWhile = f => x => { + const $2 = Data$dString$dCodePoints.dropWhile(f)(x); + if ($2 === "") { return Data$dMaybe.Nothing; } + return Data$dMaybe.$Maybe("Just", $2); +}; +const drop = i => nes => { + if (i >= Data$dString$dCodePoints.toCodePointArray(nes).length) { return Data$dMaybe.Nothing; } + return Data$dMaybe.$Maybe("Just", Data$dString$dCodeUnits.drop(Data$dString$dCodeUnits.length(Data$dString$dCodePoints.take(i)(nes)))(nes)); +}; +const countPrefix = x => Data$dString$dCodePoints.countPrefix(x); +const cons = c => s => Data$dString$dCodePoints.singleton(c) + s; +const codePointAt = x => v => Data$dString$dCodePoints.codePointAt(x)(v); +export { + codePointAt, + cons, + countPrefix, + drop, + dropWhile, + fromCodePointArray, + fromFoldable1, + fromNonEmptyCodePointArray, + indexOf, + indexOf$p, + lastIndexOf, + lastIndexOf$p, + length, + singleton, + snoc, + splitAt, + take, + takeWhile, + toCodePointArray, + toNonEmptyCodePointArray, + uncons +}; diff --git a/.storybook/purescript-indexer/output-es/Data.String.NonEmpty.CodeUnits/index.js b/.storybook/purescript-indexer/output-es/Data.String.NonEmpty.CodeUnits/index.js new file mode 100644 index 0000000..da5e0c1 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.String.NonEmpty.CodeUnits/index.js @@ -0,0 +1,107 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dSemigroup from "../Data.Semigroup/index.js"; +import * as Data$dSemigroup$dFoldable from "../Data.Semigroup.Foldable/index.js"; +import * as Data$dString$dCodeUnits from "../Data.String.CodeUnits/index.js"; +import * as Data$dString$dUnsafe from "../Data.String.Unsafe/index.js"; +const snoc = c => s => s + Data$dString$dCodeUnits.singleton(c); +const singleton = x => Data$dString$dCodeUnits.singleton(x); +const takeWhile = f => x => { + const $2 = Data$dString$dCodeUnits.take(Data$dString$dCodeUnits.countPrefix(f)(x))(x); + if ($2 === "") { return Data$dMaybe.Nothing; } + return Data$dMaybe.$Maybe("Just", $2); +}; +const lastIndexOf$p = pat => Data$dString$dCodeUnits.lastIndexOf$p(pat); +const lastIndexOf = x => Data$dString$dCodeUnits.lastIndexOf(x); +const indexOf$p = pat => Data$dString$dCodeUnits.indexOf$p(pat); +const indexOf = x => Data$dString$dCodeUnits.indexOf(x); +const length = x => Data$dString$dCodeUnits.length(x); +const splitAt = i => nes => { + const v = Data$dString$dCodeUnits.splitAt(i)(nes); + return { + before: (() => { + if (v.before === "") { return Data$dMaybe.Nothing; } + return Data$dMaybe.$Maybe("Just", v.before); + })(), + after: (() => { + if (v.after === "") { return Data$dMaybe.Nothing; } + return Data$dMaybe.$Maybe("Just", v.after); + })() + }; +}; +const take = i => nes => { + if (i < 1) { return Data$dMaybe.Nothing; } + return Data$dMaybe.$Maybe("Just", Data$dString$dCodeUnits.take(i)(nes)); +}; +const takeRight = i => nes => { + if (i < 1) { return Data$dMaybe.Nothing; } + return Data$dMaybe.$Maybe("Just", Data$dString$dCodeUnits.drop(Data$dString$dCodeUnits.length(nes) - i | 0)(nes)); +}; +const toChar = x => Data$dString$dCodeUnits.toChar(x); +const toCharArray = x => Data$dString$dCodeUnits.toCharArray(x); +const toNonEmptyCharArray = x => { + const $1 = Data$dString$dCodeUnits.toCharArray(x); + if ($1.length > 0) { return $1; } + $runtime.fail(); +}; +const uncons = nes => ( + { + head: Data$dString$dUnsafe.charAt(0)(nes), + tail: (() => { + const $1 = Data$dString$dCodeUnits.drop(1)(nes); + if ($1 === "") { return Data$dMaybe.Nothing; } + return Data$dMaybe.$Maybe("Just", $1); + })() + } +); +const fromFoldable1 = dictFoldable1 => dictFoldable1.foldMap1(Data$dSemigroup.semigroupString)(Data$dSemigroup$dFoldable.identity); +const fromCharArray = v => { + if (v.length === 0) { return Data$dMaybe.Nothing; } + return Data$dMaybe.$Maybe("Just", Data$dString$dCodeUnits.fromCharArray(v)); +}; +const fromNonEmptyCharArray = x => { + if (x.length === 0) { $runtime.fail(); } + return Data$dString$dCodeUnits.fromCharArray(x); +}; +const dropWhile = f => x => { + const $2 = Data$dString$dCodeUnits.drop(Data$dString$dCodeUnits.countPrefix(f)(x))(x); + if ($2 === "") { return Data$dMaybe.Nothing; } + return Data$dMaybe.$Maybe("Just", $2); +}; +const dropRight = i => nes => { + if (i >= Data$dString$dCodeUnits.length(nes)) { return Data$dMaybe.Nothing; } + return Data$dMaybe.$Maybe("Just", Data$dString$dCodeUnits.take(Data$dString$dCodeUnits.length(nes) - i | 0)(nes)); +}; +const drop = i => nes => { + if (i >= Data$dString$dCodeUnits.length(nes)) { return Data$dMaybe.Nothing; } + return Data$dMaybe.$Maybe("Just", Data$dString$dCodeUnits.drop(i)(nes)); +}; +const countPrefix = x => Data$dString$dCodeUnits.countPrefix(x); +const cons = c => s => Data$dString$dCodeUnits.singleton(c) + s; +const charAt = x => Data$dString$dCodeUnits.charAt(x); +export { + charAt, + cons, + countPrefix, + drop, + dropRight, + dropWhile, + fromCharArray, + fromFoldable1, + fromNonEmptyCharArray, + indexOf, + indexOf$p, + lastIndexOf, + lastIndexOf$p, + length, + singleton, + snoc, + splitAt, + take, + takeRight, + takeWhile, + toChar, + toCharArray, + toNonEmptyCharArray, + uncons +}; diff --git a/.storybook/purescript-indexer/output-es/Data.String.NonEmpty.Internal/index.js b/.storybook/purescript-indexer/output-es/Data.String.NonEmpty.Internal/index.js new file mode 100644 index 0000000..398dc14 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.String.NonEmpty.Internal/index.js @@ -0,0 +1,119 @@ +// | While most of the code in this module is safe, this module does +// | export a few partial functions and the `NonEmptyString` constructor. +// | While the partial functions are obvious from the `Partial` constraint in +// | their type signature, the `NonEmptyString` constructor can be overlooked +// | when searching for issues in one's code. See the constructor's +// | documentation for more information. +import * as $runtime from "../runtime.js"; +import * as Data$dEq from "../Data.Eq/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dOrd from "../Data.Ord/index.js"; +import * as Data$dSemigroup from "../Data.Semigroup/index.js"; +import * as Data$dShow from "../Data.Show/index.js"; +import * as Data$dString$dCodeUnits from "../Data.String.CodeUnits/index.js"; +import * as Data$dString$dCommon from "../Data.String.Common/index.js"; +const NonEmptyString = x => x; +const NonEmptyReplacement = x => x; +const toUpper = v => Data$dString$dCommon.toUpper(v); +const toString = v => v; +const toLower = v => Data$dString$dCommon.toLower(v); +const showNonEmptyString = {show: v => "(NonEmptyString.unsafeFromString " + (Data$dShow.showStringImpl(v) + ")")}; +const showNonEmptyReplacement = {show: v => "(NonEmptyReplacement (NonEmptyString.unsafeFromString " + Data$dShow.showStringImpl(v) + "))"}; +const semigroupNonEmptyString = Data$dSemigroup.semigroupString; +const semigroupNonEmptyReplacement = Data$dSemigroup.semigroupString; +const replaceAll = pat => v => v1 => Data$dString$dCommon.replaceAll(pat)(v)(v1); +const replace = pat => v => v1 => Data$dString$dCommon.replace(pat)(v)(v1); +const prependString = s1 => v => s1 + v; +const ordNonEmptyString = Data$dOrd.ordString; +const ordNonEmptyReplacement = Data$dOrd.ordString; +const nonEmptyNonEmpty = dictIsSymbol => ({nes: p => dictIsSymbol.reflectSymbol(p)}); +const nes = dict => dict.nes; +const makeNonEmptyBad = () => ({nes: v => ""}); +const localeCompare = v => v1 => Data$dString$dCommon.localeCompare(v)(v1); +const liftS = f => v => f(v); +const joinWith1 = dictFoldable1 => { + const $1 = dictFoldable1.Foldable0(); + return sep => xs => $1.foldl(v => v1 => { + if (v.init) { return {init: false, acc: v1}; } + return {init: false, acc: v.acc + (sep + v1)}; + })({init: true, acc: ""})(xs).acc; +}; +const joinWith = dictFoldable => splice => xs => dictFoldable.foldl(v => v1 => { + if (v.init) { return {init: false, acc: v1}; } + return {init: false, acc: v.acc + (splice + v1)}; +})({init: true, acc: ""})(xs).acc; +const join1With = dictFoldable1 => { + const $1 = dictFoldable1.Foldable0(); + return splice => xs => $1.foldl(v => v1 => { + if (v.init) { return {init: false, acc: v1}; } + return {init: false, acc: v.acc + (splice + v1)}; + })({init: true, acc: ""})(xs).acc; +}; +const fromString = v => { + if (v === "") { return Data$dMaybe.Nothing; } + return Data$dMaybe.$Maybe("Just", v); +}; +const stripPrefix = pat => a => { + const $2 = Data$dString$dCodeUnits.stripPrefix(pat)(a); + if ($2.tag === "Just") { + if ($2._1 === "") { return Data$dMaybe.Nothing; } + return Data$dMaybe.$Maybe("Just", $2._1); + } + if ($2.tag === "Nothing") { return Data$dMaybe.Nothing; } + $runtime.fail(); +}; +const stripSuffix = pat => a => { + const $2 = Data$dString$dCodeUnits.stripSuffix(pat)(a); + if ($2.tag === "Just") { + if ($2._1 === "") { return Data$dMaybe.Nothing; } + return Data$dMaybe.$Maybe("Just", $2._1); + } + if ($2.tag === "Nothing") { return Data$dMaybe.Nothing; } + $runtime.fail(); +}; +const trim = v => { + const $1 = Data$dString$dCommon.trim(v); + if ($1 === "") { return Data$dMaybe.Nothing; } + return Data$dMaybe.$Maybe("Just", $1); +}; +const unsafeFromString = () => x => { + if (x === "") { $runtime.fail(); } + return x; +}; +const eqNonEmptyString = Data$dEq.eqString; +const eqNonEmptyReplacement = Data$dEq.eqString; +const contains = x => Data$dString$dCodeUnits.contains(x); +const appendString = v => s2 => v + s2; +export { + NonEmptyReplacement, + NonEmptyString, + appendString, + contains, + eqNonEmptyReplacement, + eqNonEmptyString, + fromString, + join1With, + joinWith, + joinWith1, + liftS, + localeCompare, + makeNonEmptyBad, + nes, + nonEmptyNonEmpty, + ordNonEmptyReplacement, + ordNonEmptyString, + prependString, + replace, + replaceAll, + semigroupNonEmptyReplacement, + semigroupNonEmptyString, + showNonEmptyReplacement, + showNonEmptyString, + stripPrefix, + stripSuffix, + toLower, + toString, + toUpper, + trim, + unsafeFromString +}; diff --git a/.storybook/purescript-indexer/output-es/Data.String.NonEmpty/index.js b/.storybook/purescript-indexer/output-es/Data.String.NonEmpty/index.js new file mode 100644 index 0000000..2d3a7c9 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.String.NonEmpty/index.js @@ -0,0 +1,2 @@ +import * as $runtime from "../runtime.js"; +export {}; diff --git a/.storybook/purescript-indexer/output-es/Data.String.Pattern/index.js b/.storybook/purescript-indexer/output-es/Data.String.Pattern/index.js new file mode 100644 index 0000000..31496b6 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.String.Pattern/index.js @@ -0,0 +1,14 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dOrd from "../Data.Ord/index.js"; +import * as Data$dShow from "../Data.Show/index.js"; +const Replacement = x => x; +const Pattern = x => x; +const showReplacement = {show: v => "(Replacement " + (Data$dShow.showStringImpl(v) + ")")}; +const showPattern = {show: v => "(Pattern " + (Data$dShow.showStringImpl(v) + ")")}; +const newtypeReplacement = {Coercible0: () => undefined}; +const newtypePattern = {Coercible0: () => undefined}; +const eqReplacement = {eq: x => y => x === y}; +const ordReplacement = {compare: x => y => Data$dOrd.ordString.compare(x)(y), Eq0: () => eqReplacement}; +const eqPattern = {eq: x => y => x === y}; +const ordPattern = {compare: x => y => Data$dOrd.ordString.compare(x)(y), Eq0: () => eqPattern}; +export {Pattern, Replacement, eqPattern, eqReplacement, newtypePattern, newtypeReplacement, ordPattern, ordReplacement, showPattern, showReplacement}; diff --git a/.storybook/purescript-indexer/output-es/Data.String.Regex.Flags/index.js b/.storybook/purescript-indexer/output-es/Data.String.Regex.Flags/index.js new file mode 100644 index 0000000..392b68b --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.String.Regex.Flags/index.js @@ -0,0 +1,59 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dAlternative from "../Control.Alternative/index.js"; +import * as Data$dEq from "../Data.Eq/index.js"; +import * as Data$dFunctor from "../Data.Functor/index.js"; +import * as Data$dSemigroup from "../Data.Semigroup/index.js"; +import * as Data$dString$dCommon from "../Data.String.Common/index.js"; +const guard = /* #__PURE__ */ Control$dAlternative.guard(Control$dAlternative.alternativeArray); +const eq = /* #__PURE__ */ Data$dEq.eqArrayImpl(Data$dEq.eqStringImpl); +const RegexFlags = x => x; +const unicode = {global: false, ignoreCase: false, multiline: false, dotAll: false, sticky: false, unicode: true}; +const sticky = {global: false, ignoreCase: false, multiline: false, dotAll: false, sticky: true, unicode: false}; +const showRegexFlags = { + show: v => { + const usedFlags = Data$dSemigroup.concatArray([])(Data$dSemigroup.concatArray(Data$dFunctor.arrayMap(v$1 => "global")(guard(v.global)))(Data$dSemigroup.concatArray(Data$dFunctor.arrayMap(v$1 => "ignoreCase")(guard(v.ignoreCase)))(Data$dSemigroup.concatArray(Data$dFunctor.arrayMap(v$1 => "multiline")(guard(v.multiline)))(Data$dSemigroup.concatArray(Data$dFunctor.arrayMap(v$1 => "dotAll")(guard(v.dotAll)))(Data$dSemigroup.concatArray(Data$dFunctor.arrayMap(v$1 => "sticky")(guard(v.sticky)))(Data$dFunctor.arrayMap(v$1 => "unicode")(guard(v.unicode)))))))); + if (eq(usedFlags)([])) { return "noFlags"; } + return "(" + (Data$dString$dCommon.joinWith(" <> ")(usedFlags) + ")"); + } +}; +const semigroupRegexFlags = { + append: v => v1 => ( + { + global: v.global || v1.global, + ignoreCase: v.ignoreCase || v1.ignoreCase, + multiline: v.multiline || v1.multiline, + dotAll: v.dotAll || v1.dotAll, + sticky: v.sticky || v1.sticky, + unicode: v.unicode || v1.unicode + } + ) +}; +const noFlags = {global: false, ignoreCase: false, multiline: false, dotAll: false, sticky: false, unicode: false}; +const newtypeRegexFlags = {Coercible0: () => undefined}; +const multiline = {global: false, ignoreCase: false, multiline: true, dotAll: false, sticky: false, unicode: false}; +const monoidRegexFlags = {mempty: noFlags, Semigroup0: () => semigroupRegexFlags}; +const ignoreCase = {global: false, ignoreCase: true, multiline: false, dotAll: false, sticky: false, unicode: false}; +const global = {global: true, ignoreCase: false, multiline: false, dotAll: false, sticky: false, unicode: false}; +const eqRegexFlags = { + eq: ra => rb => ra.dotAll === rb.dotAll && ( + ra.global === rb.global && (ra.ignoreCase === rb.ignoreCase && (ra.multiline === rb.multiline && (ra.sticky === rb.sticky && ra.unicode === rb.unicode))) + ) +}; +const dotAll = {global: false, ignoreCase: false, multiline: false, dotAll: true, sticky: false, unicode: false}; +export { + RegexFlags, + dotAll, + eq, + eqRegexFlags, + global, + guard, + ignoreCase, + monoidRegexFlags, + multiline, + newtypeRegexFlags, + noFlags, + semigroupRegexFlags, + showRegexFlags, + sticky, + unicode +}; diff --git a/.storybook/purescript-indexer/output-es/Data.String.Regex.Unsafe/index.js b/.storybook/purescript-indexer/output-es/Data.String.Regex.Unsafe/index.js new file mode 100644 index 0000000..88cecbb --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.String.Regex.Unsafe/index.js @@ -0,0 +1,10 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dString$dRegex from "../Data.String.Regex/index.js"; +import * as Partial from "../Partial/index.js"; +const unsafeRegex = s => f => { + const $2 = Data$dString$dRegex.regex(s)(f); + if ($2.tag === "Left") { return Partial._crashWith($2._1); } + if ($2.tag === "Right") { return $2._1; } + $runtime.fail(); +}; +export {unsafeRegex}; diff --git a/.storybook/purescript-indexer/output-es/Data.String.Regex/foreign.js b/.storybook/purescript-indexer/output-es/Data.String.Regex/foreign.js new file mode 100644 index 0000000..3196034 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.String.Regex/foreign.js @@ -0,0 +1,103 @@ +export const showRegexImpl = function (r) { + return "" + r; +}; + +export const regexImpl = function (left) { + return function (right) { + return function (s1) { + return function (s2) { + try { + return right(new RegExp(s1, s2)); + } catch (e) { + return left(e.message); + } + }; + }; + }; +}; + +export const source = function (r) { + return r.source; +}; + +export const flagsImpl = function (r) { + return { + multiline: r.multiline, + ignoreCase: r.ignoreCase, + global: r.global, + dotAll: r.dotAll, + sticky: !!r.sticky, + unicode: !!r.unicode + }; +}; + +export const test = function (r) { + return function (s) { + var lastIndex = r.lastIndex; + var result = r.test(s); + r.lastIndex = lastIndex; + return result; + }; +}; + +export const _match = function (just) { + return function (nothing) { + return function (r) { + return function (s) { + var m = s.match(r); + if (m == null || m.length === 0) { + return nothing; + } else { + for (var i = 0; i < m.length; i++) { + m[i] = m[i] == null ? nothing : just(m[i]); + } + return just(m); + } + }; + }; + }; +}; + +export const replace = function (r) { + return function (s1) { + return function (s2) { + return s2.replace(r, s1); + }; + }; +}; + +export const _replaceBy = function (just) { + return function (nothing) { + return function (r) { + return function (f) { + return function (s) { + return s.replace(r, function (match) { + var groups = []; + var group, i = 1; + while (typeof (group = arguments[i++]) !== "number") { + groups.push(group == null ? nothing : just(group)); + } + return f(match)(groups); + }); + }; + }; + }; + }; +}; + +export const _search = function (just) { + return function (nothing) { + return function (r) { + return function (s) { + var result = s.search(r); + return result === -1 ? nothing : just(result); + }; + }; + }; +}; + +export const split = function (r) { + return function (s) { + return s.split(r); + }; +}; diff --git a/.storybook/purescript-indexer/output-es/Data.String.Regex/index.js b/.storybook/purescript-indexer/output-es/Data.String.Regex/index.js new file mode 100644 index 0000000..e8dce42 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.String.Regex/index.js @@ -0,0 +1,79 @@ +// | Wraps Javascript's `RegExp` object that enables matching strings with +// | patterns defined by regular expressions. +// | For details of the underlying implementation, see [RegExp Reference at MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp). +import * as $runtime from "../runtime.js"; +import * as Data$dEither from "../Data.Either/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dString$dCodeUnits from "../Data.String.CodeUnits/index.js"; +import {_match, _replaceBy, _search, flagsImpl, regexImpl, replace, showRegexImpl, source, split, test} from "./foreign.js"; +const showRegex = {show: showRegexImpl}; +const search = /* #__PURE__ */ _search(Data$dMaybe.Just)(Data$dMaybe.Nothing); +const replace$p = /* #__PURE__ */ _replaceBy(Data$dMaybe.Just)(Data$dMaybe.Nothing); +const renderFlags = v => (() => { + if (v.global) { return "g"; } + return ""; +})() + ( + (() => { + if (v.ignoreCase) { return "i"; } + return ""; + })() + ( + (() => { + if (v.multiline) { return "m"; } + return ""; + })() + ( + (() => { + if (v.dotAll) { return "s"; } + return ""; + })() + ( + (() => { + if (v.sticky) { return "y"; } + return ""; + })() + (() => { + if (v.unicode) { return "u"; } + return ""; + })() + ) + ) + ) +); +const regex = s => f => regexImpl(Data$dEither.Left)(Data$dEither.Right)(s)((() => { + if (f.global) { return "g"; } + return ""; +})() + ( + (() => { + if (f.ignoreCase) { return "i"; } + return ""; + })() + ( + (() => { + if (f.multiline) { return "m"; } + return ""; + })() + ( + (() => { + if (f.dotAll) { return "s"; } + return ""; + })() + ( + (() => { + if (f.sticky) { return "y"; } + return ""; + })() + (() => { + if (f.unicode) { return "u"; } + return ""; + })() + ) + ) + ) +)); +const parseFlags = s => ( + { + global: Data$dString$dCodeUnits.contains("g")(s), + ignoreCase: Data$dString$dCodeUnits.contains("i")(s), + multiline: Data$dString$dCodeUnits.contains("m")(s), + dotAll: Data$dString$dCodeUnits.contains("s")(s), + sticky: Data$dString$dCodeUnits.contains("y")(s), + unicode: Data$dString$dCodeUnits.contains("u")(s) + } +); +const match = /* #__PURE__ */ _match(Data$dMaybe.Just)(Data$dMaybe.Nothing); +const flags = x => flagsImpl(x); +export {flags, match, parseFlags, regex, renderFlags, replace$p, search, showRegex}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Data.String.Unsafe/foreign.js b/.storybook/purescript-indexer/output-es/Data.String.Unsafe/foreign.js new file mode 100644 index 0000000..75772aa --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.String.Unsafe/foreign.js @@ -0,0 +1,11 @@ +export const 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."); + }; +}; + +export const char = function (s) { + if (s.length === 1) return s.charAt(0); + throw new Error("Data.String.Unsafe.char: Expected string of length 1."); +}; diff --git a/.storybook/purescript-indexer/output-es/Data.String.Unsafe/index.js b/.storybook/purescript-indexer/output-es/Data.String.Unsafe/index.js new file mode 100644 index 0000000..ed89295 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.String.Unsafe/index.js @@ -0,0 +1,5 @@ +// | Unsafe string and character functions. +import * as $runtime from "../runtime.js"; +import {char as $$char, charAt} from "./foreign.js"; +export {}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Data.String/index.js b/.storybook/purescript-indexer/output-es/Data.String/index.js new file mode 100644 index 0000000..2d3a7c9 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.String/index.js @@ -0,0 +1,2 @@ +import * as $runtime from "../runtime.js"; +export {}; diff --git a/.storybook/purescript-indexer/output-es/Data.Symbol/foreign.js b/.storybook/purescript-indexer/output-es/Data.Symbol/foreign.js new file mode 100644 index 0000000..b294140 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Symbol/foreign.js @@ -0,0 +1,6 @@ +// module Data.Symbol + +export const unsafeCoerce = function (arg) { + return arg; +}; + diff --git a/.storybook/purescript-indexer/output-es/Data.Symbol/index.js b/.storybook/purescript-indexer/output-es/Data.Symbol/index.js new file mode 100644 index 0000000..7467b9f --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Symbol/index.js @@ -0,0 +1,7 @@ +import * as $runtime from "../runtime.js"; +import * as Type$dProxy from "../Type.Proxy/index.js"; +import {unsafeCoerce} from "./foreign.js"; +const reifySymbol = s => f => unsafeCoerce(dictIsSymbol => f(dictIsSymbol))({reflectSymbol: v => s})(Type$dProxy.Proxy); +const reflectSymbol = dict => dict.reflectSymbol; +export {reflectSymbol, reifySymbol}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Data.Time.Component.Gen/index.js b/.storybook/purescript-indexer/output-es/Data.Time.Component.Gen/index.js new file mode 100644 index 0000000..0c17ce2 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Time.Component.Gen/index.js @@ -0,0 +1,8 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dEnum$dGen from "../Data.Enum.Gen/index.js"; +import * as Data$dTime$dComponent from "../Data.Time.Component/index.js"; +const genSecond = dictMonadGen => Data$dEnum$dGen.genBoundedEnum(dictMonadGen)(Data$dTime$dComponent.boundedEnumSecond); +const genMinute = dictMonadGen => Data$dEnum$dGen.genBoundedEnum(dictMonadGen)(Data$dTime$dComponent.boundedEnumMinute); +const genMillisecond = dictMonadGen => Data$dEnum$dGen.genBoundedEnum(dictMonadGen)(Data$dTime$dComponent.boundedEnumMillisecond); +const genHour = dictMonadGen => Data$dEnum$dGen.genBoundedEnum(dictMonadGen)(Data$dTime$dComponent.boundedEnumHour); +export {genHour, genMillisecond, genMinute, genSecond}; diff --git a/.storybook/purescript-indexer/output-es/Data.Time.Component/index.js b/.storybook/purescript-indexer/output-es/Data.Time.Component/index.js new file mode 100644 index 0000000..b12c8d1 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Time.Component/index.js @@ -0,0 +1,139 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dEq from "../Data.Eq/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dOrd from "../Data.Ord/index.js"; +import * as Data$dShow from "../Data.Show/index.js"; +const showSecond = {show: v => "(Second " + (Data$dShow.showIntImpl(v) + ")")}; +const showMinute = {show: v => "(Minute " + (Data$dShow.showIntImpl(v) + ")")}; +const showMillisecond = {show: v => "(Millisecond " + (Data$dShow.showIntImpl(v) + ")")}; +const showHour = {show: v => "(Hour " + (Data$dShow.showIntImpl(v) + ")")}; +const ordSecond = Data$dOrd.ordInt; +const ordMinute = Data$dOrd.ordInt; +const ordMillisecond = Data$dOrd.ordInt; +const ordHour = Data$dOrd.ordInt; +const eqSecond = Data$dEq.eqInt; +const eqMinute = Data$dEq.eqInt; +const eqMillisecond = Data$dEq.eqInt; +const eqHour = Data$dEq.eqInt; +const boundedSecond = {bottom: 0, top: 59, Ord0: () => Data$dOrd.ordInt}; +const boundedMinute = {bottom: 0, top: 59, Ord0: () => Data$dOrd.ordInt}; +const boundedMillisecond = {bottom: 0, top: 999, Ord0: () => Data$dOrd.ordInt}; +const boundedHour = {bottom: 0, top: 23, Ord0: () => Data$dOrd.ordInt}; +const boundedEnumSecond = { + cardinality: 60, + toEnum: n => { + if (n >= 0 && n <= 59) { return Data$dMaybe.$Maybe("Just", n); } + return Data$dMaybe.Nothing; + }, + fromEnum: v => v, + Bounded0: () => boundedSecond, + Enum1: () => enumSecond +}; +const enumSecond = { + succ: x => { + const $1 = x + 1 | 0; + if ($1 >= 0 && $1 <= 59) { return Data$dMaybe.$Maybe("Just", $1); } + return Data$dMaybe.Nothing; + }, + pred: x => { + const $1 = x - 1 | 0; + if ($1 >= 0 && $1 <= 59) { return Data$dMaybe.$Maybe("Just", $1); } + return Data$dMaybe.Nothing; + }, + Ord0: () => Data$dOrd.ordInt +}; +const boundedEnumMinute = { + cardinality: 60, + toEnum: n => { + if (n >= 0 && n <= 59) { return Data$dMaybe.$Maybe("Just", n); } + return Data$dMaybe.Nothing; + }, + fromEnum: v => v, + Bounded0: () => boundedMinute, + Enum1: () => enumMinute +}; +const enumMinute = { + succ: x => { + const $1 = x + 1 | 0; + if ($1 >= 0 && $1 <= 59) { return Data$dMaybe.$Maybe("Just", $1); } + return Data$dMaybe.Nothing; + }, + pred: x => { + const $1 = x - 1 | 0; + if ($1 >= 0 && $1 <= 59) { return Data$dMaybe.$Maybe("Just", $1); } + return Data$dMaybe.Nothing; + }, + Ord0: () => Data$dOrd.ordInt +}; +const boundedEnumMillisecond = { + cardinality: 1000, + toEnum: n => { + if (n >= 0 && n <= 999) { return Data$dMaybe.$Maybe("Just", n); } + return Data$dMaybe.Nothing; + }, + fromEnum: v => v, + Bounded0: () => boundedMillisecond, + Enum1: () => enumMillisecond +}; +const enumMillisecond = { + succ: x => { + const $1 = x + 1 | 0; + if ($1 >= 0 && $1 <= 999) { return Data$dMaybe.$Maybe("Just", $1); } + return Data$dMaybe.Nothing; + }, + pred: x => { + const $1 = x - 1 | 0; + if ($1 >= 0 && $1 <= 999) { return Data$dMaybe.$Maybe("Just", $1); } + return Data$dMaybe.Nothing; + }, + Ord0: () => Data$dOrd.ordInt +}; +const boundedEnumHour = { + cardinality: 24, + toEnum: n => { + if (n >= 0 && n <= 23) { return Data$dMaybe.$Maybe("Just", n); } + return Data$dMaybe.Nothing; + }, + fromEnum: v => v, + Bounded0: () => boundedHour, + Enum1: () => enumHour +}; +const enumHour = { + succ: x => { + const $1 = x + 1 | 0; + if ($1 >= 0 && $1 <= 23) { return Data$dMaybe.$Maybe("Just", $1); } + return Data$dMaybe.Nothing; + }, + pred: x => { + const $1 = x - 1 | 0; + if ($1 >= 0 && $1 <= 23) { return Data$dMaybe.$Maybe("Just", $1); } + return Data$dMaybe.Nothing; + }, + Ord0: () => Data$dOrd.ordInt +}; +export { + boundedEnumHour, + boundedEnumMillisecond, + boundedEnumMinute, + boundedEnumSecond, + boundedHour, + boundedMillisecond, + boundedMinute, + boundedSecond, + enumHour, + enumMillisecond, + enumMinute, + enumSecond, + eqHour, + eqMillisecond, + eqMinute, + eqSecond, + ordHour, + ordMillisecond, + ordMinute, + ordSecond, + showHour, + showMillisecond, + showMinute, + showSecond +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Time.Duration.Gen/index.js b/.storybook/purescript-indexer/output-es/Data.Time.Duration.Gen/index.js new file mode 100644 index 0000000..1467e60 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Time.Duration.Gen/index.js @@ -0,0 +1,8 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dTime$dDuration from "../Data.Time.Duration/index.js"; +const genSeconds = dictMonadGen => dictMonadGen.Monad0().Bind1().Apply0().Functor0().map(Data$dTime$dDuration.Seconds)(dictMonadGen.chooseFloat(0.0)(600.0)); +const genMinutes = dictMonadGen => dictMonadGen.Monad0().Bind1().Apply0().Functor0().map(Data$dTime$dDuration.Minutes)(dictMonadGen.chooseFloat(0.0)(600.0)); +const genMilliseconds = dictMonadGen => dictMonadGen.Monad0().Bind1().Apply0().Functor0().map(Data$dTime$dDuration.Milliseconds)(dictMonadGen.chooseFloat(0.0)(600000.0)); +const genHours = dictMonadGen => dictMonadGen.Monad0().Bind1().Apply0().Functor0().map(Data$dTime$dDuration.Hours)(dictMonadGen.chooseFloat(0.0)(240.0)); +const genDays = dictMonadGen => dictMonadGen.Monad0().Bind1().Apply0().Functor0().map(Data$dTime$dDuration.Days)(dictMonadGen.chooseFloat(0.0)(42.0)); +export {genDays, genHours, genMilliseconds, genMinutes, genSeconds}; diff --git a/.storybook/purescript-indexer/output-es/Data.Time.Duration/index.js b/.storybook/purescript-indexer/output-es/Data.Time.Duration/index.js new file mode 100644 index 0000000..a7e44dc --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Time.Duration/index.js @@ -0,0 +1,96 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dEq from "../Data.Eq/index.js"; +import * as Data$dOrd from "../Data.Ord/index.js"; +import * as Data$dShow from "../Data.Show/index.js"; +const identity = x => x; +const Seconds = x => x; +const Minutes = x => x; +const Milliseconds = x => x; +const Hours = x => x; +const Days = x => x; +const toDuration = dict => dict.toDuration; +const showSeconds = {show: v => "(Seconds " + (Data$dShow.showNumberImpl(v) + ")")}; +const showMinutes = {show: v => "(Minutes " + (Data$dShow.showNumberImpl(v) + ")")}; +const showMilliseconds = {show: v => "(Milliseconds " + (Data$dShow.showNumberImpl(v) + ")")}; +const showHours = {show: v => "(Hours " + (Data$dShow.showNumberImpl(v) + ")")}; +const showDays = {show: v => "(Days " + (Data$dShow.showNumberImpl(v) + ")")}; +const semigroupSeconds = {append: v => v1 => v + v1}; +const semigroupMinutes = {append: v => v1 => v + v1}; +const semigroupMilliseconds = {append: v => v1 => v + v1}; +const semigroupHours = {append: v => v1 => v + v1}; +const semigroupDays = {append: v => v1 => v + v1}; +const ordSeconds = Data$dOrd.ordNumber; +const ordMinutes = Data$dOrd.ordNumber; +const ordMilliseconds = Data$dOrd.ordNumber; +const ordHours = Data$dOrd.ordNumber; +const ordDays = Data$dOrd.ordNumber; +const newtypeSeconds = {Coercible0: () => undefined}; +const newtypeMinutes = {Coercible0: () => undefined}; +const newtypeMilliseconds = {Coercible0: () => undefined}; +const newtypeHours = {Coercible0: () => undefined}; +const newtypeDays = {Coercible0: () => undefined}; +const monoidSeconds = {mempty: 0.0, Semigroup0: () => semigroupSeconds}; +const monoidMinutes = {mempty: 0.0, Semigroup0: () => semigroupMinutes}; +const monoidMilliseconds = {mempty: 0.0, Semigroup0: () => semigroupMilliseconds}; +const monoidHours = {mempty: 0.0, Semigroup0: () => semigroupHours}; +const monoidDays = {mempty: 0.0, Semigroup0: () => semigroupDays}; +const fromDuration = dict => dict.fromDuration; +const negateDuration = dictDuration => x => dictDuration.toDuration(-dictDuration.fromDuration(x)); +const eqSeconds = Data$dEq.eqNumber; +const eqMinutes = Data$dEq.eqNumber; +const eqMilliseconds = Data$dEq.eqNumber; +const eqHours = Data$dEq.eqNumber; +const eqDays = Data$dEq.eqNumber; +const durationSeconds = {fromDuration: v => v * 1000.0, toDuration: v => v / 1000.0}; +const durationMinutes = {fromDuration: v => v * 60000.0, toDuration: v => v / 60000.0}; +const durationMilliseconds = {fromDuration: identity, toDuration: identity}; +const durationHours = {fromDuration: v => v * 3600000.0, toDuration: v => v / 3600000.0}; +const durationDays = {fromDuration: v => v * 86400000.0, toDuration: v => v / 86400000.0}; +const convertDuration = dictDuration => dictDuration1 => x => dictDuration1.toDuration(dictDuration.fromDuration(x)); +export { + Days, + Hours, + Milliseconds, + Minutes, + Seconds, + convertDuration, + durationDays, + durationHours, + durationMilliseconds, + durationMinutes, + durationSeconds, + eqDays, + eqHours, + eqMilliseconds, + eqMinutes, + eqSeconds, + fromDuration, + identity, + monoidDays, + monoidHours, + monoidMilliseconds, + monoidMinutes, + monoidSeconds, + negateDuration, + newtypeDays, + newtypeHours, + newtypeMilliseconds, + newtypeMinutes, + newtypeSeconds, + ordDays, + ordHours, + ordMilliseconds, + ordMinutes, + ordSeconds, + semigroupDays, + semigroupHours, + semigroupMilliseconds, + semigroupMinutes, + semigroupSeconds, + showDays, + showHours, + showMilliseconds, + showMinutes, + showSeconds, + toDuration +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Time.Gen/index.js b/.storybook/purescript-indexer/output-es/Data.Time.Gen/index.js new file mode 100644 index 0000000..6363a6e --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Time.Gen/index.js @@ -0,0 +1,9 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dEnum$dGen from "../Data.Enum.Gen/index.js"; +import * as Data$dTime from "../Data.Time/index.js"; +import * as Data$dTime$dComponent from "../Data.Time.Component/index.js"; +const genTime = dictMonadGen => { + const Apply0 = dictMonadGen.Monad0().Bind1().Apply0(); + return Apply0.apply(Apply0.apply(Apply0.apply(Apply0.Functor0().map(Data$dTime.Time)(Data$dEnum$dGen.genBoundedEnum(dictMonadGen)(Data$dTime$dComponent.boundedEnumHour)))(Data$dEnum$dGen.genBoundedEnum(dictMonadGen)(Data$dTime$dComponent.boundedEnumMinute)))(Data$dEnum$dGen.genBoundedEnum(dictMonadGen)(Data$dTime$dComponent.boundedEnumSecond)))(Data$dEnum$dGen.genBoundedEnum(dictMonadGen)(Data$dTime$dComponent.boundedEnumMillisecond)); +}; +export {genTime}; diff --git a/.storybook/purescript-indexer/output-es/Data.Time/index.js b/.storybook/purescript-indexer/output-es/Data.Time/index.js new file mode 100644 index 0000000..141d6a5 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Time/index.js @@ -0,0 +1,101 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dInt from "../Data.Int/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dNumber from "../Data.Number/index.js"; +import * as Data$dOrd from "../Data.Ord/index.js"; +import * as Data$dOrdering from "../Data.Ordering/index.js"; +import * as Data$dShow from "../Data.Show/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +const $Time = (_1, _2, _3, _4) => ({tag: "Time", _1, _2, _3, _4}); +const Time = value0 => value1 => value2 => value3 => $Time(value0, value1, value2, value3); +const showTime = { + show: v => "(Time (Hour " + (Data$dShow.showIntImpl(v._1) + ")") + ( + " (Minute " + (Data$dShow.showIntImpl(v._2) + ")") + (" (Second " + (Data$dShow.showIntImpl(v._3) + ")") + (" (Millisecond " + Data$dShow.showIntImpl(v._4) + "))")) + ) +}; +const setSecond = s => v => $Time(v._1, v._2, s, v._4); +const setMinute = m => v => $Time(v._1, m, v._3, v._4); +const setMillisecond = ms => v => $Time(v._1, v._2, v._3, ms); +const setHour = h => v => $Time(h, v._2, v._3, v._4); +const second = v => v._3; +const minute = v => v._2; +const millisecond = v => v._4; +const millisToTime = v => { + const hours = Data$dNumber.floor(v / 3600000.0); + const minutes = Data$dNumber.floor((v - hours * 3600000.0) / 60000.0); + const seconds = Data$dNumber.floor((v - (hours * 3600000.0 + minutes * 60000.0)) / 1000.0); + const $4 = Data$dMaybe.applyMaybe.apply(Data$dMaybe.applyMaybe.apply(Data$dMaybe.applyMaybe.apply((() => { + const $4 = Data$dInt.unsafeClamp(Data$dNumber.floor(hours)); + if ($4 >= 0 && $4 <= 23) { return Data$dMaybe.$Maybe("Just", Time($4)); } + return Data$dMaybe.Nothing; + })())((() => { + const $4 = Data$dInt.unsafeClamp(Data$dNumber.floor(minutes)); + if ($4 >= 0 && $4 <= 59) { return Data$dMaybe.$Maybe("Just", $4); } + return Data$dMaybe.Nothing; + })()))((() => { + const $4 = Data$dInt.unsafeClamp(Data$dNumber.floor(seconds)); + if ($4 >= 0 && $4 <= 59) { return Data$dMaybe.$Maybe("Just", $4); } + return Data$dMaybe.Nothing; + })()))((() => { + const $4 = Data$dInt.unsafeClamp(Data$dNumber.floor(v - (hours * 3600000.0 + minutes * 60000.0 + seconds * 1000.0))); + if ($4 >= 0 && $4 <= 999) { return Data$dMaybe.$Maybe("Just", $4); } + return Data$dMaybe.Nothing; + })()); + if ($4.tag === "Just") { return $4._1; } + $runtime.fail(); +}; +const hour = v => v._1; +const timeToMillis = t => 3600000.0 * Data$dInt.toNumber(t._1) + 60000.0 * Data$dInt.toNumber(t._2) + 1000.0 * Data$dInt.toNumber(t._3) + Data$dInt.toNumber(t._4); +const eqTime = {eq: x => y => x._1 === y._1 && x._2 === y._2 && x._3 === y._3 && x._4 === y._4}; +const ordTime = { + compare: x => y => { + const v = Data$dOrd.ordInt.compare(x._1)(y._1); + if (v.tag === "LT") { return Data$dOrdering.LT; } + if (v.tag === "GT") { return Data$dOrdering.GT; } + const v1 = Data$dOrd.ordInt.compare(x._2)(y._2); + if (v1.tag === "LT") { return Data$dOrdering.LT; } + if (v1.tag === "GT") { return Data$dOrdering.GT; } + const v2 = Data$dOrd.ordInt.compare(x._3)(y._3); + if (v2.tag === "LT") { return Data$dOrdering.LT; } + if (v2.tag === "GT") { return Data$dOrdering.GT; } + return Data$dOrd.ordInt.compare(x._4)(y._4); + }, + Eq0: () => eqTime +}; +const diff = dictDuration => t1 => t2 => dictDuration.toDuration(timeToMillis(t1) + -timeToMillis(t2)); +const boundedTime = {bottom: /* #__PURE__ */ $Time(0, 0, 0, 0), top: /* #__PURE__ */ $Time(23, 59, 59, 999), Ord0: () => ordTime}; +const maxTime = /* #__PURE__ */ timeToMillis(/* #__PURE__ */ $Time(23, 59, 59, 999)); +const minTime = /* #__PURE__ */ timeToMillis(/* #__PURE__ */ $Time(0, 0, 0, 0)); +const adjust = dictDuration => d => t => { + const d$p = dictDuration.fromDuration(d); + const wholeDays = Data$dNumber.floor(d$p / 86400000.0); + const msAdjusted = timeToMillis(t) + (d$p + -(wholeDays * 86400000.0)); + const wrap = (() => { + if (msAdjusted > maxTime) { return 1.0; } + if (msAdjusted < minTime) { return -1.0; } + return 0.0; + })(); + return Data$dTuple.$Tuple(wholeDays + wrap, millisToTime(msAdjusted + 86400000.0 * -wrap)); +}; +export { + $Time, + Time, + adjust, + boundedTime, + diff, + eqTime, + hour, + maxTime, + millisToTime, + millisecond, + minTime, + minute, + ordTime, + second, + setHour, + setMillisecond, + setMinute, + setSecond, + showTime, + timeToMillis +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Traversable.Accum.Internal/index.js b/.storybook/purescript-indexer/output-es/Data.Traversable.Accum.Internal/index.js new file mode 100644 index 0000000..29cd0dc --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Traversable.Accum.Internal/index.js @@ -0,0 +1,36 @@ +import * as $runtime from "../runtime.js"; +const StateR = x => x; +const StateL = x => x; +const stateR = v => v; +const stateL = v => v; +const functorStateR = { + map: f => k => s => { + const v = k(s); + return {accum: v.accum, value: f(v.value)}; + } +}; +const functorStateL = { + map: f => k => s => { + const v = k(s); + return {accum: v.accum, value: f(v.value)}; + } +}; +const applyStateR = { + apply: f => x => s => { + const v = x(s); + const v1 = f(v.accum); + return {accum: v1.accum, value: v1.value(v.value)}; + }, + Functor0: () => functorStateR +}; +const applyStateL = { + apply: f => x => s => { + const v = f(s); + const v1 = x(v.accum); + return {accum: v1.accum, value: v.value(v1.value)}; + }, + Functor0: () => functorStateL +}; +const applicativeStateR = {pure: a => s => ({accum: s, value: a}), Apply0: () => applyStateR}; +const applicativeStateL = {pure: a => s => ({accum: s, value: a}), Apply0: () => applyStateL}; +export {StateL, StateR, applicativeStateL, applicativeStateR, applyStateL, applyStateR, functorStateL, functorStateR, stateL, stateR}; diff --git a/.storybook/purescript-indexer/output-es/Data.Traversable.Accum/index.js b/.storybook/purescript-indexer/output-es/Data.Traversable.Accum/index.js new file mode 100644 index 0000000..2d3a7c9 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Traversable.Accum/index.js @@ -0,0 +1,2 @@ +import * as $runtime from "../runtime.js"; +export {}; diff --git a/.storybook/purescript-indexer/output-es/Data.Traversable/foreign.js b/.storybook/purescript-indexer/output-es/Data.Traversable/foreign.js new file mode 100644 index 0000000..9f4248c --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Traversable/foreign.js @@ -0,0 +1,52 @@ +// jshint maxparams: 3 + +export const traverseArrayImpl = (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 concat2(xs) { + return function (ys) { + return xs.concat(ys); + }; + } + + return function (apply) { + 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 apply(map(array2)(f(array[bot])))(f(array[bot + 1])); + case 3: return apply(apply(map(array3)(f(array[bot])))(f(array[bot + 1])))(f(array[bot + 2])); + default: + // This slightly tricky pivot selection aims to produce two + // even-length partitions where possible. + var pivot = bot + Math.floor((top - bot) / 4) * 2; + return apply(map(concat2)(go(bot, pivot)))(go(pivot, top)); + } + } + return go(0, array.length); + }; + }; + }; + }; + }; +})(); diff --git a/.storybook/purescript-indexer/output-es/Data.Traversable/index.js b/.storybook/purescript-indexer/output-es/Data.Traversable/index.js new file mode 100644 index 0000000..3750037 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Traversable/index.js @@ -0,0 +1,372 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dConst from "../Data.Const/index.js"; +import * as Data$dEither from "../Data.Either/index.js"; +import * as Data$dFoldable from "../Data.Foldable/index.js"; +import * as Data$dFunctor from "../Data.Functor/index.js"; +import * as Data$dFunctor$dApp from "../Data.Functor.App/index.js"; +import * as Data$dFunctor$dCompose from "../Data.Functor.Compose/index.js"; +import * as Data$dFunctor$dCoproduct from "../Data.Functor.Coproduct/index.js"; +import * as Data$dFunctor$dProduct from "../Data.Functor.Product/index.js"; +import * as Data$dIdentity from "../Data.Identity/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dMaybe$dFirst from "../Data.Maybe.First/index.js"; +import * as Data$dMaybe$dLast from "../Data.Maybe.Last/index.js"; +import * as Data$dMonoid$dAdditive from "../Data.Monoid.Additive/index.js"; +import * as Data$dMonoid$dConj from "../Data.Monoid.Conj/index.js"; +import * as Data$dMonoid$dDisj from "../Data.Monoid.Disj/index.js"; +import * as Data$dMonoid$dDual from "../Data.Monoid.Dual/index.js"; +import * as Data$dMonoid$dMultiplicative from "../Data.Monoid.Multiplicative/index.js"; +import * as Data$dTraversable$dAccum$dInternal from "../Data.Traversable.Accum.Internal/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +import {traverseArrayImpl} from "./foreign.js"; +const identity = x => x; +const traverse = dict => dict.traverse; +const traversableTuple = { + traverse: dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + return f => v => map(Data$dTuple.Tuple(v._1))(f(v._2)); + }, + sequence: dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + return v => map(Data$dTuple.Tuple(v._1))(v._2); + }, + Functor0: () => Data$dTuple.functorTuple, + Foldable1: () => Data$dFoldable.foldableTuple +}; +const traversableMultiplicative = { + traverse: dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + return f => v => map(Data$dMonoid$dMultiplicative.Multiplicative)(f(v)); + }, + sequence: dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + return v => map(Data$dMonoid$dMultiplicative.Multiplicative)(v); + }, + Functor0: () => Data$dMonoid$dMultiplicative.functorMultiplicative, + Foldable1: () => Data$dFoldable.foldableMultiplicative +}; +const traversableMaybe = { + traverse: dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + return v => v1 => { + if (v1.tag === "Nothing") { return dictApplicative.pure(Data$dMaybe.Nothing); } + if (v1.tag === "Just") { return map(Data$dMaybe.Just)(v(v1._1)); } + $runtime.fail(); + }; + }, + sequence: dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + return v => { + if (v.tag === "Nothing") { return dictApplicative.pure(Data$dMaybe.Nothing); } + if (v.tag === "Just") { return map(Data$dMaybe.Just)(v._1); } + $runtime.fail(); + }; + }, + Functor0: () => Data$dMaybe.functorMaybe, + Foldable1: () => Data$dFoldable.foldableMaybe +}; +const traversableIdentity = { + traverse: dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + return f => v => map(Data$dIdentity.Identity)(f(v)); + }, + sequence: dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + return v => map(Data$dIdentity.Identity)(v); + }, + Functor0: () => Data$dIdentity.functorIdentity, + Foldable1: () => Data$dFoldable.foldableIdentity +}; +const traversableEither = { + traverse: dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + return v => v1 => { + if (v1.tag === "Left") { return dictApplicative.pure(Data$dEither.$Either("Left", v1._1)); } + if (v1.tag === "Right") { return map(Data$dEither.Right)(v(v1._1)); } + $runtime.fail(); + }; + }, + sequence: dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + return v => { + if (v.tag === "Left") { return dictApplicative.pure(Data$dEither.$Either("Left", v._1)); } + if (v.tag === "Right") { return map(Data$dEither.Right)(v._1); } + $runtime.fail(); + }; + }, + Functor0: () => Data$dEither.functorEither, + Foldable1: () => Data$dFoldable.foldableEither +}; +const traversableDual = { + traverse: dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + return f => v => map(Data$dMonoid$dDual.Dual)(f(v)); + }, + sequence: dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + return v => map(Data$dMonoid$dDual.Dual)(v); + }, + Functor0: () => Data$dMonoid$dDual.functorDual, + Foldable1: () => Data$dFoldable.foldableDual +}; +const traversableDisj = { + traverse: dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + return f => v => map(Data$dMonoid$dDisj.Disj)(f(v)); + }, + sequence: dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + return v => map(Data$dMonoid$dDisj.Disj)(v); + }, + Functor0: () => Data$dMonoid$dDisj.functorDisj, + Foldable1: () => Data$dFoldable.foldableDisj +}; +const traversableConst = { + traverse: dictApplicative => v => v1 => dictApplicative.pure(v1), + sequence: dictApplicative => v => dictApplicative.pure(v), + Functor0: () => Data$dConst.functorConst, + Foldable1: () => Data$dFoldable.foldableConst +}; +const traversableConj = { + traverse: dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + return f => v => map(Data$dMonoid$dConj.Conj)(f(v)); + }, + sequence: dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + return v => map(Data$dMonoid$dConj.Conj)(v); + }, + Functor0: () => Data$dMonoid$dConj.functorConj, + Foldable1: () => Data$dFoldable.foldableConj +}; +const traversableCompose = dictTraversable => { + const $1 = dictTraversable.Functor0(); + const $2 = dictTraversable.Foldable1(); + return dictTraversable1 => { + const $4 = dictTraversable1.Functor0(); + const functorCompose1 = {map: f => v => $1.map($4.map(f))(v)}; + const $6 = dictTraversable1.Foldable1(); + const foldableCompose1 = { + foldr: f => i => v => $2.foldr((() => { + const $10 = $6.foldr(f); + return b => a => $10(a)(b); + })())(i)(v), + foldl: f => i => v => $2.foldl($6.foldl(f))(i)(v), + foldMap: dictMonoid => { + const foldMap4 = $2.foldMap(dictMonoid); + const foldMap5 = $6.foldMap(dictMonoid); + return f => v => foldMap4(foldMap5(f))(v); + } + }; + return { + traverse: dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + const traverse4 = dictTraversable.traverse(dictApplicative); + const traverse5 = dictTraversable1.traverse(dictApplicative); + return f => v => map(Data$dFunctor$dCompose.Compose)(traverse4(traverse5(f))(v)); + }, + sequence: dictApplicative => traversableCompose(dictTraversable)(dictTraversable1).traverse(dictApplicative)(identity), + Functor0: () => functorCompose1, + Foldable1: () => foldableCompose1 + }; + }; +}; +const traversableAdditive = { + traverse: dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + return f => v => map(Data$dMonoid$dAdditive.Additive)(f(v)); + }, + sequence: dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + return v => map(Data$dMonoid$dAdditive.Additive)(v); + }, + Functor0: () => Data$dMonoid$dAdditive.functorAdditive, + Foldable1: () => Data$dFoldable.foldableAdditive +}; +const sequenceDefault = dictTraversable => dictApplicative => dictTraversable.traverse(dictApplicative)(identity); +const traversableArray = { + traverse: dictApplicative => { + const Apply0 = dictApplicative.Apply0(); + return traverseArrayImpl(Apply0.apply)(Apply0.Functor0().map)(dictApplicative.pure); + }, + sequence: dictApplicative => traversableArray.traverse(dictApplicative)(identity), + Functor0: () => Data$dFunctor.functorArray, + Foldable1: () => Data$dFoldable.foldableArray +}; +const sequence = dict => dict.sequence; +const traversableApp = dictTraversable => { + const functorApp = dictTraversable.Functor0(); + const $2 = dictTraversable.Foldable1(); + const foldableApp = {foldr: f => i => v => $2.foldr(f)(i)(v), foldl: f => i => v => $2.foldl(f)(i)(v), foldMap: dictMonoid => $2.foldMap(dictMonoid)}; + return { + traverse: dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + const traverse3 = dictTraversable.traverse(dictApplicative); + return f => v => map(Data$dFunctor$dApp.App)(traverse3(f)(v)); + }, + sequence: dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + const sequence3 = dictTraversable.sequence(dictApplicative); + return v => map(Data$dFunctor$dApp.App)(sequence3(v)); + }, + Functor0: () => functorApp, + Foldable1: () => foldableApp + }; +}; +const traversableCoproduct = dictTraversable => { + const functorCoproduct = Data$dFunctor$dCoproduct.functorCoproduct(dictTraversable.Functor0()); + const foldableCoproduct = Data$dFoldable.foldableCoproduct(dictTraversable.Foldable1()); + return dictTraversable1 => { + const functorCoproduct1 = functorCoproduct(dictTraversable1.Functor0()); + const foldableCoproduct1 = foldableCoproduct(dictTraversable1.Foldable1()); + return { + traverse: dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + const traverse4 = dictTraversable.traverse(dictApplicative); + const traverse5 = dictTraversable1.traverse(dictApplicative); + return f => { + const $11 = map(x => Data$dEither.$Either("Left", x)); + const $12 = traverse4(f); + const $13 = map(x => Data$dEither.$Either("Right", x)); + const $14 = traverse5(f); + return v2 => { + if (v2.tag === "Left") { return $11($12(v2._1)); } + if (v2.tag === "Right") { return $13($14(v2._1)); } + $runtime.fail(); + }; + }; + }, + sequence: dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + const $8 = map(x => Data$dEither.$Either("Left", x)); + const $9 = dictTraversable.sequence(dictApplicative); + const $10 = map(x => Data$dEither.$Either("Right", x)); + const $11 = dictTraversable1.sequence(dictApplicative); + return v2 => { + if (v2.tag === "Left") { return $8($9(v2._1)); } + if (v2.tag === "Right") { return $10($11(v2._1)); } + $runtime.fail(); + }; + }, + Functor0: () => functorCoproduct1, + Foldable1: () => foldableCoproduct1 + }; + }; +}; +const traversableFirst = { + traverse: dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + const traverse2 = traversableMaybe.traverse(dictApplicative); + return f => v => map(Data$dMaybe$dFirst.First)(traverse2(f)(v)); + }, + sequence: dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + const sequence2 = traversableMaybe.sequence(dictApplicative); + return v => map(Data$dMaybe$dFirst.First)(sequence2(v)); + }, + Functor0: () => Data$dMaybe.functorMaybe, + Foldable1: () => Data$dFoldable.foldableFirst +}; +const traversableLast = { + traverse: dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + const traverse2 = traversableMaybe.traverse(dictApplicative); + return f => v => map(Data$dMaybe$dLast.Last)(traverse2(f)(v)); + }, + sequence: dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + const sequence2 = traversableMaybe.sequence(dictApplicative); + return v => map(Data$dMaybe$dLast.Last)(sequence2(v)); + }, + Functor0: () => Data$dMaybe.functorMaybe, + Foldable1: () => Data$dFoldable.foldableLast +}; +const traversableProduct = dictTraversable => { + const functorProduct = Data$dFunctor$dProduct.functorProduct(dictTraversable.Functor0()); + const foldableProduct = Data$dFoldable.foldableProduct(dictTraversable.Foldable1()); + return dictTraversable1 => { + const functorProduct1 = functorProduct(dictTraversable1.Functor0()); + const foldableProduct1 = foldableProduct(dictTraversable1.Foldable1()); + return { + traverse: dictApplicative => { + const $7 = dictApplicative.Apply0(); + const map = $7.Functor0().map; + const traverse4 = dictTraversable.traverse(dictApplicative); + const traverse5 = dictTraversable1.traverse(dictApplicative); + return f => v => $7.apply(map(Data$dFunctor$dProduct.product)(traverse4(f)(v._1)))(traverse5(f)(v._2)); + }, + sequence: dictApplicative => { + const $7 = dictApplicative.Apply0(); + const map = $7.Functor0().map; + const sequence4 = dictTraversable.sequence(dictApplicative); + const sequence5 = dictTraversable1.sequence(dictApplicative); + return v => $7.apply(map(Data$dFunctor$dProduct.product)(sequence4(v._1)))(sequence5(v._2)); + }, + Functor0: () => functorProduct1, + Foldable1: () => foldableProduct1 + }; + }; +}; +const traverseDefault = dictTraversable => { + const map = dictTraversable.Functor0().map; + return dictApplicative => { + const sequence3 = dictTraversable.sequence(dictApplicative); + return f => ta => sequence3(map(f)(ta)); + }; +}; +const mapAccumR = dictTraversable => { + const traverse2 = dictTraversable.traverse(Data$dTraversable$dAccum$dInternal.applicativeStateR); + return f => s0 => xs => traverse2(a => s => f(s)(a))(xs)(s0); +}; +const scanr = dictTraversable => { + const mapAccumR1 = mapAccumR(dictTraversable); + return f => b0 => xs => mapAccumR1(b => a => { + const b$p = f(a)(b); + return {accum: b$p, value: b$p}; + })(b0)(xs).value; +}; +const mapAccumL = dictTraversable => { + const traverse2 = dictTraversable.traverse(Data$dTraversable$dAccum$dInternal.applicativeStateL); + return f => s0 => xs => traverse2(a => s => f(s)(a))(xs)(s0); +}; +const scanl = dictTraversable => { + const mapAccumL1 = mapAccumL(dictTraversable); + return f => b0 => xs => mapAccumL1(b => a => { + const b$p = f(b)(a); + return {accum: b$p, value: b$p}; + })(b0)(xs).value; +}; +const $$for = dictApplicative => dictTraversable => { + const traverse2 = dictTraversable.traverse(dictApplicative); + return x => f => traverse2(f)(x); +}; +export { + $$for as for, + identity, + mapAccumL, + mapAccumR, + scanl, + scanr, + sequence, + sequenceDefault, + traversableAdditive, + traversableApp, + traversableArray, + traversableCompose, + traversableConj, + traversableConst, + traversableCoproduct, + traversableDisj, + traversableDual, + traversableEither, + traversableFirst, + traversableIdentity, + traversableLast, + traversableMaybe, + traversableMultiplicative, + traversableProduct, + traversableTuple, + traverse, + traverseDefault +}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Data.TraversableWithIndex/index.js b/.storybook/purescript-indexer/output-es/Data.TraversableWithIndex/index.js new file mode 100644 index 0000000..09e4554 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.TraversableWithIndex/index.js @@ -0,0 +1,305 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dEither from "../Data.Either/index.js"; +import * as Data$dFoldableWithIndex from "../Data.FoldableWithIndex/index.js"; +import * as Data$dFunctor$dApp from "../Data.Functor.App/index.js"; +import * as Data$dFunctor$dCompose from "../Data.Functor.Compose/index.js"; +import * as Data$dFunctor$dProduct from "../Data.Functor.Product/index.js"; +import * as Data$dFunctorWithIndex from "../Data.FunctorWithIndex/index.js"; +import * as Data$dIdentity from "../Data.Identity/index.js"; +import * as Data$dTraversable from "../Data.Traversable/index.js"; +import * as Data$dTraversable$dAccum$dInternal from "../Data.Traversable.Accum.Internal/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +const traverseWithIndexDefault = dictTraversableWithIndex => { + const sequence = dictTraversableWithIndex.Traversable2().sequence; + const mapWithIndex = dictTraversableWithIndex.FunctorWithIndex0().mapWithIndex; + return dictApplicative => { + const sequence1 = sequence(dictApplicative); + return f => { + const $6 = mapWithIndex(f); + return x => sequence1($6(x)); + }; + }; +}; +const traverseWithIndex = dict => dict.traverseWithIndex; +const traverseDefault = dictTraversableWithIndex => dictApplicative => { + const traverseWithIndex2 = dictTraversableWithIndex.traverseWithIndex(dictApplicative); + return f => traverseWithIndex2(v => f); +}; +const traversableWithIndexTuple = { + traverseWithIndex: dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + return f => v => map(Data$dTuple.Tuple(v._1))(f(Data$dUnit.unit)(v._2)); + }, + FunctorWithIndex0: () => Data$dFunctorWithIndex.functorWithIndexTuple, + FoldableWithIndex1: () => Data$dFoldableWithIndex.foldableWithIndexTuple, + Traversable2: () => Data$dTraversable.traversableTuple +}; +const traversableWithIndexProduct = dictTraversableWithIndex => { + const functorWithIndexProduct = Data$dFunctorWithIndex.functorWithIndexProduct(dictTraversableWithIndex.FunctorWithIndex0()); + const foldableWithIndexProduct = Data$dFoldableWithIndex.foldableWithIndexProduct(dictTraversableWithIndex.FoldableWithIndex1()); + const traversableProduct = Data$dTraversable.traversableProduct(dictTraversableWithIndex.Traversable2()); + return dictTraversableWithIndex1 => { + const functorWithIndexProduct1 = functorWithIndexProduct(dictTraversableWithIndex1.FunctorWithIndex0()); + const foldableWithIndexProduct1 = foldableWithIndexProduct(dictTraversableWithIndex1.FoldableWithIndex1()); + const traversableProduct1 = traversableProduct(dictTraversableWithIndex1.Traversable2()); + return { + traverseWithIndex: dictApplicative => { + const $9 = dictApplicative.Apply0(); + const map = $9.Functor0().map; + const traverseWithIndex3 = dictTraversableWithIndex.traverseWithIndex(dictApplicative); + const traverseWithIndex4 = dictTraversableWithIndex1.traverseWithIndex(dictApplicative); + return f => v => $9.apply(map(Data$dFunctor$dProduct.product)(traverseWithIndex3(x => f(Data$dEither.$Either("Left", x)))(v._1)))(traverseWithIndex4(x => f(Data$dEither.$Either( + "Right", + x + )))(v._2)); + }, + FunctorWithIndex0: () => functorWithIndexProduct1, + FoldableWithIndex1: () => foldableWithIndexProduct1, + Traversable2: () => traversableProduct1 + }; + }; +}; +const traversableWithIndexMultiplicative = { + traverseWithIndex: dictApplicative => { + const traverse8 = Data$dTraversable.traversableMultiplicative.traverse(dictApplicative); + return f => traverse8(f(Data$dUnit.unit)); + }, + FunctorWithIndex0: () => Data$dFunctorWithIndex.functorWithIndexMultiplicative, + FoldableWithIndex1: () => Data$dFoldableWithIndex.foldableWithIndexMultiplicative, + Traversable2: () => Data$dTraversable.traversableMultiplicative +}; +const traversableWithIndexMaybe = { + traverseWithIndex: dictApplicative => { + const traverse8 = Data$dTraversable.traversableMaybe.traverse(dictApplicative); + return f => traverse8(f(Data$dUnit.unit)); + }, + FunctorWithIndex0: () => Data$dFunctorWithIndex.functorWithIndexMaybe, + FoldableWithIndex1: () => Data$dFoldableWithIndex.foldableWithIndexMaybe, + Traversable2: () => Data$dTraversable.traversableMaybe +}; +const traversableWithIndexLast = { + traverseWithIndex: dictApplicative => { + const traverse8 = Data$dTraversable.traversableLast.traverse(dictApplicative); + return f => traverse8(f(Data$dUnit.unit)); + }, + FunctorWithIndex0: () => Data$dFunctorWithIndex.functorWithIndexLast, + FoldableWithIndex1: () => Data$dFoldableWithIndex.foldableWithIndexLast, + Traversable2: () => Data$dTraversable.traversableLast +}; +const traversableWithIndexIdentity = { + traverseWithIndex: dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + return f => v => map(Data$dIdentity.Identity)(f(Data$dUnit.unit)(v)); + }, + FunctorWithIndex0: () => Data$dFunctorWithIndex.functorWithIndexIdentity, + FoldableWithIndex1: () => Data$dFoldableWithIndex.foldableWithIndexIdentity, + Traversable2: () => Data$dTraversable.traversableIdentity +}; +const traversableWithIndexFirst = { + traverseWithIndex: dictApplicative => { + const traverse8 = Data$dTraversable.traversableFirst.traverse(dictApplicative); + return f => traverse8(f(Data$dUnit.unit)); + }, + FunctorWithIndex0: () => Data$dFunctorWithIndex.functorWithIndexFirst, + FoldableWithIndex1: () => Data$dFoldableWithIndex.foldableWithIndexFirst, + Traversable2: () => Data$dTraversable.traversableFirst +}; +const traversableWithIndexEither = { + traverseWithIndex: dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + return v => v1 => { + if (v1.tag === "Left") { return dictApplicative.pure(Data$dEither.$Either("Left", v1._1)); } + if (v1.tag === "Right") { return map(Data$dEither.Right)(v(Data$dUnit.unit)(v1._1)); } + $runtime.fail(); + }; + }, + FunctorWithIndex0: () => Data$dFunctorWithIndex.functorWithIndexEither, + FoldableWithIndex1: () => Data$dFoldableWithIndex.foldableWithIndexEither, + Traversable2: () => Data$dTraversable.traversableEither +}; +const traversableWithIndexDual = { + traverseWithIndex: dictApplicative => { + const traverse8 = Data$dTraversable.traversableDual.traverse(dictApplicative); + return f => traverse8(f(Data$dUnit.unit)); + }, + FunctorWithIndex0: () => Data$dFunctorWithIndex.functorWithIndexDual, + FoldableWithIndex1: () => Data$dFoldableWithIndex.foldableWithIndexDual, + Traversable2: () => Data$dTraversable.traversableDual +}; +const traversableWithIndexDisj = { + traverseWithIndex: dictApplicative => { + const traverse8 = Data$dTraversable.traversableDisj.traverse(dictApplicative); + return f => traverse8(f(Data$dUnit.unit)); + }, + FunctorWithIndex0: () => Data$dFunctorWithIndex.functorWithIndexDisj, + FoldableWithIndex1: () => Data$dFoldableWithIndex.foldableWithIndexDisj, + Traversable2: () => Data$dTraversable.traversableDisj +}; +const traversableWithIndexCoproduct = dictTraversableWithIndex => { + const functorWithIndexCoproduct = Data$dFunctorWithIndex.functorWithIndexCoproduct(dictTraversableWithIndex.FunctorWithIndex0()); + const foldableWithIndexCoproduct = Data$dFoldableWithIndex.foldableWithIndexCoproduct(dictTraversableWithIndex.FoldableWithIndex1()); + const traversableCoproduct = Data$dTraversable.traversableCoproduct(dictTraversableWithIndex.Traversable2()); + return dictTraversableWithIndex1 => { + const functorWithIndexCoproduct1 = functorWithIndexCoproduct(dictTraversableWithIndex1.FunctorWithIndex0()); + const foldableWithIndexCoproduct1 = foldableWithIndexCoproduct(dictTraversableWithIndex1.FoldableWithIndex1()); + const traversableCoproduct1 = traversableCoproduct(dictTraversableWithIndex1.Traversable2()); + return { + traverseWithIndex: dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + const traverseWithIndex3 = dictTraversableWithIndex.traverseWithIndex(dictApplicative); + const traverseWithIndex4 = dictTraversableWithIndex1.traverseWithIndex(dictApplicative); + return f => { + const $13 = map(x => Data$dEither.$Either("Left", x)); + const $14 = traverseWithIndex3(x => f(Data$dEither.$Either("Left", x))); + const $15 = map(x => Data$dEither.$Either("Right", x)); + const $16 = traverseWithIndex4(x => f(Data$dEither.$Either("Right", x))); + return v2 => { + if (v2.tag === "Left") { return $13($14(v2._1)); } + if (v2.tag === "Right") { return $15($16(v2._1)); } + $runtime.fail(); + }; + }; + }, + FunctorWithIndex0: () => functorWithIndexCoproduct1, + FoldableWithIndex1: () => foldableWithIndexCoproduct1, + Traversable2: () => traversableCoproduct1 + }; + }; +}; +const traversableWithIndexConst = { + traverseWithIndex: dictApplicative => v => v1 => dictApplicative.pure(v1), + FunctorWithIndex0: () => Data$dFunctorWithIndex.functorWithIndexConst, + FoldableWithIndex1: () => Data$dFoldableWithIndex.foldableWithIndexConst, + Traversable2: () => Data$dTraversable.traversableConst +}; +const traversableWithIndexConj = { + traverseWithIndex: dictApplicative => { + const traverse8 = Data$dTraversable.traversableConj.traverse(dictApplicative); + return f => traverse8(f(Data$dUnit.unit)); + }, + FunctorWithIndex0: () => Data$dFunctorWithIndex.functorWithIndexConj, + FoldableWithIndex1: () => Data$dFoldableWithIndex.foldableWithIndexConj, + Traversable2: () => Data$dTraversable.traversableConj +}; +const traversableWithIndexCompose = dictTraversableWithIndex => { + const functorWithIndexCompose = Data$dFunctorWithIndex.functorWithIndexCompose(dictTraversableWithIndex.FunctorWithIndex0()); + const foldableWithIndexCompose = Data$dFoldableWithIndex.foldableWithIndexCompose(dictTraversableWithIndex.FoldableWithIndex1()); + const traversableCompose = Data$dTraversable.traversableCompose(dictTraversableWithIndex.Traversable2()); + return dictTraversableWithIndex1 => { + const functorWithIndexCompose1 = functorWithIndexCompose(dictTraversableWithIndex1.FunctorWithIndex0()); + const foldableWithIndexCompose1 = foldableWithIndexCompose(dictTraversableWithIndex1.FoldableWithIndex1()); + const traversableCompose1 = traversableCompose(dictTraversableWithIndex1.Traversable2()); + return { + traverseWithIndex: dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + const traverseWithIndex3 = dictTraversableWithIndex.traverseWithIndex(dictApplicative); + const traverseWithIndex4 = dictTraversableWithIndex1.traverseWithIndex(dictApplicative); + return f => v => map(Data$dFunctor$dCompose.Compose)(traverseWithIndex3(x => traverseWithIndex4(Data$dTuple.curry(f)(x)))(v)); + }, + FunctorWithIndex0: () => functorWithIndexCompose1, + FoldableWithIndex1: () => foldableWithIndexCompose1, + Traversable2: () => traversableCompose1 + }; + }; +}; +const traversableWithIndexArray = { + traverseWithIndex: dictApplicative => { + const mapWithIndex = traversableWithIndexArray.FunctorWithIndex0().mapWithIndex; + const sequence1 = traversableWithIndexArray.Traversable2().sequence(dictApplicative); + return f => { + const $4 = mapWithIndex(f); + return x => sequence1($4(x)); + }; + }, + FunctorWithIndex0: () => Data$dFunctorWithIndex.functorWithIndexArray, + FoldableWithIndex1: () => Data$dFoldableWithIndex.foldableWithIndexArray, + Traversable2: () => Data$dTraversable.traversableArray +}; +const traversableWithIndexApp = dictTraversableWithIndex => { + const $1 = dictTraversableWithIndex.FunctorWithIndex0(); + const functorApp = $1.Functor0(); + const functorWithIndexApp = {mapWithIndex: f => v => $1.mapWithIndex(f)(v), Functor0: () => functorApp}; + const $4 = dictTraversableWithIndex.FoldableWithIndex1(); + const $5 = $4.Foldable0(); + const foldableApp = {foldr: f => i => v => $5.foldr(f)(i)(v), foldl: f => i => v => $5.foldl(f)(i)(v), foldMap: dictMonoid => $5.foldMap(dictMonoid)}; + const foldableWithIndexApp = { + foldrWithIndex: f => z => v => $4.foldrWithIndex(f)(z)(v), + foldlWithIndex: f => z => v => $4.foldlWithIndex(f)(z)(v), + foldMapWithIndex: dictMonoid => $4.foldMapWithIndex(dictMonoid), + Foldable0: () => foldableApp + }; + const traversableApp = Data$dTraversable.traversableApp(dictTraversableWithIndex.Traversable2()); + return { + traverseWithIndex: dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + const traverseWithIndex2 = dictTraversableWithIndex.traverseWithIndex(dictApplicative); + return f => v => map(Data$dFunctor$dApp.App)(traverseWithIndex2(f)(v)); + }, + FunctorWithIndex0: () => functorWithIndexApp, + FoldableWithIndex1: () => foldableWithIndexApp, + Traversable2: () => traversableApp + }; +}; +const traversableWithIndexAdditive = { + traverseWithIndex: dictApplicative => { + const traverse8 = Data$dTraversable.traversableAdditive.traverse(dictApplicative); + return f => traverse8(f(Data$dUnit.unit)); + }, + FunctorWithIndex0: () => Data$dFunctorWithIndex.functorWithIndexAdditive, + FoldableWithIndex1: () => Data$dFoldableWithIndex.foldableWithIndexAdditive, + Traversable2: () => Data$dTraversable.traversableAdditive +}; +const mapAccumRWithIndex = dictTraversableWithIndex => { + const traverseWithIndex1 = dictTraversableWithIndex.traverseWithIndex(Data$dTraversable$dAccum$dInternal.applicativeStateR); + return f => s0 => xs => traverseWithIndex1(i => a => s => f(i)(s)(a))(xs)(s0); +}; +const scanrWithIndex = dictTraversableWithIndex => { + const mapAccumRWithIndex1 = mapAccumRWithIndex(dictTraversableWithIndex); + return f => b0 => xs => mapAccumRWithIndex1(i => b => a => { + const b$p = f(i)(a)(b); + return {accum: b$p, value: b$p}; + })(b0)(xs).value; +}; +const mapAccumLWithIndex = dictTraversableWithIndex => { + const traverseWithIndex1 = dictTraversableWithIndex.traverseWithIndex(Data$dTraversable$dAccum$dInternal.applicativeStateL); + return f => s0 => xs => traverseWithIndex1(i => a => s => f(i)(s)(a))(xs)(s0); +}; +const scanlWithIndex = dictTraversableWithIndex => { + const mapAccumLWithIndex1 = mapAccumLWithIndex(dictTraversableWithIndex); + return f => b0 => xs => mapAccumLWithIndex1(i => b => a => { + const b$p = f(i)(b)(a); + return {accum: b$p, value: b$p}; + })(b0)(xs).value; +}; +const forWithIndex = dictApplicative => dictTraversableWithIndex => { + const $2 = dictTraversableWithIndex.traverseWithIndex(dictApplicative); + return b => a => $2(a)(b); +}; +export { + forWithIndex, + mapAccumLWithIndex, + mapAccumRWithIndex, + scanlWithIndex, + scanrWithIndex, + traversableWithIndexAdditive, + traversableWithIndexApp, + traversableWithIndexArray, + traversableWithIndexCompose, + traversableWithIndexConj, + traversableWithIndexConst, + traversableWithIndexCoproduct, + traversableWithIndexDisj, + traversableWithIndexDual, + traversableWithIndexEither, + traversableWithIndexFirst, + traversableWithIndexIdentity, + traversableWithIndexLast, + traversableWithIndexMaybe, + traversableWithIndexMultiplicative, + traversableWithIndexProduct, + traversableWithIndexTuple, + traverseDefault, + traverseWithIndex, + traverseWithIndexDefault +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Tuple.Nested/index.js b/.storybook/purescript-indexer/output-es/Data.Tuple.Nested/index.js new file mode 100644 index 0000000..2641ca7 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Tuple.Nested/index.js @@ -0,0 +1,295 @@ +// | Tuples that are not restricted to two elements. +// | +// | Here is an example of a 3-tuple: +// | +// | +// | ```purescript +// | > tuple = tuple3 1 "2" 3.0 +// | > tuple +// | (Tuple 1 (Tuple "2" (Tuple 3.0 unit))) +// | ``` +// | +// | Notice that a tuple is a nested structure not unlike a list. The type of `tuple` is this: +// | +// | ```purescript +// | > :t tuple +// | Tuple Int (Tuple String (Tuple Number Unit)) +// | ``` +// | +// | That, however, can be abbreviated with the `Tuple3` type: +// | +// | ```purescript +// | Tuple3 Int String Number +// | ``` +// | +// | All tuple functions are numbered from 1 to 10. That is, there's +// | a `get1` and a `get10`. +// | +// | The `getN` functions accept tuples of length N or greater: +// | +// | ```purescript +// | get1 tuple = 1 +// | get3 tuple = 3 +// | get4 tuple -- type error. `get4` requires a longer tuple. +// | ``` +// | +// | The same is true of the `overN` functions: +// | +// | ```purescript +// | over2 negate (tuple3 1 2 3) = tuple3 1 (-2) 3 +// | ``` +// | +// | `uncurryN` can be used to convert a function that takes `N` arguments to one that takes an N-tuple: +// | +// | ```purescript +// | uncurry2 (+) (tuple2 1 2) = 3 +// | ``` +// | +// | The reverse `curryN` function converts functions that take +// | N-tuples (which are rare) to functions that take `N` arguments. +// | +// | --------------- +// | In addition to types like `Tuple3`, there are also types like +// | `T3`. Whereas `Tuple3` describes a tuple with exactly three +// | elements, `T3` describes a tuple of length *two or longer*. More +// | specifically, `T3` requires two element plus a "tail" that may be +// | `unit` or more tuple elements. Use types like `T3` when you want to +// | create a set of functions for arbitrary tuples. See the source for how that's done. +// | +import * as $runtime from "../runtime.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +const uncurry9 = f$p => v => f$p(v._1)(v._2._1)(v._2._2._1)(v._2._2._2._1)(v._2._2._2._2._1)(v._2._2._2._2._2._1)(v._2._2._2._2._2._2._1)(v._2._2._2._2._2._2._2._1)(v._2._2._2._2._2._2._2._2._1); +const uncurry8 = f$p => v => f$p(v._1)(v._2._1)(v._2._2._1)(v._2._2._2._1)(v._2._2._2._2._1)(v._2._2._2._2._2._1)(v._2._2._2._2._2._2._1)(v._2._2._2._2._2._2._2._1); +const uncurry7 = f$p => v => f$p(v._1)(v._2._1)(v._2._2._1)(v._2._2._2._1)(v._2._2._2._2._1)(v._2._2._2._2._2._1)(v._2._2._2._2._2._2._1); +const uncurry6 = f$p => v => f$p(v._1)(v._2._1)(v._2._2._1)(v._2._2._2._1)(v._2._2._2._2._1)(v._2._2._2._2._2._1); +const uncurry5 = f => v => f(v._1)(v._2._1)(v._2._2._1)(v._2._2._2._1)(v._2._2._2._2._1); +const uncurry4 = f => v => f(v._1)(v._2._1)(v._2._2._1)(v._2._2._2._1); +const uncurry3 = f => v => f(v._1)(v._2._1)(v._2._2._1); +const uncurry2 = f => v => f(v._1)(v._2._1); +const uncurry10 = f$p => v => f$p(v._1)(v._2._1)(v._2._2._1)(v._2._2._2._1)(v._2._2._2._2._1)(v._2._2._2._2._2._1)(v._2._2._2._2._2._2._1)(v._2._2._2._2._2._2._2._1)(v._2._2._2._2._2._2._2._2._1)(v._2._2._2._2._2._2._2._2._2._1); +const uncurry1 = f => v => f(v._1); +const tuple9 = a => b => c => d => e => f => g => h => i => Data$dTuple.$Tuple( + a, + Data$dTuple.$Tuple( + b, + Data$dTuple.$Tuple(c, Data$dTuple.$Tuple(d, Data$dTuple.$Tuple(e, Data$dTuple.$Tuple(f, Data$dTuple.$Tuple(g, Data$dTuple.$Tuple(h, Data$dTuple.$Tuple(i, Data$dUnit.unit))))))) + ) +); +const tuple8 = a => b => c => d => e => f => g => h => Data$dTuple.$Tuple( + a, + Data$dTuple.$Tuple(b, Data$dTuple.$Tuple(c, Data$dTuple.$Tuple(d, Data$dTuple.$Tuple(e, Data$dTuple.$Tuple(f, Data$dTuple.$Tuple(g, Data$dTuple.$Tuple(h, Data$dUnit.unit))))))) +); +const tuple7 = a => b => c => d => e => f => g => Data$dTuple.$Tuple( + a, + Data$dTuple.$Tuple(b, Data$dTuple.$Tuple(c, Data$dTuple.$Tuple(d, Data$dTuple.$Tuple(e, Data$dTuple.$Tuple(f, Data$dTuple.$Tuple(g, Data$dUnit.unit)))))) +); +const tuple6 = a => b => c => d => e => f => Data$dTuple.$Tuple( + a, + Data$dTuple.$Tuple(b, Data$dTuple.$Tuple(c, Data$dTuple.$Tuple(d, Data$dTuple.$Tuple(e, Data$dTuple.$Tuple(f, Data$dUnit.unit))))) +); +const tuple5 = a => b => c => d => e => Data$dTuple.$Tuple(a, Data$dTuple.$Tuple(b, Data$dTuple.$Tuple(c, Data$dTuple.$Tuple(d, Data$dTuple.$Tuple(e, Data$dUnit.unit))))); +const tuple4 = a => b => c => d => Data$dTuple.$Tuple(a, Data$dTuple.$Tuple(b, Data$dTuple.$Tuple(c, Data$dTuple.$Tuple(d, Data$dUnit.unit)))); +const tuple3 = a => b => c => Data$dTuple.$Tuple(a, Data$dTuple.$Tuple(b, Data$dTuple.$Tuple(c, Data$dUnit.unit))); +const tuple2 = a => b => Data$dTuple.$Tuple(a, Data$dTuple.$Tuple(b, Data$dUnit.unit)); +const tuple10 = a => b => c => d => e => f => g => h => i => j => Data$dTuple.$Tuple( + a, + Data$dTuple.$Tuple( + b, + Data$dTuple.$Tuple( + c, + Data$dTuple.$Tuple( + d, + Data$dTuple.$Tuple(e, Data$dTuple.$Tuple(f, Data$dTuple.$Tuple(g, Data$dTuple.$Tuple(h, Data$dTuple.$Tuple(i, Data$dTuple.$Tuple(j, Data$dUnit.unit)))))) + ) + ) + ) +); +const tuple1 = a => Data$dTuple.$Tuple(a, Data$dUnit.unit); +const over9 = o => v => Data$dTuple.$Tuple( + v._1, + Data$dTuple.$Tuple( + v._2._1, + Data$dTuple.$Tuple( + v._2._2._1, + Data$dTuple.$Tuple( + v._2._2._2._1, + Data$dTuple.$Tuple( + v._2._2._2._2._1, + Data$dTuple.$Tuple( + v._2._2._2._2._2._1, + Data$dTuple.$Tuple( + v._2._2._2._2._2._2._1, + Data$dTuple.$Tuple(v._2._2._2._2._2._2._2._1, Data$dTuple.$Tuple(o(v._2._2._2._2._2._2._2._2._1), v._2._2._2._2._2._2._2._2._2)) + ) + ) + ) + ) + ) + ) +); +const over8 = o => v => Data$dTuple.$Tuple( + v._1, + Data$dTuple.$Tuple( + v._2._1, + Data$dTuple.$Tuple( + v._2._2._1, + Data$dTuple.$Tuple( + v._2._2._2._1, + Data$dTuple.$Tuple( + v._2._2._2._2._1, + Data$dTuple.$Tuple(v._2._2._2._2._2._1, Data$dTuple.$Tuple(v._2._2._2._2._2._2._1, Data$dTuple.$Tuple(o(v._2._2._2._2._2._2._2._1), v._2._2._2._2._2._2._2._2))) + ) + ) + ) + ) +); +const over7 = o => v => Data$dTuple.$Tuple( + v._1, + Data$dTuple.$Tuple( + v._2._1, + Data$dTuple.$Tuple( + v._2._2._1, + Data$dTuple.$Tuple( + v._2._2._2._1, + Data$dTuple.$Tuple(v._2._2._2._2._1, Data$dTuple.$Tuple(v._2._2._2._2._2._1, Data$dTuple.$Tuple(o(v._2._2._2._2._2._2._1), v._2._2._2._2._2._2._2))) + ) + ) + ) +); +const over6 = o => v => Data$dTuple.$Tuple( + v._1, + Data$dTuple.$Tuple( + v._2._1, + Data$dTuple.$Tuple(v._2._2._1, Data$dTuple.$Tuple(v._2._2._2._1, Data$dTuple.$Tuple(v._2._2._2._2._1, Data$dTuple.$Tuple(o(v._2._2._2._2._2._1), v._2._2._2._2._2._2)))) + ) +); +const over5 = o => v => Data$dTuple.$Tuple( + v._1, + Data$dTuple.$Tuple(v._2._1, Data$dTuple.$Tuple(v._2._2._1, Data$dTuple.$Tuple(v._2._2._2._1, Data$dTuple.$Tuple(o(v._2._2._2._2._1), v._2._2._2._2._2)))) +); +const over4 = o => v => Data$dTuple.$Tuple(v._1, Data$dTuple.$Tuple(v._2._1, Data$dTuple.$Tuple(v._2._2._1, Data$dTuple.$Tuple(o(v._2._2._2._1), v._2._2._2._2)))); +const over3 = o => v => Data$dTuple.$Tuple(v._1, Data$dTuple.$Tuple(v._2._1, Data$dTuple.$Tuple(o(v._2._2._1), v._2._2._2))); +const over2 = o => v => Data$dTuple.$Tuple(v._1, Data$dTuple.$Tuple(o(v._2._1), v._2._2)); +const over10 = o => v => Data$dTuple.$Tuple( + v._1, + Data$dTuple.$Tuple( + v._2._1, + Data$dTuple.$Tuple( + v._2._2._1, + Data$dTuple.$Tuple( + v._2._2._2._1, + Data$dTuple.$Tuple( + v._2._2._2._2._1, + Data$dTuple.$Tuple( + v._2._2._2._2._2._1, + Data$dTuple.$Tuple( + v._2._2._2._2._2._2._1, + Data$dTuple.$Tuple( + v._2._2._2._2._2._2._2._1, + Data$dTuple.$Tuple(v._2._2._2._2._2._2._2._2._1, Data$dTuple.$Tuple(o(v._2._2._2._2._2._2._2._2._2._1), v._2._2._2._2._2._2._2._2._2._2)) + ) + ) + ) + ) + ) + ) + ) +); +const over1 = o => v => Data$dTuple.$Tuple(o(v._1), v._2); +const get9 = v => v._2._2._2._2._2._2._2._2._1; +const get8 = v => v._2._2._2._2._2._2._2._1; +const get7 = v => v._2._2._2._2._2._2._1; +const get6 = v => v._2._2._2._2._2._1; +const get5 = v => v._2._2._2._2._1; +const get4 = v => v._2._2._2._1; +const get3 = v => v._2._2._1; +const get2 = v => v._2._1; +const get10 = v => v._2._2._2._2._2._2._2._2._2._1; +const get1 = v => v._1; +const curry9 = z => f$p => a => b => c => d => e => f => g => h => i => f$p(Data$dTuple.$Tuple( + a, + Data$dTuple.$Tuple( + b, + Data$dTuple.$Tuple(c, Data$dTuple.$Tuple(d, Data$dTuple.$Tuple(e, Data$dTuple.$Tuple(f, Data$dTuple.$Tuple(g, Data$dTuple.$Tuple(h, Data$dTuple.$Tuple(i, z))))))) + ) +)); +const curry8 = z => f$p => a => b => c => d => e => f => g => h => f$p(Data$dTuple.$Tuple( + a, + Data$dTuple.$Tuple(b, Data$dTuple.$Tuple(c, Data$dTuple.$Tuple(d, Data$dTuple.$Tuple(e, Data$dTuple.$Tuple(f, Data$dTuple.$Tuple(g, Data$dTuple.$Tuple(h, z))))))) +)); +const curry7 = z => f$p => a => b => c => d => e => f => g => f$p(Data$dTuple.$Tuple( + a, + Data$dTuple.$Tuple(b, Data$dTuple.$Tuple(c, Data$dTuple.$Tuple(d, Data$dTuple.$Tuple(e, Data$dTuple.$Tuple(f, Data$dTuple.$Tuple(g, z)))))) +)); +const curry6 = z => f$p => a => b => c => d => e => f => f$p(Data$dTuple.$Tuple( + a, + Data$dTuple.$Tuple(b, Data$dTuple.$Tuple(c, Data$dTuple.$Tuple(d, Data$dTuple.$Tuple(e, Data$dTuple.$Tuple(f, z))))) +)); +const curry5 = z => f => a => b => c => d => e => f(Data$dTuple.$Tuple(a, Data$dTuple.$Tuple(b, Data$dTuple.$Tuple(c, Data$dTuple.$Tuple(d, Data$dTuple.$Tuple(e, z)))))); +const curry4 = z => f => a => b => c => d => f(Data$dTuple.$Tuple(a, Data$dTuple.$Tuple(b, Data$dTuple.$Tuple(c, Data$dTuple.$Tuple(d, z))))); +const curry3 = z => f => a => b => c => f(Data$dTuple.$Tuple(a, Data$dTuple.$Tuple(b, Data$dTuple.$Tuple(c, z)))); +const curry2 = z => f => a => b => f(Data$dTuple.$Tuple(a, Data$dTuple.$Tuple(b, z))); +const curry10 = z => f$p => a => b => c => d => e => f => g => h => i => j => f$p(Data$dTuple.$Tuple( + a, + Data$dTuple.$Tuple( + b, + Data$dTuple.$Tuple( + c, + Data$dTuple.$Tuple(d, Data$dTuple.$Tuple(e, Data$dTuple.$Tuple(f, Data$dTuple.$Tuple(g, Data$dTuple.$Tuple(h, Data$dTuple.$Tuple(i, Data$dTuple.$Tuple(j, z))))))) + ) + ) +)); +const curry1 = z => f => a => f(Data$dTuple.$Tuple(a, z)); +export { + curry1, + curry10, + curry2, + curry3, + curry4, + curry5, + curry6, + curry7, + curry8, + curry9, + get1, + get10, + get2, + get3, + get4, + get5, + get6, + get7, + get8, + get9, + over1, + over10, + over2, + over3, + over4, + over5, + over6, + over7, + over8, + over9, + tuple1, + tuple10, + tuple2, + tuple3, + tuple4, + tuple5, + tuple6, + tuple7, + tuple8, + tuple9, + uncurry1, + uncurry10, + uncurry2, + uncurry3, + uncurry4, + uncurry5, + uncurry6, + uncurry7, + uncurry8, + uncurry9 +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Tuple/index.js b/.storybook/purescript-indexer/output-es/Data.Tuple/index.js new file mode 100644 index 0000000..03fdd0d --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Tuple/index.js @@ -0,0 +1,151 @@ +// | A data type and functions for working with ordered pairs. +import * as $runtime from "../runtime.js"; +import * as Data$dGeneric$dRep from "../Data.Generic.Rep/index.js"; +import * as Data$dOrdering from "../Data.Ordering/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +const $Tuple = (_1, _2) => ({tag: "Tuple", _1, _2}); +const Tuple = value0 => value1 => $Tuple(value0, value1); +const uncurry = f => v => f(v._1)(v._2); +const swap = v => $Tuple(v._2, v._1); +const snd = v => v._2; +const showTuple = dictShow => dictShow1 => ({show: v => "(Tuple " + (dictShow.show(v._1) + (" " + (dictShow1.show(v._2) + ")")))}); +const semiringTuple = dictSemiring => dictSemiring1 => ( + { + add: v => v1 => $Tuple(dictSemiring.add(v._1)(v1._1), dictSemiring1.add(v._2)(v1._2)), + one: $Tuple(dictSemiring.one, dictSemiring1.one), + mul: v => v1 => $Tuple(dictSemiring.mul(v._1)(v1._1), dictSemiring1.mul(v._2)(v1._2)), + zero: $Tuple(dictSemiring.zero, dictSemiring1.zero) + } +); +const semigroupoidTuple = {compose: v => v1 => $Tuple(v1._1, v._2)}; +const semigroupTuple = dictSemigroup => dictSemigroup1 => ({append: v => v1 => $Tuple(dictSemigroup.append(v._1)(v1._1), dictSemigroup1.append(v._2)(v1._2))}); +const ringTuple = dictRing => { + const semiringTuple1 = semiringTuple(dictRing.Semiring0()); + return dictRing1 => { + const semiringTuple2 = semiringTuple1(dictRing1.Semiring0()); + return {sub: v => v1 => $Tuple(dictRing.sub(v._1)(v1._1), dictRing1.sub(v._2)(v1._2)), Semiring0: () => semiringTuple2}; + }; +}; +const monoidTuple = dictMonoid => { + const semigroupTuple1 = semigroupTuple(dictMonoid.Semigroup0()); + return dictMonoid1 => { + const semigroupTuple2 = semigroupTuple1(dictMonoid1.Semigroup0()); + return {mempty: $Tuple(dictMonoid.mempty, dictMonoid1.mempty), Semigroup0: () => semigroupTuple2}; + }; +}; +const heytingAlgebraTuple = dictHeytingAlgebra => dictHeytingAlgebra1 => ( + { + tt: $Tuple(dictHeytingAlgebra.tt, dictHeytingAlgebra1.tt), + ff: $Tuple(dictHeytingAlgebra.ff, dictHeytingAlgebra1.ff), + implies: v => v1 => $Tuple(dictHeytingAlgebra.implies(v._1)(v1._1), dictHeytingAlgebra1.implies(v._2)(v1._2)), + conj: v => v1 => $Tuple(dictHeytingAlgebra.conj(v._1)(v1._1), dictHeytingAlgebra1.conj(v._2)(v1._2)), + disj: v => v1 => $Tuple(dictHeytingAlgebra.disj(v._1)(v1._1), dictHeytingAlgebra1.disj(v._2)(v1._2)), + not: v => $Tuple(dictHeytingAlgebra.not(v._1), dictHeytingAlgebra1.not(v._2)) + } +); +const genericTuple = {to: x => $Tuple(x._1, x._2), from: x => Data$dGeneric$dRep.$Product(x._1, x._2)}; +const functorTuple = {map: f => m => $Tuple(m._1, f(m._2))}; +const invariantTuple = {imap: f => v => functorTuple.map(f)}; +const fst = v => v._1; +const lazyTuple = dictLazy => dictLazy1 => ({defer: f => $Tuple(dictLazy.defer(v => f(Data$dUnit.unit)._1), dictLazy1.defer(v => f(Data$dUnit.unit)._2))}); +const extendTuple = {extend: f => v => $Tuple(v._1, f(v)), Functor0: () => functorTuple}; +const eqTuple = dictEq => dictEq1 => ({eq: x => y => dictEq.eq(x._1)(y._1) && dictEq1.eq(x._2)(y._2)}); +const ordTuple = dictOrd => { + const $1 = dictOrd.Eq0(); + return dictOrd1 => { + const $3 = dictOrd1.Eq0(); + const eqTuple2 = {eq: x => y => $1.eq(x._1)(y._1) && $3.eq(x._2)(y._2)}; + return { + compare: x => y => { + const v = dictOrd.compare(x._1)(y._1); + if (v.tag === "LT") { return Data$dOrdering.LT; } + if (v.tag === "GT") { return Data$dOrdering.GT; } + return dictOrd1.compare(x._2)(y._2); + }, + Eq0: () => eqTuple2 + }; + }; +}; +const eq1Tuple = dictEq => ({eq1: dictEq1 => x => y => dictEq.eq(x._1)(y._1) && dictEq1.eq(x._2)(y._2)}); +const ord1Tuple = dictOrd => { + const ordTuple1 = ordTuple(dictOrd); + const $2 = dictOrd.Eq0(); + const eq1Tuple1 = {eq1: dictEq1 => x => y => $2.eq(x._1)(y._1) && dictEq1.eq(x._2)(y._2)}; + return {compare1: dictOrd1 => ordTuple1(dictOrd1).compare, Eq10: () => eq1Tuple1}; +}; +const curry = f => a => b => f($Tuple(a, b)); +const comonadTuple = {extract: snd, Extend0: () => extendTuple}; +const commutativeRingTuple = dictCommutativeRing => { + const ringTuple1 = ringTuple(dictCommutativeRing.Ring0()); + return dictCommutativeRing1 => { + const ringTuple2 = ringTuple1(dictCommutativeRing1.Ring0()); + return {Ring0: () => ringTuple2}; + }; +}; +const boundedTuple = dictBounded => { + const ordTuple1 = ordTuple(dictBounded.Ord0()); + return dictBounded1 => { + const ordTuple2 = ordTuple1(dictBounded1.Ord0()); + return {top: $Tuple(dictBounded.top, dictBounded1.top), bottom: $Tuple(dictBounded.bottom, dictBounded1.bottom), Ord0: () => ordTuple2}; + }; +}; +const booleanAlgebraTuple = dictBooleanAlgebra => { + const heytingAlgebraTuple1 = heytingAlgebraTuple(dictBooleanAlgebra.HeytingAlgebra0()); + return dictBooleanAlgebra1 => { + const heytingAlgebraTuple2 = heytingAlgebraTuple1(dictBooleanAlgebra1.HeytingAlgebra0()); + return {HeytingAlgebra0: () => heytingAlgebraTuple2}; + }; +}; +const applyTuple = dictSemigroup => ({apply: v => v1 => $Tuple(dictSemigroup.append(v._1)(v1._1), v._2(v1._2)), Functor0: () => functorTuple}); +const bindTuple = dictSemigroup => { + const applyTuple1 = applyTuple(dictSemigroup); + return { + bind: v => f => { + const v1 = f(v._2); + return $Tuple(dictSemigroup.append(v._1)(v1._1), v1._2); + }, + Apply0: () => applyTuple1 + }; +}; +const applicativeTuple = dictMonoid => { + const applyTuple1 = applyTuple(dictMonoid.Semigroup0()); + return {pure: Tuple(dictMonoid.mempty), Apply0: () => applyTuple1}; +}; +const monadTuple = dictMonoid => { + const applicativeTuple1 = applicativeTuple(dictMonoid); + const bindTuple1 = bindTuple(dictMonoid.Semigroup0()); + return {Applicative0: () => applicativeTuple1, Bind1: () => bindTuple1}; +}; +export { + $Tuple, + Tuple, + applicativeTuple, + applyTuple, + bindTuple, + booleanAlgebraTuple, + boundedTuple, + commutativeRingTuple, + comonadTuple, + curry, + eq1Tuple, + eqTuple, + extendTuple, + fst, + functorTuple, + genericTuple, + heytingAlgebraTuple, + invariantTuple, + lazyTuple, + monadTuple, + monoidTuple, + ord1Tuple, + ordTuple, + ringTuple, + semigroupTuple, + semigroupoidTuple, + semiringTuple, + showTuple, + snd, + swap, + uncurry +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Unfoldable/foreign.js b/.storybook/purescript-indexer/output-es/Data.Unfoldable/foreign.js new file mode 100644 index 0000000..9d9aa8e --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Unfoldable/foreign.js @@ -0,0 +1,21 @@ +export const unfoldrArrayImpl = function (isNothing) { + return function (fromJust) { + return function (fst) { + return function (snd) { + return function (f) { + return function (b) { + var result = []; + var value = b; + while (true) { // eslint-disable-line no-constant-condition + var maybe = f(value); + if (isNothing(maybe)) return result; + var tuple = fromJust(maybe); + result.push(fst(tuple)); + value = snd(tuple); + } + }; + }; + }; + }; + }; +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Unfoldable/index.js b/.storybook/purescript-indexer/output-es/Data.Unfoldable/index.js new file mode 100644 index 0000000..9ef543e --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Unfoldable/index.js @@ -0,0 +1,43 @@ +// | This module provides a type class for _unfoldable functors_, i.e. +// | functors which support an `unfoldr` operation. +// | +// | This allows us to unify various operations on arrays, lists, +// | sequences, etc. +import * as $runtime from "../runtime.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +import * as Data$dUnfoldable1 from "../Data.Unfoldable1/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +import {unfoldrArrayImpl} from "./foreign.js"; +const fromJust = v => { + if (v.tag === "Just") { return v._1; } + $runtime.fail(); +}; +const unfoldr = dict => dict.unfoldr; +const unfoldableMaybe = { + unfoldr: f => b => { + const $2 = f(b); + if ($2.tag === "Just") { return Data$dMaybe.$Maybe("Just", $2._1._1); } + return Data$dMaybe.Nothing; + }, + Unfoldable10: () => Data$dUnfoldable1.unfoldable1Maybe +}; +const unfoldableArray = { + unfoldr: /* #__PURE__ */ unfoldrArrayImpl(Data$dMaybe.isNothing)(fromJust)(Data$dTuple.fst)(Data$dTuple.snd), + Unfoldable10: () => Data$dUnfoldable1.unfoldable1Array +}; +const replicate = dictUnfoldable => n => v => dictUnfoldable.unfoldr(i => { + if (i <= 0) { return Data$dMaybe.Nothing; } + return Data$dMaybe.$Maybe("Just", Data$dTuple.$Tuple(v, i - 1 | 0)); +})(n); +const replicateA = dictApplicative => dictUnfoldable => dictTraversable => { + const sequence = dictTraversable.sequence(dictApplicative); + return n => m => sequence(replicate(dictUnfoldable)(n)(m)); +}; +const none = dictUnfoldable => dictUnfoldable.unfoldr(v => Data$dMaybe.Nothing)(Data$dUnit.unit); +const fromMaybe = dictUnfoldable => dictUnfoldable.unfoldr(b => { + if (b.tag === "Just") { return Data$dMaybe.$Maybe("Just", Data$dTuple.$Tuple(b._1, Data$dMaybe.Nothing)); } + return Data$dMaybe.Nothing; +}); +export {fromJust, fromMaybe, none, replicate, replicateA, unfoldableArray, unfoldableMaybe, unfoldr}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Data.Unfoldable1/foreign.js b/.storybook/purescript-indexer/output-es/Data.Unfoldable1/foreign.js new file mode 100644 index 0000000..4993bd1 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Unfoldable1/foreign.js @@ -0,0 +1,21 @@ +export const unfoldr1ArrayImpl = function (isNothing) { + return function (fromJust) { + return function (fst) { + return function (snd) { + return function (f) { + return function (b) { + var result = []; + var value = b; + while (true) { // eslint-disable-line no-constant-condition + var tuple = f(value); + result.push(fst(tuple)); + var maybe = snd(tuple); + if (isNothing(maybe)) return result; + value = fromJust(maybe); + } + }; + }; + }; + }; + }; +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Unfoldable1/index.js b/.storybook/purescript-indexer/output-es/Data.Unfoldable1/index.js new file mode 100644 index 0000000..37bb8a3 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Unfoldable1/index.js @@ -0,0 +1,45 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +import {unfoldr1ArrayImpl} from "./foreign.js"; +const fromJust = v => { + if (v.tag === "Just") { return v._1; } + $runtime.fail(); +}; +const unfoldr1 = dict => dict.unfoldr1; +const unfoldable1Maybe = {unfoldr1: f => b => Data$dMaybe.$Maybe("Just", f(b)._1)}; +const unfoldable1Array = {unfoldr1: /* #__PURE__ */ unfoldr1ArrayImpl(Data$dMaybe.isNothing)(fromJust)(Data$dTuple.fst)(Data$dTuple.snd)}; +const replicate1 = dictUnfoldable1 => n => v => dictUnfoldable1.unfoldr1(i => { + if (i <= 0) { return Data$dTuple.$Tuple(v, Data$dMaybe.Nothing); } + return Data$dTuple.$Tuple(v, Data$dMaybe.$Maybe("Just", i - 1 | 0)); +})(n - 1 | 0); +const replicate1A = dictApply => dictUnfoldable1 => dictTraversable1 => { + const sequence1 = dictTraversable1.sequence1(dictApply); + return n => m => sequence1(replicate1(dictUnfoldable1)(n)(m)); +}; +const singleton = dictUnfoldable1 => replicate1(dictUnfoldable1)(1); +const range = dictUnfoldable1 => start => end => dictUnfoldable1.unfoldr1((() => { + const $3 = (() => { + if (end >= start) { return 1; } + return -1; + })(); + return i => { + const i$p = i + $3 | 0; + return Data$dTuple.$Tuple( + i, + (() => { + if (i === end) { return Data$dMaybe.Nothing; } + return Data$dMaybe.$Maybe("Just", i$p); + })() + ); + }; +})())(start); +const iterateN = dictUnfoldable1 => n => f => s => dictUnfoldable1.unfoldr1(v => Data$dTuple.$Tuple( + v._1, + (() => { + if (v._2 > 0) { return Data$dMaybe.$Maybe("Just", Data$dTuple.$Tuple(f(v._1), v._2 - 1 | 0)); } + return Data$dMaybe.Nothing; + })() +))(Data$dTuple.$Tuple(s, n - 1 | 0)); +export {fromJust, iterateN, range, replicate1, replicate1A, singleton, unfoldable1Array, unfoldable1Maybe, unfoldr1}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Data.Unit/foreign.js b/.storybook/purescript-indexer/output-es/Data.Unit/foreign.js new file mode 100644 index 0000000..3eff8c2 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Unit/foreign.js @@ -0,0 +1 @@ +export const unit = undefined; diff --git a/.storybook/purescript-indexer/output-es/Data.Unit/index.js b/.storybook/purescript-indexer/output-es/Data.Unit/index.js new file mode 100644 index 0000000..2eee96b --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Unit/index.js @@ -0,0 +1,4 @@ +import * as $runtime from "../runtime.js"; +import {unit} from "./foreign.js"; +export {}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Data.Variant.Internal/index.js b/.storybook/purescript-indexer/output-es/Data.Variant.Internal/index.js new file mode 100644 index 0000000..fccd43f --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Variant.Internal/index.js @@ -0,0 +1,401 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dList$dTypes from "../Data.List.Types/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dOrd from "../Data.Ord/index.js"; +import * as Partial from "../Partial/index.js"; +import * as Type$dProxy from "../Type.Proxy/index.js"; +const VariantRep = x => x; +const variantTravNil = {}; +const variantTravCons = () => () => () => dictTypeEquals => ({}); +const variantTagsNil = {variantTags: v => Data$dList$dTypes.Nil}; +const variantTags = dict => dict.variantTags; +const variantTagsCons = dictVariantTags => dictIsSymbol => ( + {variantTags: v => Data$dList$dTypes.$List("Cons", dictIsSymbol.reflectSymbol(Type$dProxy.Proxy), dictVariantTags.variantTags(Type$dProxy.Proxy))} +); +const variantMatchNil = {}; +const variantMatchCons = () => () => dictTypeEquals => ({}); +const variantMapNil = {}; +const variantMapCons = () => () => () => dictTypeEquals => ({}); +const variantFTravNil = {}; +const variantFTravCons = () => () => () => dictTypeEquals => ({}); +const variantFMatchNil = {}; +const variantFMatchCons = () => () => dictTypeEquals => ({}); +const variantFMapNil = {}; +const variantFMapCons = () => () => () => dictTypeEquals => ({}); +const lookupToEnum = /* #__PURE__ */ (() => { + const go = go$a0$copy => go$a1$copy => go$a2$copy => { + let go$a0 = go$a0$copy, go$a1 = go$a1$copy, go$a2 = go$a2$copy, go$c = true, go$r; + while (go$c) { + const ix = go$a0, v = go$a1, v1 = go$a2; + if (v.tag === "Cons") { + if (v1.tag === "Cons") { + if (v1._1.cardinality > ix) { + const v2 = v1._1.toEnum(ix); + if (v2.tag === "Just") { + go$c = false; + go$r = Data$dMaybe.$Maybe("Just", {type: v._1, value: v2._1}); + continue; + } + go$c = false; + go$r = Data$dMaybe.Nothing; + continue; + } + go$a0 = ix - v1._1.cardinality | 0; + go$a1 = v._2; + go$a2 = v1._2; + continue; + } + go$c = false; + go$r = Data$dMaybe.Nothing; + continue; + } + go$c = false; + go$r = Data$dMaybe.Nothing; + continue; + }; + return go$r; + }; + return go; +})(); +const lookupTag = tag => { + 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 === "Cons") { + if (v._1 === tag) { + go$c = false; + go$r = true; + continue; + } + go$a0 = v._2; + continue; + } + if (v.tag === "Nil") { + go$c = false; + go$r = false; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go; +}; +const lookupCardinality = /* #__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 acc = go$a0, v = go$a1; + if (v.tag === "Cons") { + go$a0 = acc + v._1.cardinality | 0; + go$a1 = v._2; + continue; + } + if (v.tag === "Nil") { + go$c = false; + go$r = acc; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go(0); +})(); +const impossible = str => Partial._crashWith("Data.Variant: impossible `" + (str + "`")); +const lookup = name => tag => { + 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 === "Cons") { + if (v1.tag === "Cons") { + if (v._1 === tag) { + go$c = false; + go$r = v1._1; + continue; + } + go$a0 = v._2; + go$a1 = v1._2; + continue; + } + go$c = false; + go$r = Partial._crashWith("Data.Variant: impossible `" + (name + "`")); + continue; + } + go$c = false; + go$r = Partial._crashWith("Data.Variant: impossible `" + (name + "`")); + continue; + }; + return go$r; + }; + return go; +}; +const lookupEq = tags => eqs => v => v1 => { + if (v.type === v1.type) { return lookup("eq")(v.type)(tags)(eqs)(v.value)(v1.value); } + return false; +}; +const lookupOrd = tags => ords => v => v1 => { + const v3 = Data$dOrd.ordString.compare(v.type)(v1.type); + if (v3.tag === "EQ") { return lookup("compare")(v.type)(tags)(ords)(v.value)(v1.value); } + return v3; +}; +const lookupFirst = name => f => v => v1 => { + if (v.tag === "Cons") { + if (v1.tag === "Cons") { return {type: v._1, value: f(v1._1)}; } + return Partial._crashWith("Data.Variant: impossible `" + (name + "`")); + } + return Partial._crashWith("Data.Variant: impossible `" + (name + "`")); +}; +const lookupFromEnum = v => { + const go = go$a0$copy => go$a1$copy => go$a2$copy => { + let go$a0 = go$a0$copy, go$a1 = go$a1$copy, go$a2 = go$a2$copy, go$c = true, go$r; + while (go$c) { + const acc = go$a0, v1 = go$a1, v2 = go$a2; + if (v1.tag === "Cons") { + if (v2.tag === "Cons") { + if (v1._1 === v.type) { + go$c = false; + go$r = acc + v2._1.fromEnum(v.value) | 0; + continue; + } + go$a0 = acc + v2._1.cardinality | 0; + go$a1 = v1._2; + go$a2 = v2._2; + continue; + } + go$c = false; + go$r = Partial._crashWith("Data.Variant: impossible `fromEnum`"); + continue; + } + go$c = false; + go$r = Partial._crashWith("Data.Variant: impossible `fromEnum`"); + continue; + }; + return go$r; + }; + return go(0); +}; +const lookupLast = name => 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 v = go$a0, v1 = go$a1; + if (v.tag === "Cons") { + if (v1.tag === "Cons") { + if (v._2.tag === "Nil") { + if (v1._2.tag === "Nil") { + go$c = false; + go$r = {type: v._1, value: f(v1._1)}; + continue; + } + go$a0 = v._2; + go$a1 = v1._2; + continue; + } + go$a0 = v._2; + go$a1 = v1._2; + continue; + } + go$c = false; + go$r = Partial._crashWith("Data.Variant: impossible `" + (name + "`")); + continue; + } + go$c = false; + go$r = Partial._crashWith("Data.Variant: impossible `" + (name + "`")); + continue; + }; + return go$r; + }; + return go; +}; +const lookupPred = v => { + const go2 = go2$a0$copy => go2$a1$copy => go2$a2$copy => go2$a3$copy => go2$a4$copy => go2$a5$copy => { + let go2$a0 = go2$a0$copy, go2$a1 = go2$a1$copy, go2$a2 = go2$a2$copy, go2$a3 = go2$a3$copy, go2$a4 = go2$a4$copy, go2$a5 = go2$a5$copy, go2$c = true, go2$r; + while (go2$c) { + const t1 = go2$a0, b1 = go2$a1, v1 = go2$a2, v2 = go2$a3, v3 = go2$a4, v4 = go2$a5; + if (v2.tag === "Cons") { + if (v3.tag === "Cons") { + if (v4.tag === "Cons") { + if (v2._1 === v.type) { + const v5 = v4._1.pred(v.value); + if (v5.tag === "Nothing") { + go2$c = false; + go2$r = Data$dMaybe.$Maybe("Just", {type: t1, value: b1.top}); + continue; + } + if (v5.tag === "Just") { + go2$c = false; + go2$r = Data$dMaybe.$Maybe("Just", {type: v.type, value: v5._1}); + continue; + } + $runtime.fail(); + } + go2$a0 = v2._1; + go2$a1 = v3._1; + go2$a2 = v4._1; + go2$a3 = v2._2; + go2$a4 = v3._2; + go2$a5 = v4._2; + continue; + } + go2$c = false; + go2$r = Partial._crashWith("Data.Variant: impossible `pred`"); + continue; + } + go2$c = false; + go2$r = Partial._crashWith("Data.Variant: impossible `pred`"); + continue; + } + go2$c = false; + go2$r = Partial._crashWith("Data.Variant: impossible `pred`"); + continue; + }; + return go2$r; + }; + return v1 => v2 => v3 => { + if (v1.tag === "Cons") { + if (v2.tag === "Cons") { + if (v3.tag === "Cons") { + if (v1._1 === v.type) { + const v4 = v3._1.pred(v.value); + if (v4.tag === "Nothing") { return Data$dMaybe.Nothing; } + if (v4.tag === "Just") { return Data$dMaybe.$Maybe("Just", {type: v.type, value: v4._1}); } + $runtime.fail(); + } + return go2(v1._1)(v2._1)(v3._1)(v1._2)(v2._2)(v3._2); + } + return Partial._crashWith("Data.Variant: impossible `pred`"); + } + return Partial._crashWith("Data.Variant: impossible `pred`"); + } + return Partial._crashWith("Data.Variant: impossible `pred`"); + }; +}; +const lookupSucc = v => { + const go = go$a0$copy => go$a1$copy => go$a2$copy => { + let go$a0 = go$a0$copy, go$a1 = go$a1$copy, go$a2 = go$a2$copy, go$c = true, go$r; + while (go$c) { + const v1 = go$a0, v2 = go$a1, v3 = go$a2; + if (v1.tag === "Cons") { + if (v2.tag === "Cons") { + if (v3.tag === "Cons") { + if (v1._1 === v.type) { + const v4 = v3._1.succ(v.value); + if (v4.tag === "Just") { + go$c = false; + go$r = Data$dMaybe.$Maybe("Just", {type: v1._1, value: v4._1}); + continue; + } + if (v4.tag === "Nothing") { + if (v1._2.tag === "Cons") { + if (v2._2.tag === "Cons") { + go$c = false; + go$r = Data$dMaybe.$Maybe("Just", {type: v1._2._1, value: v2._2._1.bottom}); + continue; + } + go$c = false; + go$r = Data$dMaybe.Nothing; + continue; + } + go$c = false; + go$r = Data$dMaybe.Nothing; + continue; + } + $runtime.fail(); + } + go$a0 = v1._2; + go$a1 = v2._2; + go$a2 = v3._2; + continue; + } + go$c = false; + go$r = Partial._crashWith("Data.Variant: impossible `succ`"); + continue; + } + go$c = false; + go$r = Partial._crashWith("Data.Variant: impossible `succ`"); + continue; + } + go$c = false; + go$r = Partial._crashWith("Data.Variant: impossible `succ`"); + continue; + }; + return go$r; + }; + return go; +}; +const contractWithInstance = () => () => dictVariantTags => ( + { + contractWith: dictAlternative => { + const pure = dictAlternative.Applicative0().pure; + const empty = dictAlternative.Plus1().empty; + return v => v1 => tag => a => { + if ( + (() => { + const go = go$a0$copy => { + let go$a0 = go$a0$copy, go$c = true, go$r; + while (go$c) { + const v$1 = go$a0; + if (v$1.tag === "Cons") { + if (v$1._1 === tag) { + go$c = false; + go$r = true; + continue; + } + go$a0 = v$1._2; + continue; + } + if (v$1.tag === "Nil") { + go$c = false; + go$r = false; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go(dictVariantTags.variantTags(Type$dProxy.Proxy)); + })() + ) { + return pure(a); + } + return empty; + }; + } + } +); +const contractWith = dict => dict.contractWith; +export { + VariantRep, + contractWith, + contractWithInstance, + impossible, + lookup, + lookupCardinality, + lookupEq, + lookupFirst, + lookupFromEnum, + lookupLast, + lookupOrd, + lookupPred, + lookupSucc, + lookupTag, + lookupToEnum, + variantFMapCons, + variantFMapNil, + variantFMatchCons, + variantFMatchNil, + variantFTravCons, + variantFTravNil, + variantMapCons, + variantMapNil, + variantMatchCons, + variantMatchNil, + variantTags, + variantTagsCons, + variantTagsNil, + variantTravCons, + variantTravNil +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Variant/index.js b/.storybook/purescript-indexer/output-es/Data.Variant/index.js new file mode 100644 index 0000000..789c794 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Variant/index.js @@ -0,0 +1,219 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dList$dTypes from "../Data.List.Types/index.js"; +import * as Data$dShow from "../Data.Show/index.js"; +import * as Data$dVariant$dInternal from "../Data.Variant.Internal/index.js"; +import * as Partial from "../Partial/index.js"; +import * as Record$dUnsafe from "../Record.Unsafe/index.js"; +import * as Type$dProxy from "../Type.Proxy/index.js"; +import * as Unsafe$dCoerce from "../Unsafe.Coerce/index.js"; +const Unvariant = x => x; +const variantShows = dict => dict.variantShows; +const variantOrds = dict => dict.variantOrds; +const variantEqs = dict => dict.variantEqs; +const variantBoundedEnums = dict => dict.variantBoundedEnums; +const variantBounded = dict => dict.variantBounded; +const unvariant = v => f => f({reflectSymbol: v$1 => v.type})()(Type$dProxy.Proxy)(v.value); +const traverseSome = () => () => () => () => dictFunctor => r => k => v => { + if (Record$dUnsafe.unsafeHas(v.type)(r)) { return dictFunctor.map(value => ({type: v.type, value: value}))(Record$dUnsafe.unsafeGet(v.type)(r)(v.value)); } + return k(v); +}; +const traverse = () => () => () => () => dictApplicative => { + const traverseSome2 = traverseSome()()()()(dictApplicative.Apply0().Functor0()); + return r => traverseSome2(r)(x => dictApplicative.pure(x)); +}; +const showVariantNil = {variantShows: v => Data$dList$dTypes.Nil}; +const showVariantCons = dictVariantShows => dictShow => ({variantShows: v => Data$dList$dTypes.$List("Cons", dictShow.show, dictVariantShows.variantShows(Type$dProxy.Proxy))}); +const showVariant = () => dictVariantTags => dictVariantShows => ( + { + show: v1 => "(inj @" + ( + Data$dShow.showStringImpl(v1.type) + ( + " " + (Data$dVariant$dInternal.lookup("show")(v1.type)(dictVariantTags.variantTags(Type$dProxy.Proxy))(dictVariantShows.variantShows(Type$dProxy.Proxy))(v1.value) + ")") + ) + ) + } +); +const overSome = () => () => () => () => r => k => v => { + if (Record$dUnsafe.unsafeHas(v.type)(r)) { return {type: v.type, value: Record$dUnsafe.unsafeGet(v.type)(r)(v.value)}; } + return k(v); +}; +const over = () => () => () => () => r => overSome()()()()(r)(Unsafe$dCoerce.unsafeCoerce); +const ordVariantNil = {variantOrds: v => Data$dList$dTypes.Nil}; +const ordVariantCons = dictVariantOrds => dictOrd => ({variantOrds: v => Data$dList$dTypes.$List("Cons", dictOrd.compare, dictVariantOrds.variantOrds(Type$dProxy.Proxy))}); +const onMatch = () => () => () => r => k => v => { + if (Record$dUnsafe.unsafeHas(v.type)(r)) { return Record$dUnsafe.unsafeGet(v.type)(r)(v.value); } + return k(v); +}; +const on = () => dictIsSymbol => p => f => g => r => { + if (r.type === dictIsSymbol.reflectSymbol(p)) { return f(r.value); } + return g(r); +}; +const prj = () => dictIsSymbol => dictAlternative => { + const pure = dictAlternative.Applicative0().pure; + const empty = dictAlternative.Plus1().empty; + return p => r => { + if (r.type === dictIsSymbol.reflectSymbol(p)) { return pure(r.value); } + return empty; + }; +}; +const inj = () => dictIsSymbol => p => value => ({type: dictIsSymbol.reflectSymbol(p), value: value}); +const overOne = dictIsSymbol => () => () => p => f => g => r => { + if (r.type === dictIsSymbol.reflectSymbol(p)) { return {type: dictIsSymbol.reflectSymbol(p), value: f(r.value)}; } + return g(r); +}; +const revariant = v => v(dictIsSymbol => () => p => value => ({type: dictIsSymbol.reflectSymbol(p), value: value})); +const traverseOne = dictIsSymbol => () => () => dictFunctor => p => f => { + const $6 = dictFunctor.map(value => ({type: dictIsSymbol.reflectSymbol(p), value: value})); + return g => r => { + if (r.type === dictIsSymbol.reflectSymbol(p)) { return $6(f(r.value)); } + return g(r); + }; +}; +const expand = () => Unsafe$dCoerce.unsafeCoerce; +const eqVariantNil = {variantEqs: v => Data$dList$dTypes.Nil}; +const eqVariantCons = dictVariantEqs => dictEq => ({variantEqs: v => Data$dList$dTypes.$List("Cons", dictEq.eq, dictVariantEqs.variantEqs(Type$dProxy.Proxy))}); +const eqVariant = () => dictVariantTags => dictVariantEqs => ( + {eq: v1 => v2 => Data$dVariant$dInternal.lookupEq(dictVariantTags.variantTags(Type$dProxy.Proxy))(dictVariantEqs.variantEqs(Type$dProxy.Proxy))(v1)(v2)} +); +const ordVariant = () => dictVariantTags => dictVariantEqs => { + const eqVariant3 = eqVariant()(dictVariantTags)(dictVariantEqs); + return dictVariantOrds => ( + { + compare: v1 => v2 => Data$dVariant$dInternal.lookupOrd(dictVariantTags.variantTags(Type$dProxy.Proxy))(dictVariantOrds.variantOrds(Type$dProxy.Proxy))(v1)(v2), + Eq0: () => eqVariant3 + } + ); +}; +const enumVariant = () => dictVariantTags => dictVariantEqs => { + const ordVariant3 = ordVariant()(dictVariantTags)(dictVariantEqs); + return dictVariantOrds => { + const ordVariant4 = ordVariant3(dictVariantOrds); + return dictVariantBoundedEnums => { + const variantBounded1 = dictVariantBoundedEnums.VariantBounded0().variantBounded; + return { + pred: a => Data$dVariant$dInternal.lookupPred(a)(dictVariantTags.variantTags(Type$dProxy.Proxy))(variantBounded1(Type$dProxy.Proxy))(dictVariantBoundedEnums.variantBoundedEnums(Type$dProxy.Proxy)), + succ: a => Data$dVariant$dInternal.lookupSucc(a)(dictVariantTags.variantTags(Type$dProxy.Proxy))(variantBounded1(Type$dProxy.Proxy))(dictVariantBoundedEnums.variantBoundedEnums(Type$dProxy.Proxy)), + Ord0: () => ordVariant4 + }; + }; + }; +}; +const $$default = a => v => a; +const contract = dictAlternative => dictContractable => { + const contractWith = dictContractable.contractWith(dictAlternative); + return v => contractWith(Type$dProxy.Proxy)(Type$dProxy.Proxy)(v.type)(v); +}; +const case_ = r => Partial._crashWith("Data.Variant: pattern match failure [" + (r.type + "]")); +const match = () => () => () => r => onMatch()()()(r)(case_); +const boundedVariantNil = {variantBounded: v => Data$dList$dTypes.Nil}; +const enumVariantNil = {variantBoundedEnums: v => Data$dList$dTypes.Nil, VariantBounded0: () => boundedVariantNil}; +const boundedVariantCons = dictVariantBounded => dictBounded => ( + {variantBounded: v => Data$dList$dTypes.$List("Cons", {top: dictBounded.top, bottom: dictBounded.bottom}, dictVariantBounded.variantBounded(Type$dProxy.Proxy))} +); +const enumVariantCons = dictVariantBoundedEnums => { + const boundedVariantCons1 = boundedVariantCons(dictVariantBoundedEnums.VariantBounded0()); + return dictBoundedEnum => { + const Enum1 = dictBoundedEnum.Enum1(); + const boundedVariantCons2 = boundedVariantCons1(dictBoundedEnum.Bounded0()); + return { + variantBoundedEnums: v => Data$dList$dTypes.$List( + "Cons", + {pred: Enum1.pred, succ: Enum1.succ, fromEnum: dictBoundedEnum.fromEnum, toEnum: dictBoundedEnum.toEnum, cardinality: dictBoundedEnum.cardinality}, + dictVariantBoundedEnums.variantBoundedEnums(Type$dProxy.Proxy) + ), + VariantBounded0: () => boundedVariantCons2 + }; + }; +}; +const boundedVariant = () => dictVariantTags => dictVariantEqs => { + const ordVariant3 = ordVariant()(dictVariantTags)(dictVariantEqs); + return dictVariantOrds => { + const ordVariant4 = ordVariant3(dictVariantOrds); + return dictVariantBounded => ( + { + top: Data$dVariant$dInternal.lookupLast("top")(v => v.top)(dictVariantTags.variantTags(Type$dProxy.Proxy))(dictVariantBounded.variantBounded(Type$dProxy.Proxy)), + bottom: Data$dVariant$dInternal.lookupFirst("bottom")(v => v.bottom)(dictVariantTags.variantTags(Type$dProxy.Proxy))(dictVariantBounded.variantBounded(Type$dProxy.Proxy)), + Ord0: () => ordVariant4 + } + ); + }; +}; +const boundedEnumVariant = () => dictVariantTags => dictVariantEqs => { + const boundedVariant3 = boundedVariant()(dictVariantTags)(dictVariantEqs); + const enumVariant3 = enumVariant()(dictVariantTags)(dictVariantEqs); + return dictVariantOrds => { + const boundedVariant4 = boundedVariant3(dictVariantOrds); + const enumVariant4 = enumVariant3(dictVariantOrds); + return dictVariantBoundedEnums => { + const boundedVariant5 = boundedVariant4(dictVariantBoundedEnums.VariantBounded0()); + const enumVariant5 = enumVariant4(dictVariantBoundedEnums); + return { + cardinality: (() => { + 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 acc = go$a0, v = go$a1; + if (v.tag === "Cons") { + go$a0 = acc + v._1.cardinality | 0; + go$a1 = v._2; + continue; + } + if (v.tag === "Nil") { + go$c = false; + go$r = acc; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go(0)(dictVariantBoundedEnums.variantBoundedEnums(Type$dProxy.Proxy)); + })(), + fromEnum: a => Data$dVariant$dInternal.lookupFromEnum(a)(dictVariantTags.variantTags(Type$dProxy.Proxy))(dictVariantBoundedEnums.variantBoundedEnums(Type$dProxy.Proxy)), + toEnum: n => Data$dVariant$dInternal.lookupToEnum(n)(dictVariantTags.variantTags(Type$dProxy.Proxy))(dictVariantBoundedEnums.variantBoundedEnums(Type$dProxy.Proxy)), + Bounded0: () => boundedVariant5, + Enum1: () => enumVariant5 + }; + }; + }; +}; +export { + Unvariant, + boundedEnumVariant, + boundedVariant, + boundedVariantCons, + boundedVariantNil, + case_, + contract, + $$default as default, + enumVariant, + enumVariantCons, + enumVariantNil, + eqVariant, + eqVariantCons, + eqVariantNil, + expand, + inj, + match, + on, + onMatch, + ordVariant, + ordVariantCons, + ordVariantNil, + over, + overOne, + overSome, + prj, + revariant, + showVariant, + showVariantCons, + showVariantNil, + traverse, + traverseOne, + traverseSome, + unvariant, + variantBounded, + variantBoundedEnums, + variantEqs, + variantOrds, + variantShows +}; diff --git a/.storybook/purescript-indexer/output-es/Data.Void/index.js b/.storybook/purescript-indexer/output-es/Data.Void/index.js new file mode 100644 index 0000000..2fea703 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Void/index.js @@ -0,0 +1,14 @@ +import * as $runtime from "../runtime.js"; +const 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; + continue; + }; + return spin$r; + }; + return spin(a); +}; +export {absurd}; diff --git a/.storybook/purescript-indexer/output-es/Data.Yoneda/index.js b/.storybook/purescript-indexer/output-es/Data.Yoneda/index.js new file mode 100644 index 0000000..dcabf82 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Data.Yoneda/index.js @@ -0,0 +1,86 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dSemigroupoid from "../Control.Semigroupoid/index.js"; +const identity = x => x; +const Yoneda = x => x; +const runYoneda = v => k => v(k); +const lowerYoneda = v => v(identity); +const liftYoneda = dictFunctor => m => k => dictFunctor.map(k)(m); +const monadTransYoneda = { + lift: dictMonad => { + const $1 = dictMonad.Bind1().Apply0().Functor0(); + return m => k => $1.map(k)(m); + } +}; +const hoistYoneda = nat => v => x => nat(v(x)); +const functorYoneda = {map: f => m => k => m(x => k(f(x)))}; +const extendYoneda = dictExtend => { + const $1 = dictExtend.Functor0(); + return {extend: f => v => k => dictExtend.extend(x => k(f(k$1 => $1.map(k$1)(x))))(v(identity)), Functor0: () => functorYoneda}; +}; +const eqYoneda = dictEq1 => dictEq => { + const eq11 = dictEq1.eq1(dictEq); + return {eq: x => y => eq11(x(identity))(y(identity))}; +}; +const ordYoneda = dictOrd1 => { + const eqYoneda1 = eqYoneda(dictOrd1.Eq10()); + return dictOrd => { + const compare11 = dictOrd1.compare1(dictOrd); + const eqYoneda2 = eqYoneda1(dictOrd.Eq0()); + return {compare: x => y => compare11(x(identity))(y(identity)), Eq0: () => eqYoneda2}; + }; +}; +const eq1Yoneda = dictEq1 => ({eq1: dictEq => eqYoneda(dictEq1)(dictEq).eq}); +const ord1Yoneda = dictOrd1 => { + const ordYoneda1 = ordYoneda(dictOrd1); + const $2 = dictOrd1.Eq10(); + const eq1Yoneda1 = {eq1: dictEq => eqYoneda($2)(dictEq).eq}; + return {compare1: dictOrd => ordYoneda1(dictOrd).compare, Eq10: () => eq1Yoneda1}; +}; +const comonadYoneda = dictComonad => { + const extendYoneda1 = extendYoneda(dictComonad.Extend0()); + return {extract: x => dictComonad.extract(x(identity)), Extend0: () => extendYoneda1}; +}; +const applyYoneda = dictApply => ({apply: v => v1 => k => dictApply.apply(v(Control$dSemigroupoid.semigroupoidFn.compose(k)))(v1(identity)), Functor0: () => functorYoneda}); +const bindYoneda = dictBind => { + const applyYoneda1 = applyYoneda(dictBind.Apply0()); + return {bind: v => g => k => dictBind.bind(v(identity))(a => g(a)(k)), Apply0: () => applyYoneda1}; +}; +const applicativeYoneda = dictApplicative => { + const Apply0 = dictApplicative.Apply0(); + const applyYoneda1 = applyYoneda(Apply0); + return { + pure: (() => { + const $3 = Apply0.Functor0(); + return x => { + const $5 = dictApplicative.pure(x); + return k => $3.map(k)($5); + }; + })(), + Apply0: () => applyYoneda1 + }; +}; +const monadYoneda = dictMonad => { + const applicativeYoneda1 = applicativeYoneda(dictMonad.Applicative0()); + const bindYoneda1 = bindYoneda(dictMonad.Bind1()); + return {Applicative0: () => applicativeYoneda1, Bind1: () => bindYoneda1}; +}; +export { + Yoneda, + applicativeYoneda, + applyYoneda, + bindYoneda, + comonadYoneda, + eq1Yoneda, + eqYoneda, + extendYoneda, + functorYoneda, + hoistYoneda, + identity, + liftYoneda, + lowerYoneda, + monadTransYoneda, + monadYoneda, + ord1Yoneda, + ordYoneda, + runYoneda +}; diff --git a/.storybook/purescript-indexer/output-es/Debug/foreign.js b/.storybook/purescript-indexer/output-es/Debug/foreign.js new file mode 100644 index 0000000..8377bf9 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Debug/foreign.js @@ -0,0 +1,57 @@ +// Alias require to prevent webpack or browserify from actually requiring. +const req = typeof module === "undefined" ? undefined : module.require; +const util = (function() { + try { + return req === undefined ? undefined : req("util"); + } catch(e) { + return undefined; + } +})(); + +export function _trace(x, k) { + // node only recurses two levels into an object before printing + // "[object]" for further objects when using console.log() + if (util !== undefined) { + console.log(util.inspect(x, { depth: null, colors: true })); + } else { + console.log(x); + } + return k({}); +} + +export function _spy(tag, x) { + if (util !== undefined) { + console.log(tag + ":", util.inspect(x, { depth: null, colors: true })); + } else { + console.log(tag + ":", x); + } + return x; +} + +export function _debugger(f) { + debugger; + return f(); + +} + +const now = (function () { + var perf; + if (typeof performance !== "undefined") { + // In browsers, `performance` is available in the global context + perf = performance; + } else if (req) { + // In Node, `performance` is an export of `perf_hooks` + try { perf = req("perf_hooks").performance; } + catch(e) { } + } + + return (function() { return (perf || Date).now(); }); +})(); + +export function _traceTime(name, f) { + var start = now(); + var res = f(); + var end = now(); + console.log(name + " took " + (end - start) + "ms"); + return res; +} diff --git a/.storybook/purescript-indexer/output-es/Debug/index.js b/.storybook/purescript-indexer/output-es/Debug/index.js new file mode 100644 index 0000000..ce824a6 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Debug/index.js @@ -0,0 +1,16 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +import {_debugger, _spy, _trace, _traceTime} from "./foreign.js"; +const warn = () => ({}); +const traceTime = () => $1 => $2 => _traceTime($1, $2); +const trace = () => a => k => _trace(a, k); +const traceM = () => dictMonad => { + const discard1 = dictMonad.Bind1().bind; + const pure = dictMonad.Applicative0().pure; + return s => discard1(pure(Data$dUnit.unit))(() => _trace(s, v => pure(Data$dUnit.unit))); +}; +const spy = () => tag => a => _spy(tag, a); +const spyWith = () => msg => f => a => a; +const $$debugger = () => f => _debugger(f); +export {$$debugger as debugger, spy, spyWith, trace, traceM, traceTime, warn}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Dodo.Ansi/index.js b/.storybook/purescript-indexer/output-es/Dodo.Ansi/index.js new file mode 100644 index 0000000..c05b2e7 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Dodo.Ansi/index.js @@ -0,0 +1,120 @@ +// | This module provides functions printing with cascading ANSI styles. +// | ANSI annotations closer to the root will cascade down to child nodes, +// | where styles closer to the leaves take precedence. Indentation is +// | never printed with ANSI styles, only the text elements of the document. +import * as $runtime from "../runtime.js"; +import * as Ansi$dCodes from "../Ansi.Codes/index.js"; +import * as Data$dList from "../Data.List/index.js"; +import * as Data$dList$dTypes from "../Data.List.Types/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dNonEmpty from "../Data.NonEmpty/index.js"; +import * as Dodo from "../Dodo/index.js"; +const AnsiBuffer = x => x; +const underline = /* #__PURE__ */ Dodo.annotate(/* #__PURE__ */ Ansi$dCodes.$GraphicsParam("PMode", Ansi$dCodes.Underline)); +const strikethrough = /* #__PURE__ */ Dodo.annotate(/* #__PURE__ */ Ansi$dCodes.$GraphicsParam("PMode", Ansi$dCodes.Strikethrough)); +const reset = /* #__PURE__ */ Dodo.annotate(Ansi$dCodes.Reset); +const italic = /* #__PURE__ */ Dodo.annotate(/* #__PURE__ */ Ansi$dCodes.$GraphicsParam("PMode", Ansi$dCodes.Italic)); +const inverse = /* #__PURE__ */ Dodo.annotate(/* #__PURE__ */ Ansi$dCodes.$GraphicsParam("PMode", Ansi$dCodes.Inverse)); +const foreground = color => Dodo.annotate(Ansi$dCodes.$GraphicsParam("PForeground", color)); +const dim = /* #__PURE__ */ Dodo.annotate(/* #__PURE__ */ Ansi$dCodes.$GraphicsParam("PMode", Ansi$dCodes.Dim)); +const bold = /* #__PURE__ */ Dodo.annotate(/* #__PURE__ */ Ansi$dCodes.$GraphicsParam("PMode", Ansi$dCodes.Bold)); +const background = color => Dodo.annotate(Ansi$dCodes.$GraphicsParam("PBackground", color)); +const ansiGraphics = /* #__PURE__ */ (() => { + const resetCode = Ansi$dCodes.escapeCodeToString(Ansi$dCodes.$EscapeCode("Graphics", Data$dNonEmpty.$NonEmpty(Ansi$dCodes.Reset, Data$dList$dTypes.Nil))); + const $1 = Data$dList.takeWhile(v => !Ansi$dCodes.eqGraphicsParam.eq(v)(Ansi$dCodes.Reset)); + const $2 = Data$dList.nubByEq(v => v1 => { + if (v.tag === "Reset") { return v1.tag === "Reset"; } + if (v.tag === "PForeground") { return v1.tag === "PForeground"; } + if (v.tag === "PBackground") { return v1.tag === "PBackground"; } + if (v.tag === "PMode") { + if (v1.tag === "PMode") { + if (v._1.tag === "Bold") { return v1._1.tag === "Bold"; } + if (v._1.tag === "Dim") { return v1._1.tag === "Dim"; } + if (v._1.tag === "Italic") { return v1._1.tag === "Italic"; } + if (v._1.tag === "Underline") { return v1._1.tag === "Underline"; } + if (v._1.tag === "Inverse") { return v1._1.tag === "Inverse"; } + if (v._1.tag === "Strikethrough") { return v1._1.tag === "Strikethrough"; } + return false; + } + return false; + } + return false; + }); + return { + emptyBuffer: {output: "", pending: Data$dMaybe.Nothing, current: Data$dList$dTypes.Nil, previous: Data$dList$dTypes.Nil}, + writeText: v => text => output => { + if (output.pending.tag === "Nothing") { return {output: output.output + text, pending: output.pending, current: output.current, previous: Data$dList$dTypes.Nil}; } + if (output.pending.tag === "Just") { + return { + output: output.output + Ansi$dCodes.escapeCodeToString(Ansi$dCodes.$EscapeCode("Graphics", output.pending._1)) + text, + pending: Data$dMaybe.Nothing, + current: output.current, + previous: Data$dList$dTypes.Nil + }; + } + $runtime.fail(); + }, + writeIndent: v => text => v1 => ({output: v1.output + text, pending: v1.pending, current: v1.current, previous: v1.previous}), + writeBreak: v => { + const pending = (() => { + if (v.current.tag === "Nil") { return Data$dMaybe.Nothing; } + if (v.current.tag === "Cons") { + return Data$dMaybe.$Maybe("Just", Data$dNonEmpty.$NonEmpty(Ansi$dCodes.Reset, Data$dList$dTypes.$List("Cons", v.current._1, v.current._2))); + } + $runtime.fail(); + })(); + return { + output: (() => { + if ( + (() => { + if (pending.tag === "Nothing") { return true; } + if (pending.tag === "Just") { return false; } + $runtime.fail(); + })() && v.previous.tag === "Nil" + ) { + return v.output + "\n"; + } + return v.output + (resetCode + "\n"); + })(), + pending: pending, + current: v.current, + previous: v.previous + }; + }, + enterAnnotation: a => as => v => { + const current = Data$dList.reverse($2($1(Data$dList$dTypes.$List("Cons", a, as)))); + return { + output: v.output, + pending: (() => { + if (current.tag === "Nil") { return Data$dMaybe.Nothing; } + if (current.tag === "Cons") { return Data$dMaybe.$Maybe("Just", Data$dNonEmpty.$NonEmpty(Ansi$dCodes.Reset, Data$dList$dTypes.$List("Cons", current._1, current._2))); } + $runtime.fail(); + })(), + current: current, + previous: v.current + }; + }, + leaveAnnotation: v => as => v1 => { + const current = Data$dList.reverse($2($1(as))); + return { + output: v1.output, + pending: Data$dMaybe.$Maybe( + "Just", + (() => { + if (current.tag === "Nil") { return Data$dNonEmpty.$NonEmpty(Ansi$dCodes.Reset, Data$dList$dTypes.Nil); } + if (current.tag === "Cons") { return Data$dNonEmpty.$NonEmpty(Ansi$dCodes.Reset, Data$dList$dTypes.$List("Cons", current._1, current._2)); } + $runtime.fail(); + })() + ), + current: current, + previous: v1.current + }; + }, + flushBuffer: ansiBuffer => { + if (ansiBuffer.pending.tag === "Nothing") { return ansiBuffer.output; } + if (ansiBuffer.pending.tag === "Just") { return ansiBuffer.output + Ansi$dCodes.escapeCodeToString(Ansi$dCodes.$EscapeCode("Graphics", ansiBuffer.pending._1)); } + $runtime.fail(); + } + }; +})(); +export {AnsiBuffer, ansiGraphics, background, bold, dim, foreground, inverse, italic, reset, strikethrough, underline}; diff --git a/.storybook/purescript-indexer/output-es/Dodo.Box/index.js b/.storybook/purescript-indexer/output-es/Dodo.Box/index.js new file mode 100644 index 0000000..4f40211 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Dodo.Box/index.js @@ -0,0 +1,692 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dEither from "../Data.Either/index.js"; +import * as Data$dInt from "../Data.Int/index.js"; +import * as Data$dList from "../Data.List/index.js"; +import * as Data$dList$dTypes from "../Data.List.Types/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dMonoid from "../Data.Monoid/index.js"; +import * as Data$dNumber from "../Data.Number/index.js"; +import * as Data$dOrd from "../Data.Ord/index.js"; +import * as Dodo$dInternal from "../Dodo.Internal/index.js"; +import * as Partial from "../Partial/index.js"; +const $Align = tag => ({tag}); +const $DocBox = (tag, _1, _2, _3) => ({tag, _1, _2, _3}); +const $DocBoxStep = (tag, _1, _2, _3) => ({tag, _1, _2, _3}); +const $DocBuildCmd = (tag, _1, _2, _3) => ({tag, _1, _2, _3}); +const $DocBuildSize = (tag, _1) => ({tag, _1}); +const $DocBuildStk = (tag, _1, _2, _3, _4) => ({tag, _1, _2, _3, _4}); +const $DocLine = (tag, _1, _2) => ({tag, _1, _2}); +const $DocResumeCmd = (tag, _1) => ({tag, _1}); +const $DocResumeStk = (tag, _1, _2, _3) => ({tag, _1, _2, _3}); +const max = x => y => { + const v = Data$dOrd.ordInt.compare(x)(y); + if (v.tag === "LT") { return y; } + if (v.tag === "EQ") { return x; } + if (v.tag === "GT") { return x; } + $runtime.fail(); +}; +const power = /* #__PURE__ */ Data$dMonoid.power(Dodo$dInternal.monoidDoc); +const LinePad = value0 => $DocLine("LinePad", value0); +const LineDoc = value0 => $DocLine("LineDoc", value0); +const LineAppend = value0 => value1 => $DocLine("LineAppend", value0, value1); +const FullHeight = value0 => $DocBuildSize("FullHeight", value0); +const FullWidth = value0 => $DocBuildSize("FullWidth", value0); +const AsIs = /* #__PURE__ */ $DocBuildSize("AsIs"); +const StpDone = /* #__PURE__ */ $DocBoxStep("StpDone"); +const StpLine = value0 => value1 => $DocBoxStep("StpLine", value0, value1); +const StpPad = value0 => value1 => value2 => $DocBoxStep("StpPad", value0, value1, value2); +const StpHorz = value0 => value1 => value2 => $DocBoxStep("StpHorz", value0, value1, value2); +const ResumeEnter = value0 => $DocResumeCmd("ResumeEnter", value0); +const ResumeLeave = value0 => $DocResumeCmd("ResumeLeave", value0); +const ResumeHorzR = value0 => value1 => value2 => $DocResumeStk("ResumeHorzR", value0, value1, value2); +const ResumeHorzH = value0 => value1 => value2 => $DocResumeStk("ResumeHorzH", value0, value1, value2); +const ResumeNil = /* #__PURE__ */ $DocResumeStk("ResumeNil"); +const Start = /* #__PURE__ */ $Align("Start"); +const Middle = /* #__PURE__ */ $Align("Middle"); +const End = /* #__PURE__ */ $Align("End"); +const DocLine = value0 => value1 => $DocBox("DocLine", value0, value1); +const DocVApp = value0 => value1 => value2 => $DocBox("DocVApp", value0, value1, value2); +const DocHApp = value0 => value1 => value2 => $DocBox("DocHApp", value0, value1, value2); +const DocAlign = value0 => value1 => value2 => $DocBox("DocAlign", value0, value1, value2); +const DocPad = value0 => $DocBox("DocPad", value0); +const DocEmpty = /* #__PURE__ */ $DocBox("DocEmpty"); +const BuildEnter = value0 => value1 => value2 => $DocBuildCmd("BuildEnter", value0, value1, value2); +const BuildLeave = value0 => $DocBuildCmd("BuildLeave", value0); +const BuildVAppR = value0 => value1 => value2 => $DocBuildStk("BuildVAppR", value0, value1, value2); +const BuildHAppR = value0 => value1 => value2 => value3 => $DocBuildStk("BuildHAppR", value0, value1, value2, value3); +const BuildHAppH = value0 => value1 => value2 => $DocBuildStk("BuildHAppH", value0, value1, value2); +const BuildNil = /* #__PURE__ */ $DocBuildStk("BuildNil"); +const Horizontal = x => x; +const Vertical = x => x; +const newtypeVertical_ = {Coercible0: () => undefined}; +const newtypeHorizontal_ = {Coercible0: () => undefined}; +const functorDocBox = { + map: f => m => { + if (m.tag === "DocLine") { return $DocBox("DocLine", Dodo$dInternal.functorDoc.map(f)(m._1), m._2); } + if (m.tag === "DocVApp") { return $DocBox("DocVApp", functorDocBox.map(f)(m._1), functorDocBox.map(f)(m._2), m._3); } + if (m.tag === "DocHApp") { return $DocBox("DocHApp", functorDocBox.map(f)(m._1), functorDocBox.map(f)(m._2), m._3); } + if (m.tag === "DocAlign") { return $DocBox("DocAlign", m._1, m._2, functorDocBox.map(f)(m._3)); } + if (m.tag === "DocPad") { return $DocBox("DocPad", m._1); } + if (m.tag === "DocEmpty") { return DocEmpty; } + $runtime.fail(); + } +}; +const functorHorizontal = functorDocBox; +const functorVertical = functorDocBox; +const eqAlign = { + eq: x => y => { + if (x.tag === "Start") { return y.tag === "Start"; } + if (x.tag === "Middle") { return y.tag === "Middle"; } + if (x.tag === "End") { return y.tag === "End"; } + return false; + } +}; +const vpadding = height => { + if (height <= 0) { return DocEmpty; } + return $DocBox("DocPad", {height: height, width: 0}); +}; +const valign = a => v => { + if (v.tag === "DocAlign") { + if (a.tag === "Start") { + if (v._2.tag === "Start") { return v._3; } + if (v.tag === "DocAlign") { return $DocBox("DocAlign", a, v._2, v._3); } + return $DocBox("DocAlign", a, Start, v); + } + if (v.tag === "DocAlign") { return $DocBox("DocAlign", a, v._2, v._3); } + return $DocBox("DocAlign", a, Start, v); + } + if (v.tag === "DocAlign") { return $DocBox("DocAlign", a, v._2, v._3); } + return $DocBox("DocAlign", a, Start, v); +}; +const sizeOf = sizeOf$a0$copy => { + let sizeOf$a0 = sizeOf$a0$copy, sizeOf$c = true, sizeOf$r; + while (sizeOf$c) { + const v = sizeOf$a0; + if (v.tag === "DocLine") { + sizeOf$c = false; + sizeOf$r = {width: v._2, height: 1}; + continue; + } + if (v.tag === "DocVApp") { + sizeOf$c = false; + sizeOf$r = v._3; + continue; + } + if (v.tag === "DocHApp") { + sizeOf$c = false; + sizeOf$r = v._3; + continue; + } + if (v.tag === "DocAlign") { + sizeOf$a0 = v._3; + continue; + } + if (v.tag === "DocPad") { + sizeOf$c = false; + sizeOf$r = v._1; + continue; + } + if (v.tag === "DocEmpty") { + sizeOf$c = false; + sizeOf$r = {width: 0, height: 0}; + continue; + } + $runtime.fail(); + }; + return sizeOf$r; +}; +const vappend = v => v1 => { + if (v.tag === "DocEmpty") { return v1; } + if (v1.tag === "DocEmpty") { return v; } + if (v.tag === "DocPad") { + if (v1.tag === "DocPad") { return $DocBox("DocPad", {width: max(v._1.width)(v1._1.width), height: v._1.height + v1._1.height | 0}); } + return $DocBox( + "DocVApp", + v, + v1, + (() => { + const $2 = sizeOf(v); + const $3 = sizeOf(v1); + return {width: max($2.width)($3.width), height: $2.height + $3.height | 0}; + })() + ); + } + return $DocBox( + "DocVApp", + v, + v1, + (() => { + const $2 = sizeOf(v); + const $3 = sizeOf(v1); + return {width: max($2.width)($3.width), height: $2.height + $3.height | 0}; + })() + ); +}; +const vertical = dictFoldable => dictFoldable.foldr(vappend)(DocEmpty); +const semigroupVertical = {append: vappend}; +const monoidVertical = {mempty: DocEmpty, Semigroup0: () => semigroupVertical}; +const power1 = /* #__PURE__ */ Data$dMonoid.power(monoidVertical); +const resume = /* #__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 cmd = go$a0, stack = go$a1; + if (cmd.tag === "ResumeEnter") { + if (cmd._1.tag === "StpDone") { + go$a0 = $DocResumeCmd("ResumeLeave", Data$dMaybe.Nothing); + go$a1 = stack; + continue; + } + if (cmd._1.tag === "StpLine") { + go$a0 = $DocResumeCmd("ResumeLeave", Data$dMaybe.$Maybe("Just", {line: $DocLine("LineDoc", cmd._1._1), next: cmd._1._2})); + go$a1 = stack; + continue; + } + if (cmd._1.tag === "StpPad") { + if (cmd._1._2 === 0) { + go$a0 = $DocResumeCmd("ResumeEnter", cmd._1._3); + go$a1 = stack; + continue; + } + go$a0 = $DocResumeCmd( + "ResumeLeave", + Data$dMaybe.$Maybe("Just", {line: $DocLine("LinePad", cmd._1._1), next: $DocBoxStep("StpPad", cmd._1._1, cmd._1._2 - 1 | 0, cmd._1._3)}) + ); + go$a1 = stack; + continue; + } + if (cmd._1.tag === "StpHorz") { + go$a0 = $DocResumeCmd("ResumeEnter", cmd._1._2); + go$a1 = $DocResumeStk("ResumeHorzR", cmd._1._1, cmd._1._3, stack); + continue; + } + $runtime.fail(); + } + if (cmd.tag === "ResumeLeave") { + if (stack.tag === "ResumeHorzR") { + go$a0 = $DocResumeCmd("ResumeEnter", stack._1); + go$a1 = $DocResumeStk("ResumeHorzH", cmd._1, stack._2, stack._3); + continue; + } + if (stack.tag === "ResumeHorzH") { + if (cmd._1.tag === "Just") { + if (stack._1.tag === "Just") { + go$a0 = $DocResumeCmd( + "ResumeLeave", + Data$dMaybe.$Maybe( + "Just", + {line: $DocLine("LineAppend", cmd._1._1.line, stack._1._1.line), next: $DocBoxStep("StpHorz", cmd._1._1.next, stack._1._1.next, stack._2)} + ) + ); + go$a1 = stack._3; + continue; + } + go$a0 = $DocResumeCmd("ResumeEnter", stack._2); + go$a1 = stack._3; + continue; + } + go$a0 = $DocResumeCmd("ResumeEnter", stack._2); + go$a1 = stack._3; + continue; + } + if (stack.tag === "ResumeNil") { + go$c = false; + go$r = cmd._1; + continue; + } + $runtime.fail(); + } + $runtime.fail(); + }; + return go$r; + }; + return x => go($DocResumeCmd("ResumeEnter", x))(ResumeNil); +})(); +const padWithAlign = appendFn => paddingFn => padWidth => doc => v => { + if (v.tag === "Start") { return appendFn(doc)(paddingFn(padWidth)); } + if (v.tag === "Middle") { + const mid = Data$dInt.toNumber(padWidth) / 2.0; + return appendFn(appendFn(paddingFn(Data$dInt.unsafeClamp(Data$dNumber.floor(mid))))(doc))(paddingFn(Data$dInt.unsafeClamp(Data$dNumber.ceil(mid)))); + } + if (v.tag === "End") { return appendFn(paddingFn(padWidth))(doc); } + $runtime.fail(); +}; +const isEmpty = v => v.tag === "DocEmpty"; +const hpadding = width => { + if (width <= 0) { return DocEmpty; } + return $DocBox("DocPad", {height: 1, width: width}); +}; +const happend = v => v1 => { + if (v.tag === "DocEmpty") { return v1; } + if (v1.tag === "DocEmpty") { return v; } + if (v.tag === "DocPad") { + if (v1.tag === "DocPad") { return $DocBox("DocPad", {width: v._1.width + v1._1.width | 0, height: max(v._1.height)(v1._1.height)}); } + return $DocBox( + "DocHApp", + v, + v1, + (() => { + const $2 = sizeOf(v); + const $3 = sizeOf(v1); + return {width: $2.width + $3.width | 0, height: max($2.height)($3.height)}; + })() + ); + } + return $DocBox( + "DocHApp", + v, + v1, + (() => { + const $2 = sizeOf(v); + const $3 = sizeOf(v1); + return {width: $2.width + $3.width | 0, height: max($2.height)($3.height)}; + })() + ); +}; +const horizontal = dictFoldable => dictFoldable.foldr(happend)(DocEmpty); +const horizontalWithAlign = dictFoldable => align => dictFoldable.foldr(a => b => happend(valign(align)(a))(b))(DocEmpty); +const semigroupHorizontal = {append: happend}; +const monoidHorizontal = {mempty: DocEmpty, Semigroup0: () => semigroupHorizontal}; +const halign = b => v => { + if (v.tag === "DocAlign") { + if (v._1.tag === "Start") { + if (b.tag === "Start") { return v._3; } + if (v.tag === "DocAlign") { return $DocBox("DocAlign", v._1, b, v._3); } + return $DocBox("DocAlign", Start, b, v); + } + if (v.tag === "DocAlign") { return $DocBox("DocAlign", v._1, b, v._3); } + return $DocBox("DocAlign", Start, b, v); + } + if (v.tag === "DocAlign") { return $DocBox("DocAlign", v._1, b, v._3); } + return $DocBox("DocAlign", Start, b, v); +}; +const resize = newSize => box => { + const size = sizeOf(box); + const vpad = newSize.height - size.height | 0; + const hpad = newSize.width - size.width | 0; + const box$p = (() => { + if (box.tag === "DocAlign") { return box._3; } + return box; + })(); + const hdoc = (() => { + if (hpad <= 0) { return valign(Start)(box$p); } + return padWithAlign(happend)(hpadding)(hpad)(box)((() => { + if (box.tag === "DocAlign") { return box._2; } + return Start; + })()); + })(); + if (vpad <= 0) { return halign(Start)(hdoc); } + return padWithAlign(vappend)(vpadding)(vpad)(hdoc)((() => { + if (box.tag === "DocAlign") { return box._1; } + return Start; + })()); +}; +const verticalWithAlign = dictFoldable => align => dictFoldable.foldr(a => b => vappend(halign(align)(a))(b))(DocEmpty); +const formatLine = /* #__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 acc = go$a0, v = go$a1; + if (v.tag === "Nil") { + go$c = false; + go$r = acc; + continue; + } + if (v.tag === "Cons") { + if (v._1.tag === "LinePad") { + if (acc.tag === "Empty") { + go$a0 = acc; + go$a1 = v._2; + continue; + } + go$a0 = Dodo$dInternal.semigroupDoc.append(power(Dodo$dInternal.$Doc("Text", 1, " "))(v._1._1))(acc); + go$a1 = v._2; + continue; + } + if (v._1.tag === "LineDoc") { + go$a0 = Dodo$dInternal.semigroupDoc.append(v._1._1)(acc); + go$a1 = v._2; + continue; + } + if (v._1.tag === "LineAppend") { + go$a0 = acc; + go$a1 = Data$dList$dTypes.$List("Cons", v._1._2, Data$dList$dTypes.$List("Cons", v._1._1, v._2)); + continue; + } + $runtime.fail(); + } + $runtime.fail(); + }; + return go$r; + }; + const $1 = go(Dodo$dInternal.Empty); + return x => $1(Data$dList$dTypes.$List("Cons", x, Data$dList$dTypes.Nil)); +})(); +const fill = ch => v => power1((() => { + if (ch.tag === "Annotate") { + return $DocBox( + "DocLine", + (() => { + const $2 = Dodo$dInternal.Annotate(ch._1); + const $3 = power(ch._2)(v.width); + if ($3.tag === "Empty") { return Dodo$dInternal.Empty; } + return $2($3); + })(), + v.width + ); + } + return $DocBox("DocLine", power(ch)(v.width), v.width); +})())(v.height); +const empty = DocEmpty; +const docBox = /* #__PURE__ */ (() => { + const stkToDoc = (() => { + 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 = (() => { + if (v._1.tag === "Left") { + const $3 = Dodo$dInternal.Annotate(v._1._1); + if (b.tag === "Empty") { return Dodo$dInternal.Empty; } + return $3(b); + } + if (v._1.tag === "Right") { return Dodo$dInternal.semigroupDoc.append(v._1._1)(b); } + $runtime.fail(); + })(); + go$a1 = v._2; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go(Dodo$dInternal.Empty); + })(); + return { + emptyBuffer: {currentIndent: Dodo$dInternal.Empty, currentLine: Data$dList$dTypes.Nil, currentWidth: 0, lines: DocEmpty}, + writeText: width => text => v => ( + { + currentIndent: v.currentIndent, + currentLine: (() => { + if (v.currentLine.tag === "Cons") { + if (v.currentLine._1.tag === "Right") { + return Data$dList$dTypes.$List( + "Cons", + Data$dEither.$Either("Right", Dodo$dInternal.semigroupDoc.append(v.currentLine._1._1)(Dodo$dInternal.$Doc("Text", width, text))), + v.currentLine._2 + ); + } + return Data$dList$dTypes.$List("Cons", Data$dEither.$Either("Right", Dodo$dInternal.$Doc("Text", width, text)), v.currentLine); + } + return Data$dList$dTypes.$List("Cons", Data$dEither.$Either("Right", Dodo$dInternal.$Doc("Text", width, text)), v.currentLine); + })(), + currentWidth: v.currentWidth + width | 0, + lines: v.lines + } + ), + writeIndent: width => text => v => ( + { + currentIndent: Dodo$dInternal.semigroupDoc.append(v.currentIndent)(Dodo$dInternal.$Doc("Text", width, text)), + currentLine: v.currentLine, + currentWidth: v.currentWidth + width | 0, + lines: v.lines + } + ), + writeBreak: v => ( + { + currentIndent: Dodo$dInternal.Empty, + currentLine: Data$dList.filter(Data$dEither.isLeft)(v.currentLine), + currentWidth: 0, + lines: vappend(v.lines)($DocBox("DocLine", Dodo$dInternal.semigroupDoc.append(v.currentIndent)(stkToDoc(v.currentLine)), v.currentWidth)) + } + ), + enterAnnotation: ann => v => v1 => ( + { + currentIndent: v1.currentIndent, + currentLine: Data$dList$dTypes.$List("Cons", Data$dEither.$Either("Left", ann), v1.currentLine), + currentWidth: v1.currentWidth, + lines: v1.lines + } + ), + leaveAnnotation: v => v1 => v2 => ( + { + currentIndent: v2.currentIndent, + currentLine: (() => { + if (v2.currentLine.tag === "Cons") { + if (v2.currentLine._2.tag === "Cons") { + if (v2.currentLine._2._1.tag === "Left") { + if (v2.currentLine._1.tag === "Right") { + return Data$dList$dTypes.$List( + "Cons", + Data$dEither.$Either( + "Right", + (() => { + const $4 = Dodo$dInternal.Annotate(v2.currentLine._2._1._1); + if (v2.currentLine._1._1.tag === "Empty") { return Dodo$dInternal.Empty; } + return $4(v2.currentLine._1._1); + })() + ), + v2.currentLine._2._2 + ); + } + if (v2.currentLine._1.tag === "Left") { return v2.currentLine._2; } + return Partial._crashWith("leaveAnnotation: docs and annotations must be interleaved"); + } + if (v2.currentLine._1.tag === "Left") { return v2.currentLine._2; } + return Partial._crashWith("leaveAnnotation: docs and annotations must be interleaved"); + } + if (v2.currentLine._1.tag === "Left") { return v2.currentLine._2; } + return Partial._crashWith("leaveAnnotation: docs and annotations must be interleaved"); + } + return Partial._crashWith("leaveAnnotation: docs and annotations must be interleaved"); + })(), + currentWidth: v2.currentWidth, + lines: v2.lines + } + ), + flushBuffer: v => { + if (v.lines.tag === "DocEmpty" && v.currentLine.tag === "Nil") { return DocEmpty; } + return vappend(v.lines)($DocBox("DocLine", Dodo$dInternal.semigroupDoc.append(v.currentIndent)(stkToDoc(v.currentLine)), v.currentWidth)); + } + }; +})(); +const build = /* #__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 cmd = go$a0, stack = go$a1; + if (cmd.tag === "BuildEnter") { + if (cmd._1.tag === "FullHeight") { + if (cmd._3.tag === "DocHApp") { + go$a0 = $DocBuildCmd("BuildEnter", cmd._1, StpDone, cmd._3._2); + go$a1 = $DocBuildStk("BuildHAppR", cmd._1._1, cmd._3._1, cmd._2, stack); + continue; + } + go$a0 = $DocBuildCmd("BuildEnter", AsIs, cmd._2, resize({width: 0, height: cmd._1._1})(cmd._3)); + go$a1 = stack; + continue; + } + if (cmd._1.tag === "FullWidth") { + if (cmd._3.tag === "DocVApp") { + go$a0 = $DocBuildCmd("BuildEnter", cmd._1, cmd._2, cmd._3._2); + go$a1 = $DocBuildStk("BuildVAppR", cmd._1._1, cmd._3._1, stack); + continue; + } + go$a0 = $DocBuildCmd("BuildEnter", AsIs, cmd._2, resize({width: cmd._1._1, height: 0})(cmd._3)); + go$a1 = stack; + continue; + } + if (cmd._1.tag === "AsIs") { + if (cmd._3.tag === "DocVApp") { + go$a0 = $DocBuildCmd("BuildEnter", $DocBuildSize("FullWidth", cmd._3._3.width), cmd._2, cmd._3._2); + go$a1 = $DocBuildStk("BuildVAppR", cmd._3._3.width, cmd._3._1, stack); + continue; + } + if (cmd._3.tag === "DocHApp") { + go$a0 = $DocBuildCmd("BuildEnter", $DocBuildSize("FullHeight", cmd._3._3.height), StpDone, cmd._3._2); + go$a1 = $DocBuildStk("BuildHAppR", cmd._3._3.height, cmd._3._1, cmd._2, stack); + continue; + } + if (cmd._3.tag === "DocAlign") { + go$a0 = $DocBuildCmd("BuildEnter", cmd._1, cmd._2, cmd._3._3); + go$a1 = stack; + continue; + } + if (cmd._3.tag === "DocLine") { + go$a0 = $DocBuildCmd("BuildLeave", $DocBoxStep("StpLine", cmd._3._1, cmd._2)); + go$a1 = stack; + continue; + } + if (cmd._3.tag === "DocPad") { + go$a0 = $DocBuildCmd("BuildLeave", $DocBoxStep("StpPad", cmd._3._1.width, cmd._3._1.height, cmd._2)); + go$a1 = stack; + continue; + } + if (cmd._3.tag === "DocEmpty") { + go$a0 = $DocBuildCmd("BuildLeave", StpDone); + go$a1 = stack; + continue; + } + $runtime.fail(); + } + $runtime.fail(); + } + if (cmd.tag === "BuildLeave") { + if (stack.tag === "BuildVAppR") { + go$a0 = $DocBuildCmd("BuildEnter", $DocBuildSize("FullWidth", stack._1), cmd._1, stack._2); + go$a1 = stack._3; + continue; + } + if (stack.tag === "BuildHAppR") { + go$a0 = $DocBuildCmd("BuildEnter", $DocBuildSize("FullHeight", stack._1), StpDone, stack._2); + go$a1 = $DocBuildStk("BuildHAppH", cmd._1, stack._3, stack._4); + continue; + } + if (stack.tag === "BuildHAppH") { + go$a0 = $DocBuildCmd("BuildLeave", $DocBoxStep("StpHorz", cmd._1, stack._1, stack._2)); + go$a1 = stack._3; + continue; + } + if (stack.tag === "BuildNil") { + go$c = false; + go$r = cmd._1; + continue; + } + $runtime.fail(); + } + $runtime.fail(); + }; + return go$r; + }; + return size => next => box => go($DocBuildCmd("BuildEnter", size, next, box))(BuildNil); +})(); +const toDoc = /* #__PURE__ */ (() => { + const go2 = go2$a0$copy => go2$a1$copy => { + let go2$a0 = go2$a0$copy, go2$a1 = go2$a1$copy, go2$c = true, go2$r; + while (go2$c) { + const acc = go2$a0, v = go2$a1; + if (v.tag === "Nothing") { + go2$c = false; + go2$r = acc; + continue; + } + if (v.tag === "Just") { + go2$a0 = Dodo$dInternal.semigroupDoc.append(acc)(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break)(formatLine(v._1.line))); + go2$a1 = resume(v._1.next); + continue; + } + $runtime.fail(); + }; + return go2$r; + }; + const $1 = build(AsIs)(StpDone); + return x => { + const $3 = resume($1(x)); + if ($3.tag === "Nothing") { return Dodo$dInternal.Empty; } + if ($3.tag === "Just") { return go2(formatLine($3._1.line))(resume($3._1.next)); } + $runtime.fail(); + }; +})(); +export { + $Align, + $DocBox, + $DocBoxStep, + $DocBuildCmd, + $DocBuildSize, + $DocBuildStk, + $DocLine, + $DocResumeCmd, + $DocResumeStk, + AsIs, + BuildEnter, + BuildHAppH, + BuildHAppR, + BuildLeave, + BuildNil, + BuildVAppR, + DocAlign, + DocEmpty, + DocHApp, + DocLine, + DocPad, + DocVApp, + End, + FullHeight, + FullWidth, + Horizontal, + LineAppend, + LineDoc, + LinePad, + Middle, + ResumeEnter, + ResumeHorzH, + ResumeHorzR, + ResumeLeave, + ResumeNil, + Start, + StpDone, + StpHorz, + StpLine, + StpPad, + Vertical, + build, + docBox, + empty, + eqAlign, + fill, + formatLine, + functorDocBox, + functorHorizontal, + functorVertical, + halign, + happend, + horizontal, + horizontalWithAlign, + hpadding, + isEmpty, + max, + monoidHorizontal, + monoidVertical, + newtypeHorizontal_, + newtypeVertical_, + padWithAlign, + power, + power1, + resize, + resume, + semigroupHorizontal, + semigroupVertical, + sizeOf, + toDoc, + valign, + vappend, + vertical, + verticalWithAlign, + vpadding +}; diff --git a/.storybook/purescript-indexer/output-es/Dodo.Common/index.js b/.storybook/purescript-indexer/output-es/Dodo.Common/index.js new file mode 100644 index 0000000..7685206 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Dodo.Common/index.js @@ -0,0 +1,87 @@ +import * as $runtime from "../runtime.js"; +import * as Dodo from "../Dodo/index.js"; +import * as Dodo$dInternal from "../Dodo.Internal/index.js"; +const trailingComma = /* #__PURE__ */ (() => Dodo$dInternal.$Doc( + "FlexAlt", + Dodo$dInternal.$Doc("Text", 2, ", "), + Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, ","))(Dodo$dInternal.Break) +))(); +const pursSquares = /* #__PURE__ */ (() => { + const $0 = Dodo.encloseEmptyAlt(Dodo$dInternal.$Doc("Text", 2, "[ "))(Dodo$dInternal.$Doc( + "FlexAlt", + Dodo$dInternal.$Doc("Text", 2, " ]"), + Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break)(Dodo$dInternal.$Doc("Text", 1, "]")) + ))(Dodo$dInternal.$Doc("Text", 2, "[]")); + return x => Dodo.flexGroup($0(x)); +})(); +const pursParensExpr = x => Dodo.flexGroup(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, "("))(Dodo$dInternal.semigroupDoc.append((() => { + if (x.tag === "Empty") { return Dodo$dInternal.Empty; } + return Dodo$dInternal.$Doc("Indent", x); +})())(Dodo$dInternal.$Doc("Text", 1, ")")))); +const pursParens = /* #__PURE__ */ (() => { + const $0 = Dodo.encloseEmptyAlt(Dodo$dInternal.$Doc("FlexAlt", Dodo$dInternal.$Doc("Text", 1, "("), Dodo$dInternal.$Doc("Text", 2, "( ")))(Dodo$dInternal.$Doc( + "FlexAlt", + Dodo$dInternal.$Doc("Text", 1, ")"), + Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break)(Dodo$dInternal.$Doc("Text", 1, ")")) + ))(Dodo$dInternal.$Doc("Text", 2, "()")); + return x => Dodo.flexGroup($0(x)); +})(); +const pursCurlies = /* #__PURE__ */ (() => { + const $0 = Dodo.encloseEmptyAlt(Dodo$dInternal.$Doc("Text", 2, "{ "))(Dodo$dInternal.$Doc( + "FlexAlt", + Dodo$dInternal.$Doc("Text", 2, " }"), + Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break)(Dodo$dInternal.$Doc("Text", 1, "}")) + ))(Dodo$dInternal.$Doc("Text", 2, "{}")); + return x => Dodo.flexGroup($0(x)); +})(); +const leadingComma = /* #__PURE__ */ (() => Dodo$dInternal.$Doc( + "FlexAlt", + Dodo$dInternal.$Doc("Text", 2, ", "), + Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break)(Dodo$dInternal.$Doc("Text", 2, ", ")) +))(); +const jsSquares = /* #__PURE__ */ (() => { + const $0 = Dodo.encloseEmptyAlt(Dodo$dInternal.$Doc( + "FlexAlt", + Dodo$dInternal.$Doc("Text", 1, "["), + Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, "["))(Dodo$dInternal.Break) + ))(Dodo$dInternal.$Doc("FlexAlt", Dodo$dInternal.$Doc("Text", 1, "]"), Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break)(Dodo$dInternal.$Doc("Text", 1, "]"))))(Dodo$dInternal.$Doc( + "Text", + 2, + "[]" + )); + return x => Dodo.flexGroup($0((() => { + if (x.tag === "Empty") { return Dodo$dInternal.Empty; } + return Dodo$dInternal.$Doc("Indent", x); + })())); +})(); +const jsParens = /* #__PURE__ */ (() => { + const $0 = Dodo.encloseEmptyAlt(Dodo$dInternal.$Doc( + "FlexAlt", + Dodo$dInternal.$Doc("Text", 1, "("), + Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, "("))(Dodo$dInternal.Break) + ))(Dodo$dInternal.$Doc("FlexAlt", Dodo$dInternal.$Doc("Text", 1, ")"), Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break)(Dodo$dInternal.$Doc("Text", 1, ")"))))(Dodo$dInternal.$Doc( + "Text", + 2, + "()" + )); + return x => Dodo.flexGroup($0((() => { + if (x.tag === "Empty") { return Dodo$dInternal.Empty; } + return Dodo$dInternal.$Doc("Indent", x); + })())); +})(); +const jsCurlies = /* #__PURE__ */ (() => { + const $0 = Dodo.encloseEmptyAlt(Dodo$dInternal.$Doc( + "FlexAlt", + Dodo$dInternal.$Doc("Text", 1, "{"), + Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, "{"))(Dodo$dInternal.Break) + ))(Dodo$dInternal.$Doc("FlexAlt", Dodo$dInternal.$Doc("Text", 1, "}"), Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break)(Dodo$dInternal.$Doc("Text", 1, "}"))))(Dodo$dInternal.$Doc( + "Text", + 2, + "{}" + )); + return x => Dodo.flexGroup($0((() => { + if (x.tag === "Empty") { return Dodo$dInternal.Empty; } + return Dodo$dInternal.$Doc("Indent", x); + })())); +})(); +export {jsCurlies, jsParens, jsSquares, leadingComma, pursCurlies, pursParens, pursParensExpr, pursSquares, trailingComma}; diff --git a/.storybook/purescript-indexer/output-es/Dodo.Internal.Buffer/index.js b/.storybook/purescript-indexer/output-es/Dodo.Internal.Buffer/index.js new file mode 100644 index 0000000..3d38676 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Dodo.Internal.Buffer/index.js @@ -0,0 +1,18 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dFunction from "../Data.Function/index.js"; +import * as Data$dList from "../Data.List/index.js"; +import * as Data$dList$dTypes from "../Data.List.Types/index.js"; +const Buffer = x => x; +const revert = v => ({buffer: v.buffer, queue: Data$dList.drop(1)(v.queue)}); +const $$new = buffer => ({buffer: buffer, queue: Data$dList$dTypes.Nil}); +const modify = f => v => { + if (v.queue.tag === "Cons") { return {buffer: v.buffer, queue: Data$dList$dTypes.$List("Cons", Data$dList$dTypes.$List("Cons", f, v.queue._1), v.queue._2)}; } + return {buffer: f(v.buffer), queue: v.queue}; +}; +const isBranching = v => !(v.queue.tag === "Nil"); +const commit = v => ( + {buffer: Data$dList$dTypes.foldableList.foldr(b => a => Data$dList$dTypes.foldableList.foldr(Data$dFunction.apply)(a)(b))(v.buffer)(v.queue), queue: Data$dList$dTypes.Nil} +); +const $$get = x => commit(x).buffer; +const branch = v => ({buffer: v.buffer, queue: Data$dList$dTypes.$List("Cons", Data$dList$dTypes.Nil, v.queue)}); +export {Buffer, branch, commit, $$get as get, isBranching, modify, $$new as new, revert}; diff --git a/.storybook/purescript-indexer/output-es/Dodo.Internal/index.js b/.storybook/purescript-indexer/output-es/Dodo.Internal/index.js new file mode 100644 index 0000000..168a586 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Dodo.Internal/index.js @@ -0,0 +1,69 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +const $Doc = (tag, _1, _2, _3) => ({tag, _1, _2, _3}); +const Append = value0 => value1 => $Doc("Append", value0, value1); +const Indent = value0 => $Doc("Indent", value0); +const Align = value0 => value1 => $Doc("Align", value0, value1); +const Annotate = value0 => value1 => $Doc("Annotate", value0, value1); +const FlexSelect = value0 => value1 => value2 => $Doc("FlexSelect", value0, value1, value2); +const FlexAlt = value0 => value1 => $Doc("FlexAlt", value0, value1); +const WithPosition = value0 => $Doc("WithPosition", value0); +const Local = value0 => $Doc("Local", value0); +const Text = value0 => value1 => $Doc("Text", value0, value1); +const Break = /* #__PURE__ */ $Doc("Break"); +const Empty = /* #__PURE__ */ $Doc("Empty"); +const notEmpty = f => v => { + if (v.tag === "Empty") { return Empty; } + return f(v); +}; +const isEmpty = v => v.tag === "Empty"; +const functorDoc = { + map: f => m => { + if (m.tag === "Append") { return $Doc("Append", functorDoc.map(f)(m._1), functorDoc.map(f)(m._2)); } + if (m.tag === "Indent") { return $Doc("Indent", functorDoc.map(f)(m._1)); } + if (m.tag === "Align") { return $Doc("Align", m._1, functorDoc.map(f)(m._2)); } + if (m.tag === "Annotate") { return $Doc("Annotate", f(m._1), functorDoc.map(f)(m._2)); } + if (m.tag === "FlexSelect") { return $Doc("FlexSelect", functorDoc.map(f)(m._1), functorDoc.map(f)(m._2), functorDoc.map(f)(m._3)); } + if (m.tag === "FlexAlt") { return $Doc("FlexAlt", functorDoc.map(f)(m._1), functorDoc.map(f)(m._2)); } + if (m.tag === "WithPosition") { + return $Doc( + "WithPosition", + (() => { + const $2 = functorDoc.map(f); + return x => $2(m._1(x)); + })() + ); + } + if (m.tag === "Local") { + return $Doc( + "Local", + (() => { + const $2 = Data$dTuple.functorTuple.map(functorDoc.map(f)); + return x => $2(m._1(x)); + })() + ); + } + if (m.tag === "Text") { return $Doc("Text", m._1, m._2); } + if (m.tag === "Break") { return Break; } + if (m.tag === "Empty") { return Empty; } + $runtime.fail(); + } +}; +const bothNotEmpty = f => v => v1 => { + if (v.tag === "Empty") { return v1; } + if (v1.tag === "Empty") { return v; } + return f(v)(v1); +}; +const semigroupDoc = { + append: v => v1 => { + if (v.tag === "Empty") { return v1; } + if (v1.tag === "Empty") { return v; } + if (v.tag === "Text") { + if (v1.tag === "Text") { return $Doc("Text", v._1 + v1._1 | 0, v._2 + v1._2); } + return $Doc("Append", v, v1); + } + return $Doc("Append", v, v1); + } +}; +const monoidDoc = {mempty: Empty, Semigroup0: () => semigroupDoc}; +export {$Doc, Align, Annotate, Append, Break, Empty, FlexAlt, FlexSelect, Indent, Local, Text, WithPosition, bothNotEmpty, functorDoc, isEmpty, monoidDoc, notEmpty, semigroupDoc}; diff --git a/.storybook/purescript-indexer/output-es/Dodo/index.js b/.storybook/purescript-indexer/output-es/Dodo/index.js new file mode 100644 index 0000000..74166aa --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Dodo/index.js @@ -0,0 +1,634 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dFoldable from "../Data.Foldable/index.js"; +import * as Data$dFunctor from "../Data.Functor/index.js"; +import * as Data$dInt from "../Data.Int/index.js"; +import * as Data$dList$dTypes from "../Data.List.Types/index.js"; +import * as Data$dMonoid from "../Data.Monoid/index.js"; +import * as Data$dNumber from "../Data.Number/index.js"; +import * as Data$dOrd from "../Data.Ord/index.js"; +import * as Data$dString$dCodePoints from "../Data.String.CodePoints/index.js"; +import * as Data$dString$dCommon from "../Data.String.Common/index.js"; +import * as Data$dString$dRegex from "../Data.String.Regex/index.js"; +import * as Data$dString$dRegex$dFlags from "../Data.String.Regex.Flags/index.js"; +import * as Data$dString$dRegex$dUnsafe from "../Data.String.Regex.Unsafe/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +import * as Dodo$dInternal from "../Dodo.Internal/index.js"; +import * as Dodo$dInternal$dBuffer from "../Dodo.Internal.Buffer/index.js"; +const $DocCmd = (tag, _1, _2) => ({tag, _1, _2}); +const $FlexGroupStatus = (tag, _1) => ({tag, _1}); +const max = x => y => { + const v = Data$dOrd.ordInt.compare(x)(y); + if (v.tag === "LT") { return y; } + if (v.tag === "EQ") { return x; } + if (v.tag === "GT") { return x; } + $runtime.fail(); +}; +const max1 = x => y => { + const v = Data$dOrd.ordNumber.compare(x)(y); + if (v.tag === "LT") { return y; } + if (v.tag === "EQ") { return x; } + if (v.tag === "GT") { return x; } + $runtime.fail(); +}; +const min = x => y => { + const v = Data$dOrd.ordNumber.compare(x)(y); + if (v.tag === "LT") { return x; } + if (v.tag === "EQ") { return x; } + if (v.tag === "GT") { return y; } + $runtime.fail(); +}; +const power = /* #__PURE__ */ Data$dMonoid.power(Data$dMonoid.monoidString); +const Printer = x => x; +const Doc = value0 => $DocCmd("Doc", value0); +const Dedent = value0 => value1 => $DocCmd("Dedent", value0, value1); +const LeaveAnnotation = value0 => value1 => $DocCmd("LeaveAnnotation", value0, value1); +const LeaveFlexGroup = value0 => value1 => $DocCmd("LeaveFlexGroup", value0, value1); +const LeaveLocal = value0 => $DocCmd("LeaveLocal", value0); +const NoFlexGroup = /* #__PURE__ */ $FlexGroupStatus("NoFlexGroup"); +const FlexGroupPending = /* #__PURE__ */ $FlexGroupStatus("FlexGroupPending"); +const FlexGroupReset = value0 => $FlexGroupStatus("FlexGroupReset", value0); +const withPosition = Dodo$dInternal.WithPosition; +const withLocalOptions = Dodo$dInternal.Local; +const twoSpaces = {pageWidth: 80, ribbonRatio: 1.0, indentUnit: " ", indentWidth: 2}; +const text = v => { + if (v === "") { return Dodo$dInternal.Empty; } + return Dodo$dInternal.$Doc("Text", Data$dString$dCodePoints.toCodePointArray(v).length, v); +}; +const tabs = {pageWidth: 120, ribbonRatio: 1.0, indentUnit: "\t", indentWidth: 4}; +const space = /* #__PURE__ */ Dodo$dInternal.$Doc("Text", 1, " "); +const plainText = { + emptyBuffer: "", + writeText: v => str => buff => buff + str, + writeIndent: v => str => buff => buff + str, + writeBreak: buff => buff + "\n", + enterAnnotation: v => v1 => buff => buff, + leaveAnnotation: v => v1 => buff => buff, + flushBuffer: buff => buff +}; +const locally = k => doc => Dodo$dInternal.$Doc("Local", options => Data$dTuple.$Tuple(k(options), doc)); +const indent = /* #__PURE__ */ Dodo$dInternal.notEmpty(Dodo$dInternal.Indent); +const fourSpaces = {pageWidth: 120, ribbonRatio: 1.0, indentUnit: " ", indentWidth: 4}; +const foldWith = dictFoldable => f => dictFoldable.foldr(v => v1 => { + if (v.tag === "Empty") { return v1; } + if (v1.tag === "Empty") { return v; } + return f(v)(v1); +})(Dodo$dInternal.Empty); +const foldWithSeparator = dictFoldable => separator => foldWith(dictFoldable)(a => b => Dodo$dInternal.semigroupDoc.append(a)(Dodo$dInternal.semigroupDoc.append(separator)(b))); +const flexSelect = doc1 => doc2 => doc3 => { + if (doc1.tag === "Empty") { return doc2; } + return Dodo$dInternal.$Doc("FlexSelect", doc1, doc2, doc3); +}; +const flexGroup = v => { + if (v.tag === "Empty") { return Dodo$dInternal.Empty; } + if (v.tag === "FlexSelect") { + if (v._2.tag === "Empty" && v._3.tag === "Empty") { return v; } + return Dodo$dInternal.$Doc("FlexSelect", v, Dodo$dInternal.Empty, Dodo$dInternal.Empty); + } + return Dodo$dInternal.$Doc("FlexSelect", v, Dodo$dInternal.Empty, Dodo$dInternal.Empty); +}; +const flexAlt = Dodo$dInternal.FlexAlt; +const encloseWithSeparator = dictFoldable => open => close => separator => inner => Dodo$dInternal.semigroupDoc.append(open)(Dodo$dInternal.semigroupDoc.append(foldWithSeparator(dictFoldable)(separator)(inner))(close)); +const encloseEmptyAlt = open => close => $$default => inner => { + if (inner.tag === "Empty") { return $$default; } + return Dodo$dInternal.semigroupDoc.append(open)(Dodo$dInternal.semigroupDoc.append(inner)(close)); +}; +const enclose = open => close => inner => Dodo$dInternal.semigroupDoc.append(open)(Dodo$dInternal.semigroupDoc.append(inner)(close)); +const calcRibbonWidth = v => n => max(0)(Data$dInt.unsafeClamp(Data$dNumber.ceil(v.ribbonRatio * Data$dInt.toNumber(v.pageWidth - n | 0)))); +const storeOptions = prevIndent => localOptions => state => { + const newOptions = {indentUnit: localOptions.indentUnit, indentWidth: localOptions.indentWidth, pageWidth: localOptions.pageWidth, ribbonRatio: localOptions.ribbonRatio}; + return { + position: { + line: state.position.line, + column: state.position.column, + indent: state.position.indent, + nextIndent: localOptions.indent, + pageWidth: newOptions.pageWidth, + ribbonWidth: calcRibbonWidth(newOptions)(prevIndent) + }, + buffer: state.buffer, + annotations: state.annotations, + indentSpaces: localOptions.indentSpaces, + flexGroup: state.flexGroup, + options: newOptions + }; +}; +const print = v => opts => { + const initOptions = {pageWidth: opts.pageWidth, ribbonRatio: max1(0.0)(min(1.0)(opts.ribbonRatio)), indentUnit: opts.indentUnit, indentWidth: opts.indentWidth}; + 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 stack = go$a0, state = go$a1; + if (stack.tag === "Nil") { + go$c = false; + go$r = v.flushBuffer(Dodo$dInternal$dBuffer.commit(state.buffer).buffer); + continue; + } + if (stack.tag === "Cons") { + if (stack._1.tag === "Doc") { + if (stack._1._1.tag === "Append") { + go$a0 = Data$dList$dTypes.$List("Cons", $DocCmd("Doc", stack._1._1._1), Data$dList$dTypes.$List("Cons", $DocCmd("Doc", stack._1._1._2), stack._2)); + go$a1 = state; + continue; + } + if (stack._1._1.tag === "Text") { + if (state.position.column === 0 && state.position.indent > 0) { + go$a0 = stack; + go$a1 = { + position: { + line: state.position.line, + column: state.position.indent, + indent: state.position.indent, + nextIndent: state.position.nextIndent, + pageWidth: state.position.pageWidth, + ribbonWidth: state.position.ribbonWidth + }, + buffer: Dodo$dInternal$dBuffer.modify(v.writeIndent(state.position.indent)(state.indentSpaces))(state.buffer), + annotations: state.annotations, + indentSpaces: state.indentSpaces, + flexGroup: state.flexGroup, + options: state.options + }; + continue; + } + if ((state.position.column + stack._1._1._1 | 0) <= (state.position.indent + state.position.ribbonWidth | 0)) { + go$a0 = stack._2; + go$a1 = { + position: { + line: state.position.line, + column: state.position.column + stack._1._1._1 | 0, + indent: state.position.indent, + nextIndent: state.position.nextIndent, + pageWidth: state.position.pageWidth, + ribbonWidth: state.position.ribbonWidth + }, + buffer: Dodo$dInternal$dBuffer.modify(v.writeText(stack._1._1._1)(stack._1._1._2))(state.buffer), + annotations: state.annotations, + indentSpaces: state.indentSpaces, + flexGroup: state.flexGroup, + options: state.options + }; + continue; + } + if (state.flexGroup.tag === "FlexGroupReset") { + go$a0 = state.flexGroup._1.stack; + go$a1 = { + position: state.flexGroup._1.position, + buffer: state.flexGroup._1.buffer, + annotations: state.flexGroup._1.annotations, + indentSpaces: state.flexGroup._1.indentSpaces, + flexGroup: NoFlexGroup, + options: state.flexGroup._1.options + }; + continue; + } + go$a0 = stack._2; + go$a1 = { + position: { + line: state.position.line, + column: state.position.column + stack._1._1._1 | 0, + indent: state.position.indent, + nextIndent: state.position.nextIndent, + pageWidth: state.position.pageWidth, + ribbonWidth: state.position.ribbonWidth + }, + buffer: Dodo$dInternal$dBuffer.modify(v.writeText(stack._1._1._1)(stack._1._1._2))(state.buffer), + annotations: state.annotations, + indentSpaces: state.indentSpaces, + flexGroup: NoFlexGroup, + options: state.options + }; + continue; + } + if (stack._1._1.tag === "Break") { + if (state.flexGroup.tag === "FlexGroupReset") { + go$a0 = state.flexGroup._1.stack; + go$a1 = { + position: state.flexGroup._1.position, + buffer: state.flexGroup._1.buffer, + annotations: state.flexGroup._1.annotations, + indentSpaces: state.flexGroup._1.indentSpaces, + flexGroup: NoFlexGroup, + options: state.flexGroup._1.options + }; + continue; + } + go$a0 = stack._2; + go$a1 = { + position: { + line: state.position.line + 1 | 0, + column: 0, + indent: state.position.nextIndent, + nextIndent: state.position.nextIndent, + pageWidth: state.position.pageWidth, + ribbonWidth: calcRibbonWidth(state.options)(state.position.nextIndent) + }, + buffer: Dodo$dInternal$dBuffer.modify(v.writeBreak)(state.buffer), + annotations: state.annotations, + indentSpaces: state.indentSpaces, + flexGroup: NoFlexGroup, + options: state.options + }; + continue; + } + if (stack._1._1.tag === "Indent") { + if (state.position.column === 0) { + go$a0 = Data$dList$dTypes.$List( + "Cons", + $DocCmd("Doc", stack._1._1._1), + Data$dList$dTypes.$List("Cons", $DocCmd("Dedent", state.indentSpaces, state.position.nextIndent), stack._2) + ); + go$a1 = { + position: { + line: state.position.line, + column: state.position.column, + indent: state.position.nextIndent + opts.indentWidth | 0, + nextIndent: state.position.nextIndent + opts.indentWidth | 0, + pageWidth: state.position.pageWidth, + ribbonWidth: calcRibbonWidth(state.options)(state.position.nextIndent + opts.indentWidth | 0) + }, + buffer: state.buffer, + annotations: state.annotations, + indentSpaces: state.indentSpaces + opts.indentUnit, + flexGroup: state.flexGroup, + options: state.options + }; + continue; + } + go$a0 = Data$dList$dTypes.$List( + "Cons", + $DocCmd("Doc", stack._1._1._1), + Data$dList$dTypes.$List("Cons", $DocCmd("Dedent", state.indentSpaces, state.position.nextIndent), stack._2) + ); + go$a1 = { + position: { + line: state.position.line, + column: state.position.column, + indent: state.position.indent, + nextIndent: state.position.nextIndent + opts.indentWidth | 0, + pageWidth: state.position.pageWidth, + ribbonWidth: state.position.ribbonWidth + }, + buffer: state.buffer, + annotations: state.annotations, + indentSpaces: state.indentSpaces + opts.indentUnit, + flexGroup: state.flexGroup, + options: state.options + }; + continue; + } + if (stack._1._1.tag === "Align") { + if (state.position.column === 0) { + go$a0 = Data$dList$dTypes.$List( + "Cons", + $DocCmd("Doc", stack._1._1._2), + Data$dList$dTypes.$List("Cons", $DocCmd("Dedent", state.indentSpaces, state.position.nextIndent), stack._2) + ); + go$a1 = { + position: { + line: state.position.line, + column: state.position.column, + indent: state.position.nextIndent + stack._1._1._1 | 0, + nextIndent: state.position.nextIndent + stack._1._1._1 | 0, + pageWidth: state.position.pageWidth, + ribbonWidth: calcRibbonWidth(state.options)(state.position.nextIndent + stack._1._1._1 | 0) + }, + buffer: state.buffer, + annotations: state.annotations, + indentSpaces: state.indentSpaces + power(" ")(stack._1._1._1), + flexGroup: state.flexGroup, + options: state.options + }; + continue; + } + go$a0 = Data$dList$dTypes.$List( + "Cons", + $DocCmd("Doc", stack._1._1._2), + Data$dList$dTypes.$List("Cons", $DocCmd("Dedent", state.indentSpaces, state.position.nextIndent), stack._2) + ); + go$a1 = { + position: { + line: state.position.line, + column: state.position.column, + indent: state.position.indent, + nextIndent: state.position.nextIndent + stack._1._1._1 | 0, + pageWidth: state.position.pageWidth, + ribbonWidth: state.position.ribbonWidth + }, + buffer: state.buffer, + annotations: state.annotations, + indentSpaces: state.indentSpaces + power(" ")(stack._1._1._1), + flexGroup: state.flexGroup, + options: state.options + }; + continue; + } + if (stack._1._1.tag === "FlexSelect") { + if (state.flexGroup.tag === "NoFlexGroup") { + go$a0 = Data$dList$dTypes.$List( + "Cons", + $DocCmd("Doc", stack._1._1._1), + Data$dList$dTypes.$List("Cons", $DocCmd("LeaveFlexGroup", stack._1._1._2, stack._1._1._3), stack._2) + ); + go$a1 = { + position: state.position, + buffer: state.buffer, + annotations: state.annotations, + indentSpaces: state.indentSpaces, + flexGroup: FlexGroupPending, + options: state.options + }; + continue; + } + if (state.flexGroup.tag === "FlexGroupPending") { + if (state.position.ribbonWidth > 0) { + go$a0 = Data$dList$dTypes.$List("Cons", $DocCmd("Doc", stack._1._1._1), Data$dList$dTypes.$List("Cons", $DocCmd("Doc", stack._1._1._2), stack._2)); + go$a1 = { + position: state.position, + buffer: {buffer: state.buffer.buffer, queue: Data$dList$dTypes.$List("Cons", Data$dList$dTypes.Nil, state.buffer.queue)}, + annotations: state.annotations, + indentSpaces: state.indentSpaces, + flexGroup: $FlexGroupStatus( + "FlexGroupReset", + {position: state.position, buffer: state.buffer, annotations: state.annotations, indentSpaces: state.indentSpaces, stack: stack, options: state.options} + ), + options: state.options + }; + continue; + } + go$a0 = Data$dList$dTypes.$List("Cons", $DocCmd("Doc", stack._1._1._1), Data$dList$dTypes.$List("Cons", $DocCmd("Doc", stack._1._1._2), stack._2)); + go$a1 = state; + continue; + } + go$a0 = Data$dList$dTypes.$List("Cons", $DocCmd("Doc", stack._1._1._1), Data$dList$dTypes.$List("Cons", $DocCmd("Doc", stack._1._1._2), stack._2)); + go$a1 = state; + continue; + } + if (stack._1._1.tag === "FlexAlt") { + if (state.flexGroup.tag === "FlexGroupReset") { + go$a0 = Data$dList$dTypes.$List("Cons", $DocCmd("Doc", stack._1._1._1), stack._2); + go$a1 = state; + continue; + } + if (state.flexGroup.tag === "FlexGroupPending") { + if (state.position.ribbonWidth > 0) { + go$a0 = Data$dList$dTypes.$List("Cons", $DocCmd("Doc", stack._1._1._1), stack._2); + go$a1 = { + position: state.position, + buffer: {buffer: state.buffer.buffer, queue: Data$dList$dTypes.$List("Cons", Data$dList$dTypes.Nil, state.buffer.queue)}, + annotations: state.annotations, + indentSpaces: state.indentSpaces, + flexGroup: $FlexGroupStatus( + "FlexGroupReset", + { + position: state.position, + buffer: state.buffer, + annotations: state.annotations, + indentSpaces: state.indentSpaces, + stack: Data$dList$dTypes.$List("Cons", $DocCmd("Doc", stack._1._1._2), stack._2), + options: state.options + } + ), + options: state.options + }; + continue; + } + go$a0 = Data$dList$dTypes.$List("Cons", $DocCmd("Doc", stack._1._1._2), stack._2); + go$a1 = state; + continue; + } + go$a0 = Data$dList$dTypes.$List("Cons", $DocCmd("Doc", stack._1._1._2), stack._2); + go$a1 = state; + continue; + } + if (stack._1._1.tag === "WithPosition") { + if (state.position.column === 0 && state.position.nextIndent > 0) { + go$a0 = Data$dList$dTypes.$List( + "Cons", + $DocCmd( + "Doc", + stack._1._1._1({ + line: state.position.line, + column: state.position.nextIndent, + indent: state.position.indent, + nextIndent: state.position.nextIndent, + pageWidth: state.position.pageWidth, + ribbonWidth: state.position.ribbonWidth + }) + ), + stack._2 + ); + go$a1 = state; + continue; + } + go$a0 = Data$dList$dTypes.$List("Cons", $DocCmd("Doc", stack._1._1._1(state.position)), stack._2); + go$a1 = state; + continue; + } + if (stack._1._1.tag === "Annotate") { + go$a0 = Data$dList$dTypes.$List( + "Cons", + $DocCmd("Doc", stack._1._1._2), + Data$dList$dTypes.$List("Cons", $DocCmd("LeaveAnnotation", stack._1._1._1, state.annotations), stack._2) + ); + go$a1 = { + position: state.position, + buffer: Dodo$dInternal$dBuffer.modify(v.enterAnnotation(stack._1._1._1)(state.annotations))(state.buffer), + annotations: Data$dList$dTypes.$List("Cons", stack._1._1._1, state.annotations), + indentSpaces: state.indentSpaces, + flexGroup: state.flexGroup, + options: state.options + }; + continue; + } + if (stack._1._1.tag === "Local") { + const prevOptions = { + indent: state.position.indent, + indentSpaces: state.indentSpaces, + indentUnit: state.options.indentUnit, + indentWidth: state.options.indentWidth, + pageWidth: state.options.pageWidth, + ribbonRatio: state.options.ribbonRatio + }; + const v1 = stack._1._1._1(prevOptions); + go$a0 = Data$dList$dTypes.$List("Cons", $DocCmd("Doc", v1._2), Data$dList$dTypes.$List("Cons", $DocCmd("LeaveLocal", prevOptions), stack._2)); + go$a1 = storeOptions(state.position.indent)(v1._1)(state); + continue; + } + if (stack._1._1.tag === "Empty") { + go$a0 = stack._2; + go$a1 = state; + continue; + } + $runtime.fail(); + } + if (stack._1.tag === "LeaveFlexGroup") { + if (state.flexGroup.tag === "NoFlexGroup") { + go$a0 = Data$dList$dTypes.$List("Cons", $DocCmd("Doc", stack._1._2), stack._2); + go$a1 = { + position: state.position, + buffer: Dodo$dInternal$dBuffer.commit(state.buffer), + annotations: state.annotations, + indentSpaces: state.indentSpaces, + flexGroup: state.flexGroup, + options: state.options + }; + continue; + } + go$a0 = Data$dList$dTypes.$List("Cons", $DocCmd("Doc", stack._1._1), stack._2); + go$a1 = { + position: state.position, + buffer: Dodo$dInternal$dBuffer.commit(state.buffer), + annotations: state.annotations, + indentSpaces: state.indentSpaces, + flexGroup: NoFlexGroup, + options: state.options + }; + continue; + } + if (stack._1.tag === "Dedent") { + go$a0 = stack._2; + go$a1 = { + position: { + line: state.position.line, + column: state.position.column, + indent: state.position.indent, + nextIndent: stack._1._2, + pageWidth: state.position.pageWidth, + ribbonWidth: state.position.ribbonWidth + }, + buffer: state.buffer, + annotations: state.annotations, + indentSpaces: stack._1._1, + flexGroup: state.flexGroup, + options: state.options + }; + continue; + } + if (stack._1.tag === "LeaveAnnotation") { + go$a0 = stack._2; + go$a1 = { + position: state.position, + buffer: Dodo$dInternal$dBuffer.modify(v.leaveAnnotation(stack._1._1)(stack._1._2))(state.buffer), + annotations: stack._1._2, + indentSpaces: state.indentSpaces, + flexGroup: state.flexGroup, + options: state.options + }; + continue; + } + if (stack._1.tag === "LeaveLocal") { + go$a0 = stack._2; + go$a1 = storeOptions(state.position.indent)(stack._1._1)(state); + continue; + } + $runtime.fail(); + } + $runtime.fail(); + }; + return go$r; + }; + const $4 = { + position: {line: 0, column: 0, indent: 0, nextIndent: 0, pageWidth: initOptions.pageWidth, ribbonWidth: calcRibbonWidth(initOptions)(0)}, + buffer: {buffer: v.emptyBuffer, queue: Data$dList$dTypes.Nil}, + annotations: Data$dList$dTypes.Nil, + indentSpaces: "", + flexGroup: NoFlexGroup, + options: initOptions + }; + return x => go(Data$dList$dTypes.$List("Cons", $DocCmd("Doc", x), Data$dList$dTypes.Nil))($4); +}; +const $$break = Dodo$dInternal.Break; +const softBreak = /* #__PURE__ */ Dodo$dInternal.$Doc("FlexAlt", Dodo$dInternal.Empty, Dodo$dInternal.Break); +const spaceBreak = /* #__PURE__ */ Dodo$dInternal.$Doc("FlexAlt", /* #__PURE__ */ Dodo$dInternal.$Doc("Text", 1, " "), Dodo$dInternal.Break); +const appendSpaceBreak = v => v1 => { + if (v.tag === "Empty") { return v1; } + if (v1.tag === "Empty") { return v; } + return Dodo$dInternal.semigroupDoc.append(v)(flexGroup(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc( + "FlexAlt", + Dodo$dInternal.$Doc("Text", 1, " "), + Dodo$dInternal.Break + ))(v1))); +}; +const paragraph = dictFoldable => dictFoldable.foldl(appendSpaceBreak)(Dodo$dInternal.Empty); +const textParagraph = /* #__PURE__ */ (() => { + const $0 = Data$dFoldable.foldlArray(appendSpaceBreak)(Dodo$dInternal.Empty); + const $1 = Data$dFunctor.arrayMap(text); + const $2 = Data$dString$dRegex.split(Data$dString$dRegex$dUnsafe.unsafeRegex("[\\s\\n]+")(Data$dString$dRegex$dFlags.global)); + return x => $0($1($2(Data$dString$dCommon.trim(x)))); +})(); +const appendSpace = v => v1 => { + if (v.tag === "Empty") { return v1; } + if (v1.tag === "Empty") { return v; } + return Dodo$dInternal.semigroupDoc.append(v)(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " "))(v1)); +}; +const words = dictFoldable => dictFoldable.foldr(appendSpace)(Dodo$dInternal.Empty); +const appendBreak = v => v1 => { + if (v.tag === "Empty") { return v1; } + if (v1.tag === "Empty") { return v; } + return Dodo$dInternal.semigroupDoc.append(v)(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break)(v1)); +}; +const lines = dictFoldable => dictFoldable.foldr(appendBreak)(Dodo$dInternal.Empty); +const annotate = x => Dodo$dInternal.notEmpty(Dodo$dInternal.Annotate(x)); +const align = n => doc => { + if (n > 0) { + const $2 = Dodo$dInternal.Align(n); + if (doc.tag === "Empty") { return Dodo$dInternal.Empty; } + return $2(doc); + } + return doc; +}; +const alignCurrentColumn = v => { + if (v.tag === "Empty") { return Dodo$dInternal.Empty; } + return Dodo$dInternal.$Doc("WithPosition", pos => align(pos.column - pos.nextIndent | 0)(v)); +}; +export { + $DocCmd, + $FlexGroupStatus, + Dedent, + Doc, + FlexGroupPending, + FlexGroupReset, + LeaveAnnotation, + LeaveFlexGroup, + LeaveLocal, + NoFlexGroup, + Printer, + align, + alignCurrentColumn, + annotate, + appendBreak, + appendSpace, + appendSpaceBreak, + $$break as break, + calcRibbonWidth, + enclose, + encloseEmptyAlt, + encloseWithSeparator, + flexAlt, + flexGroup, + flexSelect, + foldWith, + foldWithSeparator, + fourSpaces, + indent, + lines, + locally, + max, + max1, + min, + paragraph, + plainText, + power, + print, + softBreak, + space, + spaceBreak, + storeOptions, + tabs, + text, + textParagraph, + twoSpaces, + withLocalOptions, + withPosition, + words +}; diff --git a/.storybook/purescript-indexer/output-es/Effect.AVar/foreign.js b/.storybook/purescript-indexer/output-es/Effect.AVar/foreign.js new file mode 100644 index 0000000..15538cc --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Effect.AVar/foreign.js @@ -0,0 +1,307 @@ +var AVar = function () { + + function MutableQueue () { + this.head = null; + this.last = null; + this.size = 0; + } + + function MutableCell (queue, value) { + this.queue = queue; + this.value = value; + this.next = null; + this.prev = null; + } + + function AVar (value) { + this.draining = false; + this.error = null; + this.value = value; + this.takes = new MutableQueue(); + this.reads = new MutableQueue(); + this.puts = new MutableQueue(); + } + + var EMPTY = {}; + + function runEff(eff) { + try { + eff(); + } catch (error) { + setTimeout(function () { + throw error; + }, 0); + } + } + + function putLast (queue, value) { + var cell = new MutableCell(queue, value); + switch (queue.size) { + case 0: + queue.head = cell; + break; + case 1: + cell.prev = queue.head; + queue.head.next = cell; + queue.last = cell; + break; + default: + cell.prev = queue.last; + queue.last.next = cell; + queue.last = cell; + } + queue.size++; + return cell; + } + + function takeLast (queue) { + var cell; + switch (queue.size) { + case 0: + return null; + case 1: + cell = queue.head; + queue.head = null; + break; + case 2: + cell = queue.last; + queue.head.next = null; + queue.last = null; + break; + default: + cell = queue.last; + queue.last = cell.prev; + queue.last.next = null; + } + cell.prev = null; + cell.queue = null; + queue.size--; + return cell.value; + } + + function takeHead (queue) { + var cell; + switch (queue.size) { + case 0: + return null; + case 1: + cell = queue.head; + queue.head = null; + break; + case 2: + cell = queue.head; + queue.last.prev = null; + queue.head = queue.last; + queue.last = null; + break; + default: + cell = queue.head; + queue.head = cell.next; + queue.head.prev = null; + } + cell.next = null; + cell.queue = null; + queue.size--; + return cell.value; + } + + function deleteCell (cell) { + if (cell.queue === null) { + return; + } + if (cell.queue.last === cell) { + takeLast(cell.queue); + return; + } + if (cell.queue.head === cell) { + takeHead(cell.queue); + return; + } + if (cell.prev) { + cell.prev.next = cell.next; + } + if (cell.next) { + cell.next.prev = cell.prev; + } + cell.queue.size--; + cell.queue = null; + cell.value = null; + cell.next = null; + cell.prev = null; + } + + function drainVar (util, avar) { + if (avar.draining) { + return; + } + + var ps = avar.puts; + var ts = avar.takes; + var rs = avar.reads; + var p, r, t, value, rsize; + + avar.draining = true; + + while (1) { // eslint-disable-line no-constant-condition + p = null; + r = null; + t = null; + value = avar.value; + rsize = rs.size; + + if (avar.error !== null) { + value = util.left(avar.error); + while (p = takeHead(ps)) { // eslint-disable-line no-cond-assign + runEff(p.cb(value)); + } + while (r = takeHead(rs)) { // eslint-disable-line no-cond-assign + runEff(r(value)); + } + while (t = takeHead(ts)) { // eslint-disable-line no-cond-assign + runEff(t(value)); + } + break; + } + + // Process the next put. We do not immediately invoke the callback + // because we want to preserve ordering. If there are takes/reads + // we want to run those first. + if (value === EMPTY && (p = takeHead(ps))) { + avar.value = value = p.value; + } + + if (value !== EMPTY) { + // We go ahead and queue up the next take for the same reasons as + // above. Invoking the read callbacks can affect the mutable queue. + t = takeHead(ts); + // We only want to process the reads queued up before running these + // callbacks so we guard on rsize. + while (rsize-- && (r = takeHead(rs))) { + runEff(r(util.right(value))); + } + if (t !== null) { + avar.value = EMPTY; + runEff(t(util.right(value))); + } + } + + if (p !== null) { + runEff(p.cb(util.right(void 0))); + } + + // Callbacks could have queued up more items so we need to guard on the + // actual mutable properties. + if (avar.value === EMPTY && ps.size === 0 || avar.value !== EMPTY && ts.size === 0) { + break; + } + } + avar.draining = false; + } + + AVar.EMPTY = EMPTY; + AVar.putLast = putLast; + AVar.takeLast = takeLast; + AVar.takeHead = takeHead; + AVar.deleteCell = deleteCell; + AVar.drainVar = drainVar; + + return AVar; +}(); + +export function empty() { + return new AVar(AVar.EMPTY); +} + +export function _newVar(value) { + return function () { + return new AVar(value); + }; +} + +export function _killVar(util, error, avar) { + return function () { + if (avar.error === null) { + avar.error = error; + avar.value = AVar.EMPTY; + AVar.drainVar(util, avar); + } + }; +} + +export function _putVar(util, value, avar, cb) { + return function () { + var cell = AVar.putLast(avar.puts, { cb: cb, value: value }); + AVar.drainVar(util, avar); + return function () { + AVar.deleteCell(cell); + }; + }; +} + +export function _takeVar(util, avar, cb) { + return function () { + var cell = AVar.putLast(avar.takes, cb); + AVar.drainVar(util, avar); + return function () { + AVar.deleteCell(cell); + }; + }; +} + +export function _readVar(util, avar, cb) { + return function () { + var cell = AVar.putLast(avar.reads, cb); + AVar.drainVar(util, avar); + return function () { + AVar.deleteCell(cell); + }; + }; +} + +export function _tryPutVar(util, value, avar) { + return function () { + if (avar.value === AVar.EMPTY && avar.error === null) { + avar.value = value; + AVar.drainVar(util, avar); + return true; + } else { + return false; + } + }; +} + +export function _tryTakeVar(util, avar) { + return function () { + var value = avar.value; + if (value === AVar.EMPTY) { + return util.nothing; + } else { + avar.value = AVar.EMPTY; + AVar.drainVar(util, avar); + return util.just(value); + } + }; +} + +export function _tryReadVar(util, avar) { + return function () { + if (avar.value === AVar.EMPTY) { + return util.nothing; + } else { + return util.just(avar.value); + } + }; +} + +export function _status(util, avar) { + return function () { + if (avar.error) { + return util.killed(avar.error); + } + if (avar.value === AVar.EMPTY) { + return util.empty; + } + return util.filled(avar.value); + }; +} + diff --git a/.storybook/purescript-indexer/output-es/Effect.AVar/index.js b/.storybook/purescript-indexer/output-es/Effect.AVar/index.js new file mode 100644 index 0000000..e7dead2 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Effect.AVar/index.js @@ -0,0 +1,23 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dEither from "../Data.Either/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import {_killVar, _newVar, _putVar, _readVar, _status, _takeVar, _tryPutVar, _tryReadVar, _tryTakeVar, empty} from "./foreign.js"; +const $AVarStatus = (tag, _1) => ({tag, _1}); +const Killed = value0 => $AVarStatus("Killed", value0); +const Filled = value0 => $AVarStatus("Filled", value0); +const Empty = /* #__PURE__ */ $AVarStatus("Empty"); +const $$new = _newVar; +const isKilled = v => v.tag === "Killed"; +const isFilled = v => v.tag === "Filled"; +const isEmpty = v => v.tag === "Empty"; +const ffiUtil = {left: Data$dEither.Left, right: Data$dEither.Right, nothing: Data$dMaybe.Nothing, just: Data$dMaybe.Just, killed: Killed, filled: Filled, empty: Empty}; +const kill = err => avar => _killVar(ffiUtil, err, avar); +const put = value => avar => cb => _putVar(ffiUtil, value, avar, cb); +const read = avar => cb => _readVar(ffiUtil, avar, cb); +const status = avar => _status(ffiUtil, avar); +const take = avar => cb => _takeVar(ffiUtil, avar, cb); +const tryPut = value => avar => _tryPutVar(ffiUtil, value, avar); +const tryRead = avar => _tryReadVar(ffiUtil, avar); +const tryTake = avar => _tryTakeVar(ffiUtil, avar); +export {$AVarStatus, Empty, Filled, Killed, ffiUtil, isEmpty, isFilled, isKilled, kill, $$new as new, put, read, status, take, tryPut, tryRead, tryTake}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Effect.Aff.AVar/index.js b/.storybook/purescript-indexer/output-es/Effect.Aff.AVar/index.js new file mode 100644 index 0000000..7074173 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Effect.Aff.AVar/index.js @@ -0,0 +1,35 @@ +import * as $runtime from "../runtime.js"; +import * as Effect$dAVar from "../Effect.AVar/index.js"; +import * as Effect$dAff from "../Effect.Aff/index.js"; +const tryTake = x => Effect$dAff._liftEffect(Effect$dAVar._tryTakeVar(Effect$dAVar.ffiUtil, x)); +const tryRead = x => Effect$dAff._liftEffect(Effect$dAVar._tryReadVar(Effect$dAVar.ffiUtil, x)); +const tryPut = value => x => Effect$dAff._liftEffect(Effect$dAVar._tryPutVar(Effect$dAVar.ffiUtil, value, x)); +const take = avar => Effect$dAff.makeAff(k => { + const $2 = Effect$dAVar._takeVar(Effect$dAVar.ffiUtil, avar, k); + return () => { + const c = $2(); + const $4 = Effect$dAff._liftEffect(c); + return v => $4; + }; +}); +const status = x => Effect$dAff._liftEffect(Effect$dAVar._status(Effect$dAVar.ffiUtil, x)); +const read = avar => Effect$dAff.makeAff(k => { + const $2 = Effect$dAVar._readVar(Effect$dAVar.ffiUtil, avar, k); + return () => { + const c = $2(); + const $4 = Effect$dAff._liftEffect(c); + return v => $4; + }; +}); +const put = value => avar => Effect$dAff.makeAff(k => { + const $3 = Effect$dAVar._putVar(Effect$dAVar.ffiUtil, value, avar, k); + return () => { + const c = $3(); + const $5 = Effect$dAff._liftEffect(c); + return v => $5; + }; +}); +const $$new = x => Effect$dAff._liftEffect(Effect$dAVar._newVar(x)); +const kill = error => x => Effect$dAff._liftEffect(Effect$dAVar._killVar(Effect$dAVar.ffiUtil, error, x)); +const empty = /* #__PURE__ */ Effect$dAff._liftEffect(Effect$dAVar.empty); +export {empty, kill, $$new as new, put, read, status, take, tryPut, tryRead, tryTake}; diff --git a/.storybook/purescript-indexer/output-es/Effect.Aff.Class/index.js b/.storybook/purescript-indexer/output-es/Effect.Aff.Class/index.js new file mode 100644 index 0000000..96d6273 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Effect.Aff.Class/index.js @@ -0,0 +1,106 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dCont$dTrans from "../Control.Monad.Cont.Trans/index.js"; +import * as Control$dMonad$dExcept$dTrans from "../Control.Monad.Except.Trans/index.js"; +import * as Control$dMonad$dList$dTrans from "../Control.Monad.List.Trans/index.js"; +import * as Control$dMonad$dMaybe$dTrans from "../Control.Monad.Maybe.Trans/index.js"; +import * as Control$dMonad$dRWS$dTrans from "../Control.Monad.RWS.Trans/index.js"; +import * as Control$dMonad$dReader$dTrans from "../Control.Monad.Reader.Trans/index.js"; +import * as Control$dMonad$dState$dTrans from "../Control.Monad.State.Trans/index.js"; +import * as Control$dMonad$dWriter$dTrans from "../Control.Monad.Writer.Trans/index.js"; +import * as Effect$dAff from "../Effect.Aff/index.js"; +const monadAffAff = {liftAff: x => x, MonadEffect0: () => Effect$dAff.monadEffectAff}; +const liftAff = dict => dict.liftAff; +const monadAffContT = dictMonadAff => { + const MonadEffect0 = dictMonadAff.MonadEffect0(); + const monadEffectContT = Control$dMonad$dCont$dTrans.monadEffectContT(MonadEffect0); + return { + liftAff: (() => { + const $3 = MonadEffect0.Monad0().Bind1().bind; + return x => $3(dictMonadAff.liftAff(x)); + })(), + MonadEffect0: () => monadEffectContT + }; +}; +const monadAffExceptT = dictMonadAff => { + const MonadEffect0 = dictMonadAff.MonadEffect0(); + const monadEffectExceptT = Control$dMonad$dExcept$dTrans.monadEffectExceptT(MonadEffect0); + return { + liftAff: (() => { + const $3 = Control$dMonad$dExcept$dTrans.monadTransExceptT.lift(MonadEffect0.Monad0()); + return x => $3(dictMonadAff.liftAff(x)); + })(), + MonadEffect0: () => monadEffectExceptT + }; +}; +const monadAffListT = dictMonadAff => { + const MonadEffect0 = dictMonadAff.MonadEffect0(); + const monadEffectListT = Control$dMonad$dList$dTrans.monadEffectListT(MonadEffect0); + return { + liftAff: (() => { + const $3 = Control$dMonad$dList$dTrans.fromEffect(MonadEffect0.Monad0().Applicative0()); + return x => $3(dictMonadAff.liftAff(x)); + })(), + MonadEffect0: () => monadEffectListT + }; +}; +const monadAffMaybe = dictMonadAff => { + const MonadEffect0 = dictMonadAff.MonadEffect0(); + const monadEffectMaybe = Control$dMonad$dMaybe$dTrans.monadEffectMaybe(MonadEffect0); + return { + liftAff: (() => { + const $3 = Control$dMonad$dMaybe$dTrans.monadTransMaybeT.lift(MonadEffect0.Monad0()); + return x => $3(dictMonadAff.liftAff(x)); + })(), + MonadEffect0: () => monadEffectMaybe + }; +}; +const monadAffRWS = dictMonadAff => { + const MonadEffect0 = dictMonadAff.MonadEffect0(); + const Monad0 = MonadEffect0.Monad0(); + return dictMonoid => { + const monadEffectRWS = Control$dMonad$dRWS$dTrans.monadEffectRWS(dictMonoid)(MonadEffect0); + return { + liftAff: (() => { + const $5 = Control$dMonad$dRWS$dTrans.monadTransRWST(dictMonoid).lift(Monad0); + return x => $5(dictMonadAff.liftAff(x)); + })(), + MonadEffect0: () => monadEffectRWS + }; + }; +}; +const monadAffReader = dictMonadAff => { + const monadEffectReader = Control$dMonad$dReader$dTrans.monadEffectReader(dictMonadAff.MonadEffect0()); + return { + liftAff: x => { + const $3 = dictMonadAff.liftAff(x); + return v => $3; + }, + MonadEffect0: () => monadEffectReader + }; +}; +const monadAffState = dictMonadAff => { + const MonadEffect0 = dictMonadAff.MonadEffect0(); + const monadEffectState = Control$dMonad$dState$dTrans.monadEffectState(MonadEffect0); + return { + liftAff: (() => { + const $3 = Control$dMonad$dState$dTrans.monadTransStateT.lift(MonadEffect0.Monad0()); + return x => $3(dictMonadAff.liftAff(x)); + })(), + MonadEffect0: () => monadEffectState + }; +}; +const monadAffWriter = dictMonadAff => { + const MonadEffect0 = dictMonadAff.MonadEffect0(); + const Monad0 = MonadEffect0.Monad0(); + return dictMonoid => { + const monadEffectWriter = Control$dMonad$dWriter$dTrans.monadEffectWriter(dictMonoid)(MonadEffect0); + return { + liftAff: (() => { + const $5 = Control$dMonad$dWriter$dTrans.monadTransWriterT(dictMonoid).lift(Monad0); + return x => $5(dictMonadAff.liftAff(x)); + })(), + MonadEffect0: () => monadEffectWriter + }; + }; +}; +export {liftAff, monadAffAff, monadAffContT, monadAffExceptT, monadAffListT, monadAffMaybe, monadAffRWS, monadAffReader, monadAffState, monadAffWriter}; diff --git a/.storybook/purescript-indexer/output-es/Effect.Aff.Compat/index.js b/.storybook/purescript-indexer/output-es/Effect.Aff.Compat/index.js new file mode 100644 index 0000000..ab61778 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Effect.Aff.Compat/index.js @@ -0,0 +1,15 @@ +// | This module provides compatability functions for constructing `Aff`s which +// | are defined via the FFI. +import * as $runtime from "../runtime.js"; +import * as Data$dEither from "../Data.Either/index.js"; +import * as Effect$dAff from "../Effect.Aff/index.js"; +const EffectFnCanceler = x => x; +const EffectFnAff = x => x; +const fromEffectFnAff = v => Effect$dAff.makeAff(k => () => { + const v1 = v(x => k(Data$dEither.$Either("Left", x))(), x => k(Data$dEither.$Either("Right", x))()); + return e => Effect$dAff.makeAff(k2 => () => { + v1(e, x => k2(Data$dEither.$Either("Left", x))(), x => k2(Data$dEither.$Either("Right", x))()); + return Effect$dAff.nonCanceler; + }); +}); +export {EffectFnAff, EffectFnCanceler, fromEffectFnAff}; diff --git a/.storybook/purescript-indexer/output-es/Effect.Aff/foreign.js b/.storybook/purescript-indexer/output-es/Effect.Aff/foreign.js new file mode 100644 index 0000000..c029eec --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Effect.Aff/foreign.js @@ -0,0 +1,1154 @@ +/* globals setImmediate, clearImmediate, setTimeout, clearTimeout */ +/* eslint-disable no-unused-vars, no-prototype-builtins, no-use-before-define, no-unused-labels, no-param-reassign */ +var Aff = function () { + // A unique value for empty. + var EMPTY = {}; + + /* + + An awkward approximation. We elide evidence we would otherwise need in PS for + efficiency sake. + + data Aff eff a + = Pure a + | Throw Error + | Catch (Aff eff a) (Error -> Aff eff a) + | Sync (Eff eff a) + | Async ((Either Error a -> Eff eff Unit) -> Eff eff (Canceler eff)) + | forall b. Bind (Aff eff b) (b -> Aff eff a) + | forall b. Bracket (Aff eff b) (BracketConditions eff b) (b -> Aff eff a) + | forall b. Fork Boolean (Aff eff b) ?(Fiber eff b -> a) + | Sequential (ParAff aff a) + + */ + 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"; + + /* + + data ParAff eff a + = forall b. Map (b -> a) (ParAff eff b) + | forall b. Apply (ParAff eff (b -> a)) (ParAff eff b) + | Alt (ParAff eff a) (ParAff eff a) + | ?Par (Aff eff a) + + */ + var MAP = "Map"; + var APPLY = "Apply"; + var ALT = "Alt"; + + // Various constructors used in interpretation + var CONS = "Cons"; // Cons-list, for stacks + var RESUME = "Resume"; // Continue indiscriminately + var RELEASE = "Release"; // Continue with bracket finalizers + var FINALIZER = "Finalizer"; // A non-interruptible effect + var FINALIZED = "Finalized"; // Marker for finalization + var FORKED = "Forked"; // Reference to a forked fiber, with resumption stack + var FIBER = "Fiber"; // Actual fiber reference + var THUNK = "Thunk"; // Primed effect, ready to invoke + + function Aff(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 Aff(tag, _1, _2, _3); + }; + fn.tag = tag; + return fn; + } + + function nonCanceler(error) { + return new Aff(PURE, void 0); + } + + function runEff(eff) { + try { + eff(); + } catch (error) { + setTimeout(function () { + throw error; + }, 0); + } + } + + function runSync(left, right, eff) { + try { + return right(eff()); + } catch (error) { + return left(error); + } + } + + function runAsync(left, eff, k) { + try { + return eff(k)(); + } catch (error) { + k(left(error))(); + return nonCanceler; + } + } + + var Scheduler = function () { + var limit = 1024; + var size = 0; + var ix = 0; + var queue = new Array(limit); + var draining = false; + + function drain() { + var thunk; + draining = true; + while (size !== 0) { + size--; + 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 (size === limit) { + tmp = draining; + drain(); + draining = tmp; + } + + queue[(ix + size) % limit] = cb; + size++; + + if (!draining) { + drain(); + } + } + }; + }(); + + function Supervisor(util) { + 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 (util.isLeft(result) && util.fromLeft(result)) { + setTimeout(function () { + throw util.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 (error) { + return new Aff(SYNC, function () { + for (var k in kills) { + if (kills.hasOwnProperty(k)) { + kills[k](); + } + } + }); + }; + }; + } + }; + } + + // Fiber state machine + var SUSPENDED = 0; // Suspended, pending a join. + var CONTINUE = 1; // Interpret the next instruction. + var STEP_BIND = 2; // Apply the next bind. + var STEP_RESULT = 3; // Handle potential failure from a result. + var PENDING = 4; // An async effect is running. + var RETURN = 5; // The current stack has returned. + var COMPLETED = 6; // The entire fiber has completed. + + function Fiber(util, supervisor, aff) { + // Monotonically increasing tick, increased on each asynchronous turn. + var runTick = 0; + + // The current branch of the state machine. + var status = SUSPENDED; + + // The current point of interest for the state machine branch. + var step = aff; // Successful step + var fail = null; // Failure step + var interrupt = null; // Asynchronous interrupt + + // Stack of continuations for the current fiber. + var bhead = null; + var btail = null; + + // Stack of attempts and finalizers for error recovery. Every `Cons` is also + // tagged with current `interrupt` state. We use this to track which items + // should be ignored or evaluated as a result of a kill. + var attempts = null; + + // A special state is needed for Bracket, because it cannot be killed. When + // we enter a bracket acquisition or finalizer, we increment the counter, + // and then decrement once complete. + var bracketCount = 0; + + // Each join gets a new id so they can be revoked. + var joinId = 0; + var joins = null; + var rethrow = true; + + // Each invocation of `run` requires a tick. When an asynchronous effect is + // resolved, we must check that the local tick coincides with the fiber + // tick before resuming. This prevents multiple async continuations from + // accidentally resuming the same fiber. A common example may be invoking + // the provided callback in `makeAff` more than once, but it may also be an + // async effect resuming after the fiber was already cancelled. + function run(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; + fail = util.left(e); + step = null; + } + break; + + case STEP_RESULT: + if (util.isLeft(step)) { + status = RETURN; + fail = step; + step = null; + } else if (bhead === null) { + status = RETURN; + } else { + status = STEP_BIND; + step = util.fromRight(step); + } + break; + + case CONTINUE: + switch (step.tag) { + case BIND: + if (bhead) { + btail = new Aff(CONS, bhead, btail); + } + bhead = step._2; + status = CONTINUE; + step = step._1; + break; + + case PURE: + if (bhead === null) { + status = RETURN; + step = util.right(step._1); + } else { + status = STEP_BIND; + step = step._1; + } + break; + + case SYNC: + status = STEP_RESULT; + step = runSync(util.left, util.right, step._1); + break; + + case ASYNC: + status = PENDING; + step = runAsync(util.left, step._1, function (result) { + return function () { + if (runTick !== localRunTick) { + return; + } + runTick++; + Scheduler.enqueue(function () { + // It's possible to interrupt the fiber between enqueuing and + // resuming, so we need to check that the runTick is still + // valid. + if (runTick !== localRunTick + 1) { + return; + } + status = STEP_RESULT; + step = result; + run(runTick); + }); + }; + }); + return; + + case THROW: + status = RETURN; + fail = util.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 Aff(CONS, step, attempts, interrupt); + } else { + attempts = new Aff(CONS, step, new Aff(CONS, new Aff(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 Aff(CONS, step, attempts, interrupt); + } else { + attempts = new Aff(CONS, step, new Aff(CONS, new Aff(RESUME, bhead, btail), attempts, interrupt), interrupt); + } + bhead = null; + btail = null; + status = CONTINUE; + step = step._1; + break; + + case FORK: + status = STEP_RESULT; + tmp = Fiber(util, supervisor, step._2); + if (supervisor) { + supervisor.register(tmp); + } + if (step._1) { + tmp.run(); + } + step = util.right(tmp); + break; + + case SEQ: + status = CONTINUE; + step = sequential(util, supervisor, step._1); + break; + } + break; + + case RETURN: + bhead = null; + btail = null; + // If the current stack has returned, and we have no other stacks to + // resume or finalizers to run, the fiber has halted and we can + // invoke all join callbacks. Otherwise we need to resume. + if (attempts === null) { + status = COMPLETED; + step = interrupt || fail || step; + } else { + // The interrupt status for the enqueued item. + 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: + // We should compare the interrupt status as well because we + // only want it to apply if there has been an interrupt since + // enqueuing the catch. + if (interrupt && interrupt !== tmp && bracketCount === 0) { + status = RETURN; + } else if (fail) { + status = CONTINUE; + step = attempt._2(util.fromLeft(fail)); + fail = null; + } + break; + + // We cannot resume from an unmasked interrupt or exception. + case RESUME: + // As with Catch, we only want to ignore in the case of an + // interrupt since enqueing the item. + if (interrupt && interrupt !== tmp && bracketCount === 0 || fail) { + status = RETURN; + } else { + bhead = attempt._1; + btail = attempt._2; + status = STEP_BIND; + step = util.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 (fail === null) { + result = util.fromRight(step); + // We need to enqueue the Release with the same interrupt + // status as the Bracket that is initiating it. + attempts = new Aff(CONS, new Aff(RELEASE, attempt._2, result), attempts, tmp); + // We should only coninue as long as the interrupt status has not changed or + // we are currently within a non-interruptable finalizer. + 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 Aff(CONS, new Aff(FINALIZED, step, fail), attempts, interrupt); + status = CONTINUE; + // It has only been killed if the interrupt status has changed + // since we enqueued the item, and the bracket count is 0. If the + // bracket count is non-zero then we are in a masked state so it's + // impossible to be killed. + if (interrupt && interrupt !== tmp && bracketCount === 0) { + step = attempt._1.killed(util.fromLeft(interrupt))(attempt._2); + } else if (fail) { + step = attempt._1.failed(util.fromLeft(fail))(attempt._2); + } else { + step = attempt._1.completed(util.fromRight(step))(attempt._2); + } + fail = null; + bracketCount++; + break; + + case FINALIZER: + bracketCount++; + attempts = new Aff(CONS, new Aff(FINALIZED, step, fail), attempts, interrupt); + status = CONTINUE; + step = attempt._1; + break; + + case FINALIZED: + bracketCount--; + status = RETURN; + step = attempt._1; + fail = 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 we have an interrupt and a fail, then the thread threw while + // running finalizers. This should always rethrow in a fresh stack. + if (interrupt && fail) { + setTimeout(function () { + throw util.fromLeft(fail); + }, 0); + // If we have an unhandled exception, and no other fiber has joined + // then we need to throw the exception in a fresh stack. + } else if (util.isLeft(step) && rethrow) { + setTimeout(function () { + // Guard on reathrow because a completely synchronous fiber can + // still have an observer which was added after-the-fact. + if (rethrow) { + throw util.fromLeft(step); + } + }, 0); + } + return; + case SUSPENDED: + status = CONTINUE; + break; + case PENDING: return; + } + } + } + + function onComplete(join) { + return function () { + if (status === COMPLETED) { + rethrow = rethrow && join.rethrow; + join.handler(step)(); + return function () {}; + } + + var jid = joinId++; + joins = joins || {}; + joins[jid] = join; + + return function() { + if (joins !== null) { + delete joins[jid]; + } + }; + }; + } + + function kill(error, cb) { + return function () { + if (status === COMPLETED) { + cb(util.right(void 0))(); + return function () {}; + } + + var canceler = onComplete({ + rethrow: false, + handler: function (/* unused */) { + return cb(util.right(void 0)); + } + })(); + + switch (status) { + case SUSPENDED: + interrupt = util.left(error); + status = COMPLETED; + step = interrupt; + run(runTick); + break; + case PENDING: + if (interrupt === null) { + interrupt = util.left(error); + } + if (bracketCount === 0) { + if (status === PENDING) { + attempts = new Aff(CONS, new Aff(FINALIZER, step(error)), attempts, interrupt); + } + status = RETURN; + step = null; + fail = null; + run(++runTick); + } + break; + default: + if (interrupt === null) { + interrupt = util.left(error); + } + if (bracketCount === 0) { + status = RETURN; + step = null; + fail = null; + } + } + + return canceler; + }; + } + + function join(cb) { + return function () { + var canceler = onComplete({ + rethrow: false, + handler: cb + })(); + if (status === SUSPENDED) { + run(runTick); + } + return canceler; + }; + } + + return { + kill: kill, + join: join, + onComplete: onComplete, + isSuspended: function () { + return status === SUSPENDED; + }, + run: function () { + if (status === SUSPENDED) { + if (!Scheduler.isDraining()) { + Scheduler.enqueue(function () { + run(runTick); + }); + } else { + run(runTick); + } + } + } + }; + } + + function runPar(util, supervisor, par, cb) { + // Table of all forked fibers. + var fiberId = 0; + var fibers = {}; + + // Table of currently running cancelers, as a product of `Alt` behavior. + var killId = 0; + var kills = {}; + + // Error used for early cancelation on Alt branches. + var early = new Error("[ParAff] Early exit"); + + // Error used to kill the entire tree. + var interrupt = null; + + // The root pointer of the tree. + var root = EMPTY; + + // Walks a tree, invoking all the cancelers. Returns the table of pending + // cancellation fibers. + function kill(error, par, cb) { + var step = par; + var head = null; + var tail = null; + var count = 0; + var kills = {}; + var tmp, kid; + + loop: while (true) { + tmp = null; + + switch (step.tag) { + case FORKED: + if (step._3 === EMPTY) { + tmp = fibers[step._1]; + kills[count++] = tmp.kill(error, function (result) { + return function () { + count--; + if (count === 0) { + cb(result)(); + } + }; + }); + } + // Terminal case. + if (head === null) { + break loop; + } + // Go down the right side of the tree. + step = head._2; + if (tail === null) { + head = null; + } else { + head = tail._1; + tail = tail._2; + } + break; + case MAP: + step = step._2; + break; + case APPLY: + case ALT: + if (head) { + tail = new Aff(CONS, head, tail); + } + head = step; + step = step._1; + break; + } + } + + if (count === 0) { + cb(util.right(void 0))(); + } else { + // Run the cancelation effects. We alias `count` because it's mutable. + kid = 0; + tmp = count; + for (; kid < tmp; kid++) { + kills[kid] = kills[kid](); + } + } + + return kills; + } + + // When a fiber resolves, we need to bubble back up the tree with the + // result, computing the applicative nodes. + function join(result, head, tail) { + var fail, step, lhs, rhs, tmp, kid; + + if (util.isLeft(result)) { + fail = result; + step = null; + } else { + step = result; + fail = null; + } + + loop: while (true) { + lhs = null; + rhs = null; + tmp = null; + kid = null; + + // We should never continue if the entire tree has been interrupted. + if (interrupt !== null) { + return; + } + + // We've made it all the way to the root of the tree, which means + // the tree has fully evaluated. + if (head === null) { + cb(fail || step)(); + return; + } + + // The tree has already been computed, so we shouldn't try to do it + // again. This should never happen. + // TODO: Remove this? + if (head._3 !== EMPTY) { + return; + } + + switch (head.tag) { + case MAP: + if (fail === null) { + head._3 = util.right(head._1(util.fromRight(step))); + step = head._3; + } else { + head._3 = fail; + } + break; + case APPLY: + lhs = head._1._3; + rhs = head._2._3; + // If we have a failure we should kill the other side because we + // can't possible yield a result anymore. + if (fail) { + head._3 = fail; + tmp = true; + kid = killId++; + + kills[kid] = kill(early, fail === lhs ? head._2 : head._1, function (/* unused */) { + return function () { + delete kills[kid]; + if (tmp) { + tmp = false; + } else if (tail === null) { + join(fail, null, null); + } else { + join(fail, tail._1, tail._2); + } + }; + }); + + if (tmp) { + tmp = false; + return; + } + } else if (lhs === EMPTY || rhs === EMPTY) { + // We can only proceed if both sides have resolved. + return; + } else { + step = util.right(util.fromRight(lhs)(util.fromRight(rhs))); + head._3 = step; + } + break; + case ALT: + lhs = head._1._3; + rhs = head._2._3; + // We can only proceed if both have resolved or we have a success + if (lhs === EMPTY && util.isLeft(rhs) || rhs === EMPTY && util.isLeft(lhs)) { + return; + } + // If both sides resolve with an error, we should continue with the + // first error + if (lhs !== EMPTY && util.isLeft(lhs) && rhs !== EMPTY && util.isLeft(rhs)) { + fail = step === lhs ? rhs : lhs; + step = null; + head._3 = fail; + } else { + head._3 = step; + tmp = true; + kid = killId++; + // Once a side has resolved, we need to cancel the side that is still + // pending before we can continue. + kills[kid] = kill(early, step === lhs ? head._2 : head._1, function (/* unused */) { + return function () { + delete kills[kid]; + if (tmp) { + tmp = false; + } else if (tail === null) { + join(step, null, null); + } else { + join(step, tail._1, tail._2); + } + }; + }); + + if (tmp) { + tmp = false; + return; + } + } + break; + } + + if (tail === null) { + head = null; + } else { + head = tail._1; + tail = tail._2; + } + } + } + + function resolve(fiber) { + return function (result) { + return function () { + delete fibers[fiber._1]; + fiber._3 = result; + join(result, fiber._2._1, fiber._2._2); + }; + }; + } + + // Walks the applicative tree, substituting non-applicative nodes with + // `FORKED` nodes. In this tree, all applicative nodes use the `_3` slot + // as a mutable slot for memoization. In an unresolved state, the `_3` + // slot is `EMPTY`. In the cases of `ALT` and `APPLY`, we always walk + // the left side first, because both operations are left-associative. As + // we `RETURN` from those branches, we then walk the right side. + function run() { + var status = CONTINUE; + var step = par; + var head = null; + var tail = null; + var tmp, fid; + + loop: while (true) { + tmp = null; + fid = null; + + switch (status) { + case CONTINUE: + switch (step.tag) { + case MAP: + if (head) { + tail = new Aff(CONS, head, tail); + } + head = new Aff(MAP, step._1, EMPTY, EMPTY); + step = step._2; + break; + case APPLY: + if (head) { + tail = new Aff(CONS, head, tail); + } + head = new Aff(APPLY, EMPTY, step._2, EMPTY); + step = step._1; + break; + case ALT: + if (head) { + tail = new Aff(CONS, head, tail); + } + head = new Aff(ALT, EMPTY, step._2, EMPTY); + step = step._1; + break; + default: + // When we hit a leaf value, we suspend the stack in the `FORKED`. + // When the fiber resolves, it can bubble back up the tree. + fid = fiberId++; + status = RETURN; + tmp = step; + step = new Aff(FORKED, fid, new Aff(CONS, head, tail), EMPTY); + tmp = Fiber(util, supervisor, tmp); + tmp.onComplete({ + rethrow: false, + handler: resolve(step) + })(); + fibers[fid] = tmp; + if (supervisor) { + supervisor.register(tmp); + } + } + break; + case RETURN: + // Terminal case, we are back at the root. + if (head === null) { + break loop; + } + // If we are done with the right side, we need to continue down the + // left. Otherwise we should continue up the stack. + if (head._1 === EMPTY) { + head._1 = step; + status = CONTINUE; + step = head._2; + head._2 = EMPTY; + } else { + head._2 = step; + step = head; + if (tail === null) { + head = null; + } else { + head = tail._1; + tail = tail._2; + } + } + } + } + + // Keep a reference to the tree root so it can be cancelled. + root = step; + + for (fid = 0; fid < fiberId; fid++) { + fibers[fid].run(); + } + } + + // Cancels the entire tree. If there are already subtrees being canceled, + // we need to first cancel those joins. We will then add fresh joins for + // all pending branches including those that were in the process of being + // canceled. + function cancel(error, cb) { + interrupt = util.left(error); + 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(error, root, cb); + + return function (killError) { + return new Aff(ASYNC, function (killCb) { + return function () { + for (var kid in newKills) { + if (newKills.hasOwnProperty(kid)) { + newKills[kid](); + } + } + return nonCanceler; + }; + }); + }; + } + + run(); + + return function (killError) { + return new Aff(ASYNC, function (killCb) { + return function () { + return cancel(killError, killCb); + }; + }); + }; + } + + function sequential(util, supervisor, par) { + return new Aff(ASYNC, function (cb) { + return function () { + return runPar(util, supervisor, par, cb); + }; + }); + } + + Aff.EMPTY = EMPTY; + Aff.Pure = AffCtr(PURE); + Aff.Throw = AffCtr(THROW); + Aff.Catch = AffCtr(CATCH); + Aff.Sync = AffCtr(SYNC); + Aff.Async = AffCtr(ASYNC); + Aff.Bind = AffCtr(BIND); + Aff.Bracket = AffCtr(BRACKET); + Aff.Fork = AffCtr(FORK); + Aff.Seq = AffCtr(SEQ); + Aff.ParMap = AffCtr(MAP); + Aff.ParApply = AffCtr(APPLY); + Aff.ParAlt = AffCtr(ALT); + Aff.Fiber = Fiber; + Aff.Supervisor = Supervisor; + Aff.Scheduler = Scheduler; + Aff.nonCanceler = nonCanceler; + + return Aff; +}(); + +export const _pure = Aff.Pure; +export const _throwError = Aff.Throw; + +export function _catchError(aff) { + return function (k) { + return Aff.Catch(aff, k); + }; +} + +export function _map(f) { + return function (aff) { + if (aff.tag === Aff.Pure.tag) { + return Aff.Pure(f(aff._1)); + } else { + return Aff.Bind(aff, function (value) { + return Aff.Pure(f(value)); + }); + } + }; +} + +export function _bind(aff) { + return function (k) { + return Aff.Bind(aff, k); + }; +} + +export function _fork(immediate) { + return function (aff) { + return Aff.Fork(immediate, aff); + }; +} + +export const _liftEffect = Aff.Sync; + +export function _parAffMap(f) { + return function (aff) { + return Aff.ParMap(f, aff); + }; +} + +export function _parAffApply(aff1) { + return function (aff2) { + return Aff.ParApply(aff1, aff2); + }; +} + +export function _parAffAlt(aff1) { + return function (aff2) { + return Aff.ParAlt(aff1, aff2); + }; +} + +export const makeAff = Aff.Async; + +export function generalBracket(acquire) { + return function (options) { + return function (k) { + return Aff.Bracket(acquire, options, k); + }; + }; +} + +export function _makeFiber(util, aff) { + return function () { + return Aff.Fiber(util, null, aff); + }; +} + +export function _makeSupervisedFiber(util, aff) { + return function () { + var supervisor = Aff.Supervisor(util); + return { + fiber: Aff.Fiber(util, supervisor, aff), + supervisor: supervisor + }; + }; +} + +export function _killAll(error, supervisor, cb) { + return supervisor.killAll(error, cb); +} + +export const _delay = function () { + function setDelay(n, k) { + if (n === 0 && typeof setImmediate !== "undefined") { + return setImmediate(k); + } else { + return setTimeout(k, n); + } + } + + function clearDelay(n, t) { + if (n === 0 && typeof clearImmediate !== "undefined") { + return clearImmediate(t); + } else { + return clearTimeout(t); + } + } + + return function (right, ms) { + return Aff.Async(function (cb) { + return function () { + var timer = setDelay(ms, cb(right())); + return function () { + return Aff.Sync(function () { + return right(clearDelay(ms, timer)); + }); + }; + }; + }); + }; +}(); + +export const _sequential = Aff.Seq; diff --git a/.storybook/purescript-indexer/output-es/Effect.Aff/index.js b/.storybook/purescript-indexer/output-es/Effect.Aff/index.js new file mode 100644 index 0000000..9f19a2e --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Effect.Aff/index.js @@ -0,0 +1,264 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dError$dClass from "../Control.Monad.Error.Class/index.js"; +import * as Control$dParallel from "../Control.Parallel/index.js"; +import * as Data$dEither from "../Data.Either/index.js"; +import * as Data$dFoldable from "../Data.Foldable/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +import * as Effect$dException from "../Effect.Exception/index.js"; +import * as Effect$dUnsafe from "../Effect.Unsafe/index.js"; +import * as Partial from "../Partial/index.js"; +import * as Unsafe$dCoerce from "../Unsafe.Coerce/index.js"; +import { + _bind, + _catchError, + _delay, + _fork, + _killAll, + _liftEffect, + _makeFiber, + _makeSupervisedFiber, + _map, + _parAffAlt, + _parAffApply, + _parAffMap, + _pure, + _sequential, + _throwError, + generalBracket, + makeAff +} from "./foreign.js"; +const Canceler = x => x; +const suspendAff = /* #__PURE__ */ _fork(false); +const newtypeCanceler = {Coercible0: () => undefined}; +const functorParAff = {map: _parAffMap}; +const functorAff = {map: _map}; +const forkAff = /* #__PURE__ */ _fork(true); +const ffiUtil = { + isLeft: v => { + if (v.tag === "Left") { return true; } + if (v.tag === "Right") { return false; } + $runtime.fail(); + }, + fromLeft: v => { + if (v.tag === "Left") { return v._1; } + if (v.tag === "Right") { return Partial._crashWith("unsafeFromLeft: Right"); } + $runtime.fail(); + }, + fromRight: v => { + if (v.tag === "Right") { return v._1; } + if (v.tag === "Left") { return Partial._crashWith("unsafeFromRight: Left"); } + $runtime.fail(); + }, + left: Data$dEither.Left, + right: Data$dEither.Right +}; +const makeFiber = aff => _makeFiber(ffiUtil, aff); +const launchAff = aff => { + const $1 = _makeFiber(ffiUtil, aff); + return () => { + const fiber = $1(); + fiber.run(); + return fiber; + }; +}; +const launchAff_ = x => { + const $1 = _makeFiber(ffiUtil, x); + return () => { + const fiber = $1(); + fiber.run(); + return Data$dUnit.unit; + }; +}; +const launchSuspendedAff = makeFiber; +const delay = v => _delay(Data$dEither.Right, v); +const bracket = acquire => completed => generalBracket(acquire)({killed: v => completed, failed: v => completed, completed: v => completed}); +const applyParAff = {apply: _parAffApply, Functor0: () => functorParAff}; +const semigroupParAff = dictSemigroup => ({append: a => b => _parAffApply(_parAffMap(dictSemigroup.append)(a))(b)}); +const monadAff = {Applicative0: () => applicativeAff, Bind1: () => bindAff}; +const bindAff = {bind: _bind, Apply0: () => applyAff}; +const applyAff = {apply: f => a => _bind(f)(f$p => _bind(a)(a$p => applicativeAff.pure(f$p(a$p)))), Functor0: () => functorAff}; +const applicativeAff = {pure: _pure, Apply0: () => applyAff}; +const cancelWith = aff => v => generalBracket(_pure(Data$dUnit.unit))({killed: e => v1 => v(e), failed: v$1 => _pure, completed: v$1 => _pure})(v$1 => aff); +const $$finally = fin => a => generalBracket(_pure(Data$dUnit.unit))({killed: v => v$1 => fin, failed: v => v$1 => fin, completed: v => v$1 => fin})(v => a); +const invincible = a => { + const $1 = _pure(Data$dUnit.unit); + return generalBracket(a)({killed: v => v$1 => $1, failed: v => v$1 => $1, completed: v => v$1 => $1})(_pure); +}; +const lazyAff = {defer: f => _bind(_pure(Data$dUnit.unit))(f)}; +const semigroupAff = dictSemigroup => ({append: a => b => applyAff.apply(_map(dictSemigroup.append)(a))(b)}); +const monadEffectAff = {liftEffect: _liftEffect, Monad0: () => monadAff}; +const effectCanceler = x => { + const $1 = _liftEffect(x); + return v => $1; +}; +const joinFiber = v => makeAff(k => { + const $2 = v.join(k); + return () => { + const a$p = $2(); + return (() => { + const $4 = _liftEffect(a$p); + return v$1 => $4; + })(); + }; +}); +const functorFiber = {map: f => t => Effect$dUnsafe.unsafePerformEffect(_makeFiber(ffiUtil, _map(f)(joinFiber(t))))}; +const applyFiber = {apply: t1 => t2 => Effect$dUnsafe.unsafePerformEffect(_makeFiber(ffiUtil, applyAff.apply(joinFiber(t1))(joinFiber(t2)))), Functor0: () => functorFiber}; +const applicativeFiber = {pure: a => Effect$dUnsafe.unsafePerformEffect(_makeFiber(ffiUtil, _pure(a))), Apply0: () => applyFiber}; +const killFiber = e => v => _bind(_liftEffect(v.isSuspended))(suspended => { + if (suspended) { + return _liftEffect((() => { + const $3 = v.kill(e, v$1 => () => Data$dUnit.unit); + return () => { + $3(); + return Data$dUnit.unit; + }; + })()); + } + return makeAff(k => { + const $4 = v.kill(e, k); + return () => { + const a$p = $4(); + return (() => { + const $6 = _liftEffect(a$p); + return v$1 => $6; + })(); + }; + }); +}); +const fiberCanceler = x => a => killFiber(a)(x); +const monadSTAff = {liftST: x => _liftEffect(x), Monad0: () => monadAff}; +const monadThrowAff = {throwError: _throwError, Monad0: () => monadAff}; +const monadErrorAff = {catchError: _catchError, MonadThrow0: () => monadThrowAff}; +const $$try = /* #__PURE__ */ Control$dMonad$dError$dClass.try(monadErrorAff); +const attempt = $$try; +const runAff = k => aff => { + const $2 = _makeFiber(ffiUtil, _bind($$try(aff))(x => _liftEffect(k(x)))); + return () => { + const fiber = $2(); + fiber.run(); + return fiber; + }; +}; +const runAff_ = k => aff => { + const $2 = runAff(k)(aff); + return () => { + $2(); + return Data$dUnit.unit; + }; +}; +const runSuspendedAff = k => aff => _makeFiber(ffiUtil, _bind($$try(aff))(x => _liftEffect(k(x)))); +const parallelAff = {parallel: Unsafe$dCoerce.unsafeCoerce, sequential: _sequential, Monad0: () => monadAff, Applicative1: () => applicativeParAff}; +const applicativeParAff = {pure: x => _pure(x), Apply0: () => applyParAff}; +const parSequence_ = /* #__PURE__ */ Control$dParallel.parTraverse_(parallelAff)(Data$dFoldable.foldableArray)(Control$dParallel.identity); +const monoidParAff = dictMonoid => { + const $1 = dictMonoid.Semigroup0(); + const semigroupParAff1 = {append: a => b => _parAffApply(_parAffMap($1.append)(a))(b)}; + return {mempty: _pure(dictMonoid.mempty), Semigroup0: () => semigroupParAff1}; +}; +const semigroupCanceler = {append: v => v1 => err => parSequence_([v(err), v1(err)])}; +const supervise = aff => { + const killError = Effect$dException.error("[Aff] Child fiber outlived parent"); + return generalBracket(_liftEffect((() => { + const $2 = _makeSupervisedFiber(ffiUtil, aff); + return () => { + const sup = $2(); + sup.fiber.run(); + return sup; + }; + })()))({ + killed: err => sup => parSequence_([killFiber(err)(sup.fiber), makeAff(k => _killAll(err, sup.supervisor, k(Data$dEither.$Either("Right", Data$dUnit.unit))))]), + failed: v => sup => makeAff(k => _killAll(killError, sup.supervisor, k(Data$dEither.$Either("Right", Data$dUnit.unit)))), + completed: v => sup => makeAff(k => _killAll(killError, sup.supervisor, k(Data$dEither.$Either("Right", Data$dUnit.unit)))) + })(x => joinFiber(x.fiber)); +}; +const monadRecAff = { + tailRecM: k => { + const go = a => _bind(k(a))(res => { + if (res.tag === "Done") { return _pure(res._1); } + if (res.tag === "Loop") { return go(res._1); } + $runtime.fail(); + }); + return go; + }, + Monad0: () => monadAff +}; +const monoidAff = dictMonoid => { + const $1 = dictMonoid.Semigroup0(); + const semigroupAff1 = {append: a => b => applyAff.apply(_map($1.append)(a))(b)}; + return {mempty: _pure(dictMonoid.mempty), Semigroup0: () => semigroupAff1}; +}; +const nonCanceler = /* #__PURE__ */ (() => { + const $0 = _pure(Data$dUnit.unit); + return v => $0; +})(); +const monoidCanceler = {mempty: nonCanceler, Semigroup0: () => semigroupCanceler}; +const never = /* #__PURE__ */ makeAff(v => () => nonCanceler); +const apathize = /* #__PURE__ */ (() => { + const $0 = _map(v => Data$dUnit.unit); + return x => $0($$try(x)); +})(); +const altParAff = {alt: _parAffAlt, Functor0: () => functorParAff}; +const altAff = {alt: a1 => a2 => _catchError(a1)(v => a2), Functor0: () => functorAff}; +const plusAff = {empty: /* #__PURE__ */ _throwError(/* #__PURE__ */ Effect$dException.error("Always fails")), Alt0: () => altAff}; +const plusParAff = /* #__PURE__ */ (() => ({empty: plusAff.empty, Alt0: () => altParAff}))(); +const alternativeParAff = {Applicative0: () => applicativeParAff, Plus1: () => plusParAff}; +export { + Canceler, + altAff, + altParAff, + alternativeParAff, + apathize, + applicativeAff, + applicativeFiber, + applicativeParAff, + applyAff, + applyFiber, + applyParAff, + attempt, + bindAff, + bracket, + cancelWith, + delay, + effectCanceler, + ffiUtil, + fiberCanceler, + $$finally as finally, + forkAff, + functorAff, + functorFiber, + functorParAff, + invincible, + joinFiber, + killFiber, + launchAff, + launchAff_, + launchSuspendedAff, + lazyAff, + makeFiber, + monadAff, + monadEffectAff, + monadErrorAff, + monadRecAff, + monadSTAff, + monadThrowAff, + monoidAff, + monoidCanceler, + monoidParAff, + never, + newtypeCanceler, + nonCanceler, + parSequence_, + parallelAff, + plusAff, + plusParAff, + runAff, + runAff_, + runSuspendedAff, + semigroupAff, + semigroupCanceler, + semigroupParAff, + supervise, + suspendAff, + $$try as try +}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Effect.Class.Console/index.js b/.storybook/purescript-indexer/output-es/Effect.Class.Console/index.js new file mode 100644 index 0000000..bbc1937 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Effect.Class.Console/index.js @@ -0,0 +1,17 @@ +import * as $runtime from "../runtime.js"; +import * as Effect$dConsole from "../Effect.Console/index.js"; +const warnShow = dictMonadEffect => dictShow => x => dictMonadEffect.liftEffect(Effect$dConsole.warn(dictShow.show(x))); +const warn = dictMonadEffect => x => dictMonadEffect.liftEffect(Effect$dConsole.warn(x)); +const timeLog = dictMonadEffect => x => dictMonadEffect.liftEffect(Effect$dConsole.timeLog(x)); +const timeEnd = dictMonadEffect => x => dictMonadEffect.liftEffect(Effect$dConsole.timeEnd(x)); +const time = dictMonadEffect => x => dictMonadEffect.liftEffect(Effect$dConsole.time(x)); +const logShow = dictMonadEffect => dictShow => x => dictMonadEffect.liftEffect(Effect$dConsole.log(dictShow.show(x))); +const log = dictMonadEffect => x => dictMonadEffect.liftEffect(Effect$dConsole.log(x)); +const infoShow = dictMonadEffect => dictShow => x => dictMonadEffect.liftEffect(Effect$dConsole.info(dictShow.show(x))); +const info = dictMonadEffect => x => dictMonadEffect.liftEffect(Effect$dConsole.info(x)); +const errorShow = dictMonadEffect => dictShow => x => dictMonadEffect.liftEffect(Effect$dConsole.error(dictShow.show(x))); +const error = dictMonadEffect => x => dictMonadEffect.liftEffect(Effect$dConsole.error(x)); +const debugShow = dictMonadEffect => dictShow => x => dictMonadEffect.liftEffect(Effect$dConsole.debug(dictShow.show(x))); +const debug = dictMonadEffect => x => dictMonadEffect.liftEffect(Effect$dConsole.debug(x)); +const clear = dictMonadEffect => dictMonadEffect.liftEffect(Effect$dConsole.clear); +export {clear, debug, debugShow, error, errorShow, info, infoShow, log, logShow, time, timeEnd, timeLog, warn, warnShow}; diff --git a/.storybook/purescript-indexer/output-es/Effect.Class/index.js b/.storybook/purescript-indexer/output-es/Effect.Class/index.js new file mode 100644 index 0000000..9cce55d --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Effect.Class/index.js @@ -0,0 +1,5 @@ +import * as $runtime from "../runtime.js"; +import * as Effect from "../Effect/index.js"; +const monadEffectEffect = {liftEffect: x => x, Monad0: () => Effect.monadEffect}; +const liftEffect = dict => dict.liftEffect; +export {liftEffect, monadEffectEffect}; diff --git a/.storybook/purescript-indexer/output-es/Effect.Console/foreign.js b/.storybook/purescript-indexer/output-es/Effect.Console/foreign.js new file mode 100644 index 0000000..b96fed8 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Effect.Console/foreign.js @@ -0,0 +1,51 @@ +export const log = function (s) { + return function () { + console.log(s); + }; +}; + +export const warn = function (s) { + return function () { + console.warn(s); + }; +}; + +export const error = function (s) { + return function () { + console.error(s); + }; +}; + +export const info = function (s) { + return function () { + console.info(s); + }; +}; + +export const debug = function (s) { + return function () { + console.debug(s); + }; +}; + +export const time = function (s) { + return function () { + console.time(s); + }; +}; + +export const timeLog = function (s) { + return function () { + console.timeLog(s); + }; +}; + +export const timeEnd = function (s) { + return function () { + console.timeEnd(s); + }; +}; + +export const clear = function () { + console.clear(); +}; diff --git a/.storybook/purescript-indexer/output-es/Effect.Console/index.js b/.storybook/purescript-indexer/output-es/Effect.Console/index.js new file mode 100644 index 0000000..59677c3 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Effect.Console/index.js @@ -0,0 +1,9 @@ +import * as $runtime from "../runtime.js"; +import {clear, debug, error, info, log, time, timeEnd, timeLog, warn} from "./foreign.js"; +const warnShow = dictShow => a => warn(dictShow.show(a)); +const logShow = dictShow => a => log(dictShow.show(a)); +const infoShow = dictShow => a => info(dictShow.show(a)); +const errorShow = dictShow => a => error(dictShow.show(a)); +const debugShow = dictShow => a => debug(dictShow.show(a)); +export {debugShow, errorShow, infoShow, logShow, warnShow}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Effect.Exception.Unsafe/index.js b/.storybook/purescript-indexer/output-es/Effect.Exception.Unsafe/index.js new file mode 100644 index 0000000..0945d1a --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Effect.Exception.Unsafe/index.js @@ -0,0 +1,6 @@ +import * as $runtime from "../runtime.js"; +import * as Effect$dException from "../Effect.Exception/index.js"; +import * as Effect$dUnsafe from "../Effect.Unsafe/index.js"; +const unsafeThrowException = x => Effect$dUnsafe.unsafePerformEffect(Effect$dException.throwException(x)); +const unsafeThrow = x => Effect$dUnsafe.unsafePerformEffect(Effect$dException.throwException(Effect$dException.error(x))); +export {unsafeThrow, unsafeThrowException}; diff --git a/.storybook/purescript-indexer/output-es/Effect.Exception/foreign.js b/.storybook/purescript-indexer/output-es/Effect.Exception/foreign.js new file mode 100644 index 0000000..40c0eee --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Effect.Exception/foreign.js @@ -0,0 +1,45 @@ +export function showErrorImpl(err) { + return err.stack || err.toString(); +} + +export function error(msg) { + return new Error(msg); +} + +export function message(e) { + return e.message; +} + +export function name(e) { + return e.name || "Error"; +} + +export function stackImpl(just) { + return function (nothing) { + return function (e) { + return e.stack ? just(e.stack) : nothing; + }; + }; +} + +export function throwException(e) { + return function () { + throw e; + }; +} + +export function catchException(c) { + return function (t) { + return function () { + try { + return t(); + } catch (e) { + if (e instanceof Error || Object.prototype.toString.call(e) === "[object Error]") { + return c(e)(); + } else { + return c(new Error(e.toString()))(); + } + } + }; + }; +} diff --git a/.storybook/purescript-indexer/output-es/Effect.Exception/index.js b/.storybook/purescript-indexer/output-es/Effect.Exception/index.js new file mode 100644 index 0000000..f014b17 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Effect.Exception/index.js @@ -0,0 +1,15 @@ +// | This module defines an effect, actions and handlers for working +// | with JavaScript exceptions. +import * as $runtime from "../runtime.js"; +import * as Data$dEither from "../Data.Either/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import {catchException, error, message, name, showErrorImpl, stackImpl, throwException} from "./foreign.js"; +const $$try = action => catchException(x => () => Data$dEither.$Either("Left", x))(() => { + const a$p = action(); + return Data$dEither.$Either("Right", a$p); +}); +const $$throw = x => throwException(error(x)); +const stack = /* #__PURE__ */ stackImpl(Data$dMaybe.Just)(Data$dMaybe.Nothing); +const showError = {show: showErrorImpl}; +export {showError, stack, $$throw as throw, $$try as try}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Effect.Now/foreign.js b/.storybook/purescript-indexer/output-es/Effect.Now/foreign.js new file mode 100644 index 0000000..9e4023b --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Effect.Now/foreign.js @@ -0,0 +1,8 @@ +export function now() { + return Date.now(); +} + +export function getTimezoneOffset() { + var n = new Date(Date.now()); + return n.getTimezoneOffset(); +} diff --git a/.storybook/purescript-indexer/output-es/Effect.Now/index.js b/.storybook/purescript-indexer/output-es/Effect.Now/index.js new file mode 100644 index 0000000..9a396cc --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Effect.Now/index.js @@ -0,0 +1,17 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dDateTime$dInstant from "../Data.DateTime.Instant/index.js"; +import {getTimezoneOffset, now} from "./foreign.js"; +const nowTime = () => { + const a$p = now(); + return Data$dDateTime$dInstant.toDateTime(a$p)._2; +}; +const nowDateTime = () => { + const a$p = now(); + return Data$dDateTime$dInstant.toDateTime(a$p); +}; +const nowDate = () => { + const a$p = now(); + return Data$dDateTime$dInstant.toDateTime(a$p)._1; +}; +export {nowDate, nowDateTime, nowTime}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Effect.Ref/foreign.js b/.storybook/purescript-indexer/output-es/Effect.Ref/foreign.js new file mode 100644 index 0000000..6427e0d --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Effect.Ref/foreign.js @@ -0,0 +1,37 @@ +export const _new = function (val) { + return function () { + return { value: val }; + }; +}; + +export const newWithSelf = function (f) { + return function () { + var ref = { value: null }; + ref.value = f(ref); + return ref; + }; +}; + +export const read = function (ref) { + return function () { + return ref.value; + }; +}; + +export const modifyImpl = function (f) { + return function (ref) { + return function () { + var t = f(ref.value); + ref.value = t.state; + return t.value; + }; + }; +}; + +export const write = function (val) { + return function (ref) { + return function () { + ref.value = val; + }; + }; +}; diff --git a/.storybook/purescript-indexer/output-es/Effect.Ref/index.js b/.storybook/purescript-indexer/output-es/Effect.Ref/index.js new file mode 100644 index 0000000..4e3c1dc --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Effect.Ref/index.js @@ -0,0 +1,37 @@ +// | This module defines the `Ref` type for mutable value references, as well +// | as actions for working with them. +// | +// | You'll notice that all of the functions that operate on a `Ref` (e.g. +// | `new`, `read`, `write`) return their result wrapped in an `Effect`. +// | Working with mutable references is considered effectful in PureScript +// | because of the principle of purity: functions should not have side +// | effects, and should return the same result when called with the same +// | arguments. If a `Ref` could be written to without using `Effect`, that +// | would cause a side effect (the effect of changing the result of subsequent +// | reads for that `Ref`). If there were a function for reading the current +// | value of a `Ref` without the result being wrapped in `Effect`, the result +// | of calling that function would change each time a new value was written to +// | the `Ref`. Even creating a new `Ref` is effectful: if there were a +// | function for creating a new `Ref` with the type `forall s. s -> Ref s`, +// | then calling that function twice with the same argument would not give the +// | same result in each case, since you'd end up with two distinct references +// | which could be updated independently of each other. +// | +// | _Note_: `Control.Monad.ST` provides a pure alternative to `Ref` when +// | mutation is restricted to a local scope. +import * as $runtime from "../runtime.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +import {_new, modifyImpl, newWithSelf, read, write} from "./foreign.js"; +const $$new = _new; +const modify$p = modifyImpl; +const modify = f => modifyImpl(s => { + const s$p = f(s); + return {state: s$p, value: s$p}; +}); +const modify_ = f => s => () => { + const $2 = s.value; + s.value = f($2); + return Data$dUnit.unit; +}; +export {modify, modify$p, modify_, $$new as new}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Effect.Uncurried/foreign.js b/.storybook/purescript-indexer/output-es/Effect.Uncurried/foreign.js new file mode 100644 index 0000000..09d4933 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Effect.Uncurried/foreign.js @@ -0,0 +1,229 @@ +export const mkEffectFn1 = function mkEffectFn1(fn) { + return function(x) { + return fn(x)(); + }; +}; + +export const mkEffectFn2 = function mkEffectFn2(fn) { + return function(a, b) { + return fn(a)(b)(); + }; +}; + +export const mkEffectFn3 = function mkEffectFn3(fn) { + return function(a, b, c) { + return fn(a)(b)(c)(); + }; +}; + +export const mkEffectFn4 = function mkEffectFn4(fn) { + return function(a, b, c, d) { + return fn(a)(b)(c)(d)(); + }; +}; + +export const mkEffectFn5 = function mkEffectFn5(fn) { + return function(a, b, c, d, e) { + return fn(a)(b)(c)(d)(e)(); + }; +}; + +export const mkEffectFn6 = function mkEffectFn6(fn) { + return function(a, b, c, d, e, f) { + return fn(a)(b)(c)(d)(e)(f)(); + }; +}; + +export const mkEffectFn7 = function mkEffectFn7(fn) { + return function(a, b, c, d, e, f, g) { + return fn(a)(b)(c)(d)(e)(f)(g)(); + }; +}; + +export const mkEffectFn8 = function mkEffectFn8(fn) { + return function(a, b, c, d, e, f, g, h) { + return fn(a)(b)(c)(d)(e)(f)(g)(h)(); + }; +}; + +export const mkEffectFn9 = function mkEffectFn9(fn) { + return function(a, b, c, d, e, f, g, h, i) { + return fn(a)(b)(c)(d)(e)(f)(g)(h)(i)(); + }; +}; + +export const mkEffectFn10 = function mkEffectFn10(fn) { + return function(a, b, c, d, e, f, g, h, i, j) { + return fn(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(); + }; +}; + +export const runEffectFn1 = function runEffectFn1(fn) { + return function(a) { + return function() { + return fn(a); + }; + }; +}; + +export const runEffectFn2 = function runEffectFn2(fn) { + return function(a) { + return function(b) { + return function() { + return fn(a, b); + }; + }; + }; +}; + +export const runEffectFn3 = function runEffectFn3(fn) { + return function(a) { + return function(b) { + return function(c) { + return function() { + return fn(a, b, c); + }; + }; + }; + }; +}; + +export const runEffectFn4 = function runEffectFn4(fn) { + return function(a) { + return function(b) { + return function(c) { + return function(d) { + return function() { + return fn(a, b, c, d); + }; + }; + }; + }; + }; +}; + +export const runEffectFn5 = function runEffectFn5(fn) { + return function(a) { + return function(b) { + return function(c) { + return function(d) { + return function(e) { + return function() { + return fn(a, b, c, d, e); + }; + }; + }; + }; + }; + }; +}; + +export const runEffectFn6 = function runEffectFn6(fn) { + return function(a) { + return function(b) { + return function(c) { + return function(d) { + return function(e) { + return function(f) { + return function() { + return fn(a, b, c, d, e, f); + }; + }; + }; + }; + }; + }; + }; +}; + +export const runEffectFn7 = function runEffectFn7(fn) { + return function(a) { + return function(b) { + return function(c) { + return function(d) { + return function(e) { + return function(f) { + return function(g) { + return function() { + return fn(a, b, c, d, e, f, g); + }; + }; + }; + }; + }; + }; + }; + }; +}; + +export const runEffectFn8 = function runEffectFn8(fn) { + return function(a) { + return function(b) { + return function(c) { + return function(d) { + return function(e) { + return function(f) { + return function(g) { + return function(h) { + return function() { + return fn(a, b, c, d, e, f, g, h); + }; + }; + }; + }; + }; + }; + }; + }; + }; +}; + +export const runEffectFn9 = function runEffectFn9(fn) { + return function(a) { + return function(b) { + return function(c) { + return function(d) { + return function(e) { + return function(f) { + return function(g) { + return function(h) { + return function(i) { + return function() { + return fn(a, b, c, d, e, f, g, h, i); + }; + }; + }; + }; + }; + }; + }; + }; + }; + }; +}; + +export const runEffectFn10 = function runEffectFn10(fn) { + return function(a) { + return function(b) { + return function(c) { + return function(d) { + return function(e) { + return function(f) { + return function(g) { + return function(h) { + return function(i) { + return function(j) { + return function() { + return fn(a, b, c, d, e, f, g, h, i, j); + }; + }; + }; + }; + }; + }; + }; + }; + }; + }; + }; +}; diff --git a/.storybook/purescript-indexer/output-es/Effect.Uncurried/index.js b/.storybook/purescript-indexer/output-es/Effect.Uncurried/index.js new file mode 100644 index 0000000..98d6deb --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Effect.Uncurried/index.js @@ -0,0 +1,377 @@ +// | This module defines types for effectful uncurried functions, as well as +// | functions for converting back and forth between them. +// | +// | This makes it possible to give a PureScript type to JavaScript functions +// | such as this one: +// | +// | ```javascript +// | function logMessage(level, message) { +// | console.log(level + ": " + message); +// | } +// | ``` +// | +// | In particular, note that `logMessage` performs effects immediately after +// | receiving all of its parameters, so giving it the type `Data.Function.Fn2 +// | String String Unit`, while convenient, would effectively be a lie. +// | +// | One way to handle this would be to convert the function into the normal +// | PureScript form (namely, a curried function returning an Effect action), +// | and performing the marshalling in JavaScript, in the FFI module, like this: +// | +// | ```purescript +// | -- In the PureScript file: +// | foreign import logMessage :: String -> String -> Effect Unit +// | ``` +// | +// | ```javascript +// | // In the FFI file: +// | exports.logMessage = function(level) { +// | return function(message) { +// | return function() { +// | logMessage(level, message); +// | }; +// | }; +// | }; +// | ``` +// | +// | This method, unfortunately, turns out to be both tiresome and error-prone. +// | This module offers an alternative solution. By providing you with: +// | +// | * the ability to give the real `logMessage` function a PureScript type, +// | and +// | * functions for converting between this form and the normal PureScript +// | form, +// | +// | the FFI boilerplate is no longer needed. The previous example becomes: +// | +// | ```purescript +// | -- In the PureScript file: +// | foreign import logMessageImpl :: EffectFn2 String String Unit +// | ``` +// | +// | ```javascript +// | // In the FFI file: +// | exports.logMessageImpl = logMessage +// | ``` +// | +// | You can then use `runEffectFn2` to provide a nicer version: +// | +// | ```purescript +// | logMessage :: String -> String -> Effect Unit +// | logMessage = runEffectFn2 logMessageImpl +// | ``` +// | +// | (note that this has the same type as the original `logMessage`). +// | +// | Effectively, we have reduced the risk of errors by moving as much code into +// | PureScript as possible, so that we can leverage the type system. Hopefully, +// | this is a little less tiresome too. +// | +// | Here's a slightly more advanced example. Here, because we are using +// | callbacks, we need to use `mkEffectFn{N}` as well. +// | +// | Suppose our `logMessage` changes so that it sometimes sends details of the +// | message to some external server, and in those cases, we want the resulting +// | `HttpResponse` (for whatever reason). +// | +// | ```javascript +// | function logMessage(level, message, callback) { +// | console.log(level + ": " + message); +// | if (level > LogLevel.WARN) { +// | LogAggregatorService.post("/logs", { +// | level: level, +// | message: message +// | }, callback); +// | } else { +// | callback(null); +// | } +// | } +// | ``` +// | +// | The import then looks like this: +// | ```purescript +// | foreign import logMessageImpl +// | EffectFn3 +// | String +// | String +// | (EffectFn1 (Nullable HttpResponse) Unit) +// | Unit +// | ``` +// | +// | And, as before, the FFI file is extremely simple: +// | +// | ```javascript +// | exports.logMessageImpl = logMessage +// | ``` +// | +// | Finally, we use `runEffectFn{N}` and `mkEffectFn{N}` for a more comfortable +// | PureScript version: +// | +// | ```purescript +// | logMessage :: +// | String -> +// | String -> +// | (Nullable HttpResponse -> Effect Unit) -> +// | Effect Unit +// | logMessage level message callback = +// | runEffectFn3 logMessageImpl level message (mkEffectFn1 callback) +// | ``` +// | +// | The general naming scheme for functions and types in this module is as +// | follows: +// | +// | * `EffectFn{N}` means, an uncurried function which accepts N arguments and +// | performs some effects. The first N arguments are the actual function's +// | argument. The last type argument is the return type. +// | * `runEffectFn{N}` takes an `EffectFn` of N arguments, and converts it into +// | the normal PureScript form: a curried function which returns an Effect +// | action. +// | * `mkEffectFn{N}` is the inverse of `runEffectFn{N}`. It can be useful for +// | callbacks. +// | +import * as $runtime from "../runtime.js"; +import { + mkEffectFn1, + mkEffectFn10, + mkEffectFn2, + mkEffectFn3, + mkEffectFn4, + mkEffectFn5, + mkEffectFn6, + mkEffectFn7, + mkEffectFn8, + mkEffectFn9, + runEffectFn1, + runEffectFn10, + runEffectFn2, + runEffectFn3, + runEffectFn4, + runEffectFn5, + runEffectFn6, + runEffectFn7, + runEffectFn8, + runEffectFn9 +} from "./foreign.js"; +const semigroupEffectFn9 = dictSemigroup => ( + { + append: f1 => f2 => (a, b, c, d, e, f, g, h, i) => { + const a$p = f1(a, b, c, d, e, f, g, h, i); + const a$p$1 = f2(a, b, c, d, e, f, g, h, i); + return dictSemigroup.append(a$p)(a$p$1); + } + } +); +const semigroupEffectFn8 = dictSemigroup => ( + { + append: f1 => f2 => (a, b, c, d, e, f, g, h) => { + const a$p = f1(a, b, c, d, e, f, g, h); + const a$p$1 = f2(a, b, c, d, e, f, g, h); + return dictSemigroup.append(a$p)(a$p$1); + } + } +); +const semigroupEffectFn7 = dictSemigroup => ( + { + append: f1 => f2 => (a, b, c, d, e, f, g) => { + const a$p = f1(a, b, c, d, e, f, g); + const a$p$1 = f2(a, b, c, d, e, f, g); + return dictSemigroup.append(a$p)(a$p$1); + } + } +); +const semigroupEffectFn6 = dictSemigroup => ( + { + append: f1 => f2 => (a, b, c, d, e, f) => { + const a$p = f1(a, b, c, d, e, f); + const a$p$1 = f2(a, b, c, d, e, f); + return dictSemigroup.append(a$p)(a$p$1); + } + } +); +const semigroupEffectFn5 = dictSemigroup => ( + { + append: f1 => f2 => (a, b, c, d, e) => { + const a$p = f1(a, b, c, d, e); + const a$p$1 = f2(a, b, c, d, e); + return dictSemigroup.append(a$p)(a$p$1); + } + } +); +const semigroupEffectFn4 = dictSemigroup => ( + { + append: f1 => f2 => (a, b, c, d) => { + const a$p = f1(a, b, c, d); + const a$p$1 = f2(a, b, c, d); + return dictSemigroup.append(a$p)(a$p$1); + } + } +); +const semigroupEffectFn3 = dictSemigroup => ( + { + append: f1 => f2 => (a, b, c) => { + const a$p = f1(a, b, c); + const a$p$1 = f2(a, b, c); + return dictSemigroup.append(a$p)(a$p$1); + } + } +); +const semigroupEffectFn2 = dictSemigroup => ( + { + append: f1 => f2 => (a, b) => { + const a$p = f1(a, b); + const a$p$1 = f2(a, b); + return dictSemigroup.append(a$p)(a$p$1); + } + } +); +const semigroupEffectFn10 = dictSemigroup => ( + { + append: f1 => f2 => (a, b, c, d, e, f, g, h, i, j) => { + const a$p = f1(a, b, c, d, e, f, g, h, i, j); + const a$p$1 = f2(a, b, c, d, e, f, g, h, i, j); + return dictSemigroup.append(a$p)(a$p$1); + } + } +); +const semigroupEffectFn1 = dictSemigroup => ( + { + append: f1 => f2 => a => { + const a$p = f1(a); + const a$p$1 = f2(a); + return dictSemigroup.append(a$p)(a$p$1); + } + } +); +const monoidEffectFn9 = dictMonoid => { + const $1 = dictMonoid.Semigroup0(); + const semigroupEffectFn91 = { + append: f1 => f2 => (a, b, c, d, e, f, g, h, i) => { + const a$p = f1(a, b, c, d, e, f, g, h, i); + const a$p$1 = f2(a, b, c, d, e, f, g, h, i); + return $1.append(a$p)(a$p$1); + } + }; + return {mempty: (v, v1, v2, v3, v4, v5, v6, v7, v8) => dictMonoid.mempty, Semigroup0: () => semigroupEffectFn91}; +}; +const monoidEffectFn8 = dictMonoid => { + const $1 = dictMonoid.Semigroup0(); + const semigroupEffectFn81 = { + append: f1 => f2 => (a, b, c, d, e, f, g, h) => { + const a$p = f1(a, b, c, d, e, f, g, h); + const a$p$1 = f2(a, b, c, d, e, f, g, h); + return $1.append(a$p)(a$p$1); + } + }; + return {mempty: (v, v1, v2, v3, v4, v5, v6, v7) => dictMonoid.mempty, Semigroup0: () => semigroupEffectFn81}; +}; +const monoidEffectFn7 = dictMonoid => { + const $1 = dictMonoid.Semigroup0(); + const semigroupEffectFn71 = { + append: f1 => f2 => (a, b, c, d, e, f, g) => { + const a$p = f1(a, b, c, d, e, f, g); + const a$p$1 = f2(a, b, c, d, e, f, g); + return $1.append(a$p)(a$p$1); + } + }; + return {mempty: (v, v1, v2, v3, v4, v5, v6) => dictMonoid.mempty, Semigroup0: () => semigroupEffectFn71}; +}; +const monoidEffectFn6 = dictMonoid => { + const $1 = dictMonoid.Semigroup0(); + const semigroupEffectFn61 = { + append: f1 => f2 => (a, b, c, d, e, f) => { + const a$p = f1(a, b, c, d, e, f); + const a$p$1 = f2(a, b, c, d, e, f); + return $1.append(a$p)(a$p$1); + } + }; + return {mempty: (v, v1, v2, v3, v4, v5) => dictMonoid.mempty, Semigroup0: () => semigroupEffectFn61}; +}; +const monoidEffectFn5 = dictMonoid => { + const $1 = dictMonoid.Semigroup0(); + const semigroupEffectFn51 = { + append: f1 => f2 => (a, b, c, d, e) => { + const a$p = f1(a, b, c, d, e); + const a$p$1 = f2(a, b, c, d, e); + return $1.append(a$p)(a$p$1); + } + }; + return {mempty: (v, v1, v2, v3, v4) => dictMonoid.mempty, Semigroup0: () => semigroupEffectFn51}; +}; +const monoidEffectFn4 = dictMonoid => { + const $1 = dictMonoid.Semigroup0(); + const semigroupEffectFn41 = { + append: f1 => f2 => (a, b, c, d) => { + const a$p = f1(a, b, c, d); + const a$p$1 = f2(a, b, c, d); + return $1.append(a$p)(a$p$1); + } + }; + return {mempty: (v, v1, v2, v3) => dictMonoid.mempty, Semigroup0: () => semigroupEffectFn41}; +}; +const monoidEffectFn3 = dictMonoid => { + const $1 = dictMonoid.Semigroup0(); + const semigroupEffectFn31 = { + append: f1 => f2 => (a, b, c) => { + const a$p = f1(a, b, c); + const a$p$1 = f2(a, b, c); + return $1.append(a$p)(a$p$1); + } + }; + return {mempty: (v, v1, v2) => dictMonoid.mempty, Semigroup0: () => semigroupEffectFn31}; +}; +const monoidEffectFn2 = dictMonoid => { + const $1 = dictMonoid.Semigroup0(); + const semigroupEffectFn21 = { + append: f1 => f2 => (a, b) => { + const a$p = f1(a, b); + const a$p$1 = f2(a, b); + return $1.append(a$p)(a$p$1); + } + }; + return {mempty: (v, v1) => dictMonoid.mempty, Semigroup0: () => semigroupEffectFn21}; +}; +const monoidEffectFn10 = dictMonoid => { + const $1 = dictMonoid.Semigroup0(); + const semigroupEffectFn101 = { + append: f1 => f2 => (a, b, c, d, e, f, g, h, i, j) => { + const a$p = f1(a, b, c, d, e, f, g, h, i, j); + const a$p$1 = f2(a, b, c, d, e, f, g, h, i, j); + return $1.append(a$p)(a$p$1); + } + }; + return {mempty: (v, v1, v2, v3, v4, v5, v6, v7, v8, v9) => dictMonoid.mempty, Semigroup0: () => semigroupEffectFn101}; +}; +const monoidEffectFn1 = dictMonoid => { + const $1 = dictMonoid.Semigroup0(); + const semigroupEffectFn11 = { + append: f1 => f2 => a => { + const a$p = f1(a); + const a$p$1 = f2(a); + return $1.append(a$p)(a$p$1); + } + }; + return {mempty: v => dictMonoid.mempty, Semigroup0: () => semigroupEffectFn11}; +}; +export { + monoidEffectFn1, + monoidEffectFn10, + monoidEffectFn2, + monoidEffectFn3, + monoidEffectFn4, + monoidEffectFn5, + monoidEffectFn6, + monoidEffectFn7, + monoidEffectFn8, + monoidEffectFn9, + semigroupEffectFn1, + semigroupEffectFn10, + semigroupEffectFn2, + semigroupEffectFn3, + semigroupEffectFn4, + semigroupEffectFn5, + semigroupEffectFn6, + semigroupEffectFn7, + semigroupEffectFn8, + semigroupEffectFn9 +}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Effect.Unsafe/foreign.js b/.storybook/purescript-indexer/output-es/Effect.Unsafe/foreign.js new file mode 100644 index 0000000..8dadf92 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Effect.Unsafe/foreign.js @@ -0,0 +1,3 @@ +export const unsafePerformEffect = function (f) { + return f(); +}; diff --git a/.storybook/purescript-indexer/output-es/Effect.Unsafe/index.js b/.storybook/purescript-indexer/output-es/Effect.Unsafe/index.js new file mode 100644 index 0000000..30475a6 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Effect.Unsafe/index.js @@ -0,0 +1,4 @@ +import * as $runtime from "../runtime.js"; +import {unsafePerformEffect} from "./foreign.js"; +export {}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Effect/foreign.js b/.storybook/purescript-indexer/output-es/Effect/foreign.js new file mode 100644 index 0000000..364116f --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Effect/foreign.js @@ -0,0 +1,51 @@ +export const pureE = function (a) { + return function () { + return a; + }; +}; + +export const bindE = function (a) { + return function (f) { + return function () { + return f(a())(); + }; + }; +}; + +export const untilE = function (f) { + return function () { + while (!f()); + }; +}; + +export const whileE = function (f) { + return function (a) { + return function () { + while (f()) { + a(); + } + }; + }; +}; + +export const forE = function (lo) { + return function (hi) { + return function (f) { + return function () { + for (var i = lo; i < hi; i++) { + f(i)(); + } + }; + }; + }; +}; + +export const foreachE = function (as) { + return function (f) { + return function () { + for (var i = 0, l = as.length; i < l; i++) { + f(as[i])(); + } + }; + }; +}; diff --git a/.storybook/purescript-indexer/output-es/Effect/index.js b/.storybook/purescript-indexer/output-es/Effect/index.js new file mode 100644 index 0000000..362b047 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Effect/index.js @@ -0,0 +1,44 @@ +// | This module provides the `Effect` type, which is used to represent +// | _native_ effects. The `Effect` type provides a typed API for effectful +// | computations, while at the same time generating efficient JavaScript. +import * as $runtime from "../runtime.js"; +import {bindE, forE, foreachE, pureE, untilE, whileE} from "./foreign.js"; +const monadEffect = {Applicative0: () => applicativeEffect, Bind1: () => bindEffect}; +const bindEffect = {bind: bindE, Apply0: () => applyEffect}; +const applyEffect = { + apply: f => a => () => { + const f$p = f(); + const a$p = a(); + return applicativeEffect.pure(f$p(a$p))(); + }, + Functor0: () => functorEffect +}; +const applicativeEffect = {pure: pureE, Apply0: () => applyEffect}; +const functorEffect = { + map: f => a => () => { + const a$p = a(); + return f(a$p); + } +}; +const semigroupEffect = dictSemigroup => ( + { + append: a => b => () => { + const a$p = a(); + const a$p$1 = b(); + return dictSemigroup.append(a$p)(a$p$1); + } + } +); +const monoidEffect = dictMonoid => { + const $1 = dictMonoid.Semigroup0(); + const semigroupEffect1 = { + append: a => b => () => { + const a$p = a(); + const a$p$1 = b(); + return $1.append(a$p)(a$p$1); + } + }; + return {mempty: () => dictMonoid.mempty, Semigroup0: () => semigroupEffect1}; +}; +export {applicativeEffect, applyEffect, bindEffect, functorEffect, monadEffect, monoidEffect, semigroupEffect}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Foreign.Index/foreign.js b/.storybook/purescript-indexer/output-es/Foreign.Index/foreign.js new file mode 100644 index 0000000..3b077e5 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Foreign.Index/foreign.js @@ -0,0 +1,11 @@ +export function unsafeReadPropImpl(f, s, key, value) { + return value == null ? f : s(value[key]); +} + +export function unsafeHasOwnProperty(prop, value) { + return Object.prototype.hasOwnProperty.call(value, prop); +} + +export function unsafeHasProperty(prop, value) { + return prop in value; +} diff --git a/.storybook/purescript-indexer/output-es/Foreign.Index/index.js b/.storybook/purescript-indexer/output-es/Foreign.Index/index.js new file mode 100644 index 0000000..ab55250 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Foreign.Index/index.js @@ -0,0 +1,81 @@ +// | This module defines a type class for types which act like +// | _property indices_. +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dExcept$dTrans from "../Control.Monad.Except.Trans/index.js"; +import * as Data$dList$dTypes from "../Data.List.Types/index.js"; +import * as Data$dNonEmpty from "../Data.NonEmpty/index.js"; +import * as Foreign from "../Foreign/index.js"; +import {unsafeHasOwnProperty, unsafeHasProperty, unsafeReadPropImpl} from "./foreign.js"; +const unsafeReadProp = dictMonad => { + const $1 = Control$dMonad$dExcept$dTrans.monadThrowExceptT(dictMonad).throwError; + const pure = Control$dMonad$dExcept$dTrans.applicativeExceptT(dictMonad).pure; + return k => value => unsafeReadPropImpl( + $1(Data$dNonEmpty.$NonEmpty(Foreign.$ForeignError("TypeMismatch", "object", Foreign.typeOf(value)), Data$dList$dTypes.Nil)), + pure, + k, + value + ); +}; +const readProp = dictMonad => unsafeReadProp(dictMonad); +const readIndex = dictMonad => unsafeReadProp(dictMonad); +const ix = dict => dict.ix; +const index = dict => dict.index; +const indexableExceptT = dictMonad => { + const $1 = Control$dMonad$dExcept$dTrans.bindExceptT(dictMonad); + return {ix: dictIndex => f => i => $1.bind(f)(a => dictIndex.index(a)(i))}; +}; +const indexableForeign = dictMonad => ({ix: dictIndex => dictIndex.index}); +const hasPropertyImpl = v => v1 => { + if (Foreign.isNull(v1)) { return false; } + if (Foreign.isUndefined(v1)) { return false; } + if (Foreign.typeOf(v1) === "object" || Foreign.typeOf(v1) === "function") { return unsafeHasProperty(v, v1); } + return false; +}; +const hasProperty = dict => dict.hasProperty; +const hasOwnPropertyImpl = v => v1 => { + if (Foreign.isNull(v1)) { return false; } + if (Foreign.isUndefined(v1)) { return false; } + if (Foreign.typeOf(v1) === "object" || Foreign.typeOf(v1) === "function") { return unsafeHasOwnProperty(v, v1); } + return false; +}; +const indexInt = dictMonad => ( + { + index: (() => { + const $1 = unsafeReadProp(dictMonad); + return b => a => $1(a)(b); + })(), + hasProperty: hasPropertyImpl, + hasOwnProperty: hasOwnPropertyImpl, + errorAt: Foreign.ErrorAtIndex + } +); +const indexString = dictMonad => ( + { + index: (() => { + const $1 = unsafeReadProp(dictMonad); + return b => a => $1(a)(b); + })(), + hasProperty: hasPropertyImpl, + hasOwnProperty: hasOwnPropertyImpl, + errorAt: Foreign.ErrorAtProperty + } +); +const hasOwnProperty = dict => dict.hasOwnProperty; +const errorAt = dict => dict.errorAt; +export { + errorAt, + hasOwnProperty, + hasOwnPropertyImpl, + hasProperty, + hasPropertyImpl, + index, + indexInt, + indexString, + indexableExceptT, + indexableForeign, + ix, + readIndex, + readProp, + unsafeReadProp +}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Foreign.Keys/foreign.js b/.storybook/purescript-indexer/output-es/Foreign.Keys/foreign.js new file mode 100644 index 0000000..f5b8f0c --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Foreign.Keys/foreign.js @@ -0,0 +1,9 @@ +export const unsafeKeys = Object.keys || function (value) { + var keys = []; + for (var prop in value) { + if (Object.prototype.hasOwnProperty.call(value, prop)) { + keys.push(prop); + } + } + return keys; +}; diff --git a/.storybook/purescript-indexer/output-es/Foreign.Keys/index.js b/.storybook/purescript-indexer/output-es/Foreign.Keys/index.js new file mode 100644 index 0000000..9a2e3a4 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Foreign.Keys/index.js @@ -0,0 +1,20 @@ +// | This module provides functions for working with object properties +// | of Javascript objects. +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dExcept$dTrans from "../Control.Monad.Except.Trans/index.js"; +import * as Data$dList$dTypes from "../Data.List.Types/index.js"; +import * as Data$dNonEmpty from "../Data.NonEmpty/index.js"; +import * as Foreign from "../Foreign/index.js"; +import {unsafeKeys} from "./foreign.js"; +const keys = dictMonad => { + const $1 = Control$dMonad$dExcept$dTrans.monadThrowExceptT(dictMonad).throwError; + const pure = Control$dMonad$dExcept$dTrans.applicativeExceptT(dictMonad).pure; + return value => { + if (Foreign.isNull(value)) { return $1(Data$dNonEmpty.$NonEmpty(Foreign.$ForeignError("TypeMismatch", "object", "null"), Data$dList$dTypes.Nil)); } + if (Foreign.isUndefined(value)) { return $1(Data$dNonEmpty.$NonEmpty(Foreign.$ForeignError("TypeMismatch", "object", "undefined"), Data$dList$dTypes.Nil)); } + if (Foreign.typeOf(value) === "object") { return pure(unsafeKeys(value)); } + return $1(Data$dNonEmpty.$NonEmpty(Foreign.$ForeignError("TypeMismatch", "object", Foreign.typeOf(value)), Data$dList$dTypes.Nil)); + }; +}; +export {keys}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Foreign.Object.Gen/index.js b/.storybook/purescript-indexer/output-es/Foreign.Object.Gen/index.js new file mode 100644 index 0000000..f5a168a --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Foreign.Object.Gen/index.js @@ -0,0 +1,14 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dGen from "../Control.Monad.Gen/index.js"; +import * as Data$dList$dTypes from "../Data.List.Types/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +import * as Foreign$dObject from "../Foreign.Object/index.js"; +const fromFoldable = /* #__PURE__ */ Foreign$dObject.fromFoldable(Data$dList$dTypes.foldableList); +const genForeignObject = dictMonadRec => dictMonadGen => { + const Bind1 = dictMonadGen.Monad0().Bind1(); + const Apply0 = Bind1.Apply0(); + const map = Apply0.Functor0().map; + const unfoldable1 = Control$dMonad$dGen.unfoldable(dictMonadRec)(dictMonadGen)(Data$dList$dTypes.unfoldableList); + return genKey => genValue => dictMonadGen.sized(size => Bind1.bind(dictMonadGen.chooseInt(0)(size))(newSize => dictMonadGen.resize(v => newSize)(map(fromFoldable)(unfoldable1(Apply0.apply(map(Data$dTuple.Tuple)(genKey))(genValue)))))); +}; +export {fromFoldable, genForeignObject}; diff --git a/.storybook/purescript-indexer/output-es/Foreign.Object.ST.Unsafe/foreign.js b/.storybook/purescript-indexer/output-es/Foreign.Object.ST.Unsafe/foreign.js new file mode 100644 index 0000000..beb68a9 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Foreign.Object.ST.Unsafe/foreign.js @@ -0,0 +1,5 @@ +export function unsafeFreeze(m) { + return function () { + return m; + }; +} diff --git a/.storybook/purescript-indexer/output-es/Foreign.Object.ST.Unsafe/index.js b/.storybook/purescript-indexer/output-es/Foreign.Object.ST.Unsafe/index.js new file mode 100644 index 0000000..1f2d624 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Foreign.Object.ST.Unsafe/index.js @@ -0,0 +1,4 @@ +import * as $runtime from "../runtime.js"; +import {unsafeFreeze} from "./foreign.js"; +export {}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Foreign.Object.ST/foreign.js b/.storybook/purescript-indexer/output-es/Foreign.Object.ST/foreign.js new file mode 100644 index 0000000..ba1f9af --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Foreign.Object.ST/foreign.js @@ -0,0 +1,37 @@ +const newImpl = function () { + return {}; +}; +export { newImpl as new }; + +export function peekImpl(just) { + return function (nothing) { + return function (k) { + return function (m) { + return function () { + return {}.hasOwnProperty.call(m, k) ? just(m[k]) : nothing; + }; + }; + }; + }; +} + +export function poke(k) { + return function (v) { + return function (m) { + return function () { + m[k] = v; + return m; + }; + }; + }; +} + +const deleteImpl = function (k) { + return function (m) { + return function () { + delete m[k]; + return m; + }; + }; +}; +export { deleteImpl as delete }; diff --git a/.storybook/purescript-indexer/output-es/Foreign.Object.ST/index.js b/.storybook/purescript-indexer/output-es/Foreign.Object.ST/index.js new file mode 100644 index 0000000..84df15a --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Foreign.Object.ST/index.js @@ -0,0 +1,10 @@ +// | Helper functions for working with mutable objects using the `ST` effect. +// | +// | This module can be used when performance is important and mutation is a +// | local effect. +import * as $runtime from "../runtime.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import {delete as $$delete, new as $$new, peekImpl, poke} from "./foreign.js"; +const peek = /* #__PURE__ */ peekImpl(Data$dMaybe.Just)(Data$dMaybe.Nothing); +export {peek}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Foreign.Object.Unsafe/foreign.js b/.storybook/purescript-indexer/output-es/Foreign.Object.Unsafe/foreign.js new file mode 100644 index 0000000..e92f574 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Foreign.Object.Unsafe/foreign.js @@ -0,0 +1,5 @@ +export function unsafeIndex(m) { + return function (k) { + return m[k]; + }; +} diff --git a/.storybook/purescript-indexer/output-es/Foreign.Object.Unsafe/index.js b/.storybook/purescript-indexer/output-es/Foreign.Object.Unsafe/index.js new file mode 100644 index 0000000..99f2618 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Foreign.Object.Unsafe/index.js @@ -0,0 +1,4 @@ +import * as $runtime from "../runtime.js"; +import {unsafeIndex} from "./foreign.js"; +export {}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Foreign.Object/foreign.js b/.storybook/purescript-indexer/output-es/Foreign.Object/foreign.js new file mode 100644 index 0000000..9196412 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Foreign.Object/foreign.js @@ -0,0 +1,116 @@ +export function _copyST(m) { + return function () { + var r = {}; + for (var k in m) { + if (hasOwnProperty.call(m, k)) { + r[k] = m[k]; + } + } + return r; + }; +} + +export const empty = {}; + +export function runST(f) { + return f(); +} + +export function _fmapObject(m0, f) { + var m = {}; + for (var k in m0) { + if (hasOwnProperty.call(m0, k)) { + m[k] = f(m0[k]); + } + } + return m; +} + +export function _mapWithKey(m0, f) { + var m = {}; + for (var k in m0) { + if (hasOwnProperty.call(m0, k)) { + m[k] = f(k)(m0[k]); + } + } + return m; +} + +export function _foldM(bind) { + return function (f) { + return function (mz) { + return function (m) { + var acc = mz; + function g(k) { + return function (z) { + return f(z)(k)(m[k]); + }; + } + for (var k in m) { + if (hasOwnProperty.call(m, k)) { + acc = bind(acc)(g(k)); + } + } + return acc; + }; + }; + }; +} + +export function _foldSCObject(m, z, f, fromMaybe) { + var acc = z; + for (var k in m) { + if (hasOwnProperty.call(m, k)) { + var maybeR = f(acc)(k)(m[k]); + var r = fromMaybe(null)(maybeR); + if (r === null) return acc; + else acc = r; + } + } + return acc; +} + +export function all(f) { + return function (m) { + for (var k in m) { + if (hasOwnProperty.call(m, k) && !f(k)(m[k])) return false; + } + return true; + }; +} + +export function size(m) { + var s = 0; + for (var k in m) { + if (hasOwnProperty.call(m, k)) { + ++s; + } + } + return s; +} + +export function _lookup(no, yes, k, m) { + return k in m ? yes(m[k]) : no; +} + +export function _lookupST(no, yes, k, m) { + return function () { + return k in m ? yes(m[k]) : no; + }; +} + +export function toArrayWithKey(f) { + return function (m) { + var r = []; + for (var k in m) { + if (hasOwnProperty.call(m, k)) { + r.push(f(k)(m[k])); + } + } + return r; + }; +} + +export const keys = Object.keys || toArrayWithKey(function (k) { + return function () { return k; }; +}); diff --git a/.storybook/purescript-indexer/output-es/Foreign.Object/index.js b/.storybook/purescript-indexer/output-es/Foreign.Object/index.js new file mode 100644 index 0000000..b9e3998 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Foreign.Object/index.js @@ -0,0 +1,233 @@ +// | This module defines a type of native homogeneous Javascript Objects. +// | +// | To maximize performance, Javascript objects are not wrapped, +// | and some native code is used even when it's not necessary. +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dST$dInternal from "../Control.Monad.ST.Internal/index.js"; +import * as Data$dArray from "../Data.Array/index.js"; +import * as Data$dFoldable from "../Data.Foldable/index.js"; +import * as Data$dFoldableWithIndex from "../Data.FoldableWithIndex/index.js"; +import * as Data$dFunction from "../Data.Function/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dOrd from "../Data.Ord/index.js"; +import * as Data$dShow from "../Data.Show/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +import * as Data$dUnfoldable from "../Data.Unfoldable/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +import * as Foreign$dObject$dST from "../Foreign.Object.ST/index.js"; +import * as Unsafe$dCoerce from "../Unsafe.Coerce/index.js"; +import {_copyST, _fmapObject, _foldM, _foldSCObject, _lookup, _lookupST, _mapWithKey, all, empty, keys, runST, size, toArrayWithKey} from "./foreign.js"; +const showTuple = dictShow1 => ({show: v => "(Tuple " + (Data$dShow.showStringImpl(v._1) + (" " + (dictShow1.show(v._2) + ")")))}); +const forWithIndex_ = /* #__PURE__ */ Data$dFoldableWithIndex.forWithIndex_(Control$dMonad$dST$dInternal.applicativeST); +const for_ = /* #__PURE__ */ Data$dFoldable.for_(Control$dMonad$dST$dInternal.applicativeST); +const identity = x => x; +const ordTuple = /* #__PURE__ */ Data$dTuple.ordTuple(Data$dOrd.ordString); +const values = /* #__PURE__ */ toArrayWithKey(v => v1 => v1); +const toUnfoldable = dictUnfoldable => { + const $1 = toArrayWithKey(Data$dTuple.Tuple); + return x => Data$dArray.toUnfoldable(dictUnfoldable)($1(x)); +}; +const toAscUnfoldable = dictUnfoldable => { + const $1 = Data$dArray.sortWith(Data$dOrd.ordString)(Data$dTuple.fst); + const $2 = toArrayWithKey(Data$dTuple.Tuple); + return x => Data$dArray.toUnfoldable(dictUnfoldable)($1($2(x))); +}; +const toAscArray = /* #__PURE__ */ toAscUnfoldable(Data$dUnfoldable.unfoldableArray); +const toArray = /* #__PURE__ */ toArrayWithKey(Data$dTuple.Tuple); +const thawST = _copyST; +const singleton = k => v => runST(Control$dMonad$dST$dInternal.bind_(Foreign$dObject$dST.new)(Foreign$dObject$dST.poke(k)(v))); +const showObject = dictShow => { + const show = Data$dShow.showArrayImpl(showTuple(dictShow).show); + return {show: m => "(fromFoldable " + (show(toArray(m)) + ")")}; +}; +const mutate = f => m => runST((() => { + const $2 = _copyST(m); + return () => { + const s = $2(); + f(s)(); + return s; + }; +})()); +const member = $0 => $1 => _lookup(false, v => true, $0, $1); +const mapWithKey = f => m => _mapWithKey(m, f); +const lookup = $0 => $1 => _lookup(Data$dMaybe.Nothing, Data$dMaybe.Just, $0, $1); +const isSubmap = dictEq => m1 => m2 => all(k => v => _lookup(false, dictEq.eq(v), k, m2))(m1); +const isEmpty = /* #__PURE__ */ all(v => v1 => false); +const insert = k => v => mutate(Foreign$dObject$dST.poke(k)(v)); +const functorObject = {map: f => m => _fmapObject(m, f)}; +const functorWithIndexObject = {mapWithIndex: mapWithKey, Functor0: () => functorObject}; +const fromHomogeneous = () => Unsafe$dCoerce.unsafeCoerce; +const fromFoldableWithIndex = dictFoldableWithIndex => { + const forWithIndex_1 = forWithIndex_(dictFoldableWithIndex); + return l => runST(() => { + const s = Foreign$dObject$dST.new(); + forWithIndex_1(l)(k => v => Foreign$dObject$dST.poke(k)(v)(s))(); + return s; + }); +}; +const fromFoldableWith = dictFoldable => { + const for_1 = for_(dictFoldable); + return f => l => runST(() => { + const s = Foreign$dObject$dST.new(); + for_1(l)(v => { + const $6 = _lookupST(v._2, f(v._2), v._1, s); + return () => { + const v$p = $6(); + return Foreign$dObject$dST.poke(v._1)(v$p)(s)(); + }; + })(); + return s; + }); +}; +const fromFoldable = dictFoldable => { + const fromFoldable1 = Data$dArray.fromFoldableImpl(dictFoldable.foldr); + return l => runST(() => { + const s = Foreign$dObject$dST.new(); + Control$dMonad$dST$dInternal.foreach(fromFoldable1(l))(v => () => { + Foreign$dObject$dST.poke(v._1)(v._2)(s)(); + return Data$dUnit.unit; + })(); + return s; + }); +}; +const freezeST = _copyST; +const foldMaybe = f => z => m => _foldSCObject(m, z, f, Data$dMaybe.fromMaybe); +const foldM = dictMonad => { + const bind1 = dictMonad.Bind1().bind; + const pure1 = dictMonad.Applicative0().pure; + return f => z => _foldM(bind1)(f)(pure1(z)); +}; +const foldM1 = /* #__PURE__ */ foldM(Control$dMonad$dST$dInternal.monadST); +const union = m => mutate(s => foldM1(s$p => k => v => Foreign$dObject$dST.poke(k)(v)(s$p))(s)(m)); +const unions = dictFoldable => dictFoldable.foldl(union)(empty); +const unionWith = f => m1 => m2 => mutate(s1 => foldM1(s2 => k => v1 => Foreign$dObject$dST.poke(k)(_lookup(v1, v2 => f(v1)(v2), k, m2))(s2))(s1)(m1))(m2); +const semigroupObject = dictSemigroup => ({append: unionWith(dictSemigroup.append)}); +const monoidObject = dictSemigroup => ({mempty: empty, Semigroup0: () => ({append: unionWith(dictSemigroup.append)})}); +const fold = /* #__PURE__ */ _foldM(Data$dFunction.applyFlipped); +const foldMap = dictMonoid => { + const append1 = dictMonoid.Semigroup0().append; + return f => fold(acc => k => v => append1(acc)(f(k)(v)))(dictMonoid.mempty); +}; +const foldableObject = { + foldl: f => fold(z => v => f(z)), + foldr: f => z => m => Data$dFoldable.foldrArray(f)(z)(values(m)), + foldMap: dictMonoid => { + const foldMap1 = foldMap(dictMonoid); + return f => foldMap1(v => f); + } +}; +const foldableWithIndexObject = { + foldlWithIndex: f => fold(b => a => f(a)(b)), + foldrWithIndex: f => z => m => Data$dFoldable.foldrArray(v => f(v._1)(v._2))(z)(toArrayWithKey(Data$dTuple.Tuple)(m)), + foldMapWithIndex: dictMonoid => foldMap(dictMonoid), + Foldable0: () => foldableObject +}; +const traversableWithIndexObject = { + traverseWithIndex: dictApplicative => { + const Apply0 = dictApplicative.Apply0(); + const map = Apply0.Functor0().map; + return f => ms => fold(acc => k => v => Apply0.apply(map(b => a => mutate(Foreign$dObject$dST.poke(k)(a))(b))(acc))(f(k)(v)))(dictApplicative.pure(empty))(ms); + }, + FunctorWithIndex0: () => functorWithIndexObject, + FoldableWithIndex1: () => foldableWithIndexObject, + Traversable2: () => traversableObject +}; +const traversableObject = { + traverse: dictApplicative => { + const $1 = traversableWithIndexObject.traverseWithIndex(dictApplicative); + return x => $1(v => x); + }, + sequence: dictApplicative => traversableObject.traverse(dictApplicative)(identity), + Functor0: () => functorObject, + Foldable1: () => foldableObject +}; +const filterWithKey = predicate => m => runST(() => { + const m$p = Foreign$dObject$dST.new(); + return foldM1(acc => k => v => { + if (predicate(k)(v)) { return Foreign$dObject$dST.poke(k)(v)(acc); } + return () => acc; + })(m$p)(m)(); +}); +const filterKeys = predicate => filterWithKey(x => { + const $2 = predicate(x); + return v => $2; +}); +const filter = predicate => filterWithKey(v => predicate); +const eqObject = dictEq => ({eq: m1 => m2 => isSubmap(dictEq)(m1)(m2) && isSubmap(dictEq)(m2)(m1)}); +const ordObject = dictOrd => { + const compare = Data$dOrd.ordArray(ordTuple(dictOrd)).compare; + const eqObject1 = eqObject(dictOrd.Eq0()); + return {compare: m1 => m2 => compare(toAscArray(m1))(toAscArray(m2)), Eq0: () => eqObject1}; +}; +const eq1Object = {eq1: dictEq => eqObject(dictEq).eq}; +const $$delete = k => mutate(Foreign$dObject$dST.delete(k)); +const pop = k => m => { + const $2 = _lookup(Data$dMaybe.Nothing, Data$dMaybe.Just, k, m); + if ($2.tag === "Just") { return Data$dMaybe.$Maybe("Just", Data$dTuple.$Tuple($2._1, mutate(Foreign$dObject$dST.delete(k))(m))); } + return Data$dMaybe.Nothing; +}; +const alter = f => k => m => { + const v = f(_lookup(Data$dMaybe.Nothing, Data$dMaybe.Just, k, m)); + if (v.tag === "Nothing") { return mutate(Foreign$dObject$dST.delete(k))(m); } + if (v.tag === "Just") { return mutate(Foreign$dObject$dST.poke(k)(v._1))(m); } + $runtime.fail(); +}; +const update = f => k => m => alter(v2 => { + if (v2.tag === "Nothing") { return Data$dMaybe.Nothing; } + if (v2.tag === "Just") { return f(v2._1); } + $runtime.fail(); +})(k)(m); +export { + alter, + $$delete as delete, + eq1Object, + eqObject, + filter, + filterKeys, + filterWithKey, + fold, + foldM, + foldM1, + foldMap, + foldMaybe, + foldableObject, + foldableWithIndexObject, + forWithIndex_, + for_, + freezeST, + fromFoldable, + fromFoldableWith, + fromFoldableWithIndex, + fromHomogeneous, + functorObject, + functorWithIndexObject, + identity, + insert, + isEmpty, + isSubmap, + lookup, + mapWithKey, + member, + monoidObject, + mutate, + ordObject, + ordTuple, + pop, + semigroupObject, + showObject, + showTuple, + singleton, + thawST, + toArray, + toAscArray, + toAscUnfoldable, + toUnfoldable, + traversableObject, + traversableWithIndexObject, + union, + unionWith, + unions, + update, + values +}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Foreign/foreign.js b/.storybook/purescript-indexer/output-es/Foreign/foreign.js new file mode 100644 index 0000000..fdea3ee --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Foreign/foreign.js @@ -0,0 +1,19 @@ +export function typeOf(value) { + return typeof value; +} + +export function tagOf(value) { + return Object.prototype.toString.call(value).slice(8, -1); +} + +export function isNull(value) { + return value === null; +} + +export function isUndefined(value) { + return value === undefined; +} + +export const isArray = Array.isArray || function (value) { + return Object.prototype.toString.call(value) === "[object Array]"; +}; diff --git a/.storybook/purescript-indexer/output-es/Foreign/index.js b/.storybook/purescript-indexer/output-es/Foreign/index.js new file mode 100644 index 0000000..f6f5e4f --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Foreign/index.js @@ -0,0 +1,208 @@ +// | This module defines types and functions for working with _foreign_ +// | data. +// | +// | `ExceptT (NonEmptyList ForeignError) m` is used in this library +// | to encode possible failures when dealing with foreign data. +// | +// | The `Alt` instance for `ExceptT` allows us to accumulate errors, +// | unlike `Either`, which preserves only the last error. +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dExcept$dTrans from "../Control.Monad.Except.Trans/index.js"; +import * as Data$dEither from "../Data.Either/index.js"; +import * as Data$dInt from "../Data.Int/index.js"; +import * as Data$dList$dTypes from "../Data.List.Types/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dNonEmpty from "../Data.NonEmpty/index.js"; +import * as Data$dOrd from "../Data.Ord/index.js"; +import * as Data$dOrdering from "../Data.Ordering/index.js"; +import * as Data$dShow from "../Data.Show/index.js"; +import * as Data$dString$dCodeUnits from "../Data.String.CodeUnits/index.js"; +import * as Unsafe$dCoerce from "../Unsafe.Coerce/index.js"; +import {isArray, isNull, isUndefined, tagOf, typeOf} from "./foreign.js"; +const $ForeignError = (tag, _1, _2) => ({tag, _1, _2}); +const ForeignError = value0 => $ForeignError("ForeignError", value0); +const TypeMismatch = value0 => value1 => $ForeignError("TypeMismatch", value0, value1); +const ErrorAtIndex = value0 => value1 => $ForeignError("ErrorAtIndex", value0, value1); +const ErrorAtProperty = value0 => value1 => $ForeignError("ErrorAtProperty", value0, value1); +const unsafeToForeign = Unsafe$dCoerce.unsafeCoerce; +const unsafeFromForeign = Unsafe$dCoerce.unsafeCoerce; +const showForeignError = { + show: v => { + if (v.tag === "ForeignError") { return "(ForeignError " + (Data$dShow.showStringImpl(v._1) + ")"); } + if (v.tag === "ErrorAtIndex") { return "(ErrorAtIndex " + (Data$dShow.showIntImpl(v._1) + (" " + (showForeignError.show(v._2) + ")"))); } + if (v.tag === "ErrorAtProperty") { return "(ErrorAtProperty " + (Data$dShow.showStringImpl(v._1) + (" " + (showForeignError.show(v._2) + ")"))); } + if (v.tag === "TypeMismatch") { return "(TypeMismatch " + (Data$dShow.showStringImpl(v._1) + (" " + (Data$dShow.showStringImpl(v._2) + ")"))); } + $runtime.fail(); + } +}; +const renderForeignError = v => { + if (v.tag === "ForeignError") { return v._1; } + if (v.tag === "ErrorAtIndex") { return "Error at array index " + (Data$dShow.showIntImpl(v._1) + (": " + renderForeignError(v._2))); } + if (v.tag === "ErrorAtProperty") { return "Error at property " + (Data$dShow.showStringImpl(v._1) + (": " + renderForeignError(v._2))); } + if (v.tag === "TypeMismatch") { return "Type mismatch: expected " + (v._1 + (", found " + v._2)); } + $runtime.fail(); +}; +const readUndefined = dictMonad => { + const pure1 = Control$dMonad$dExcept$dTrans.applicativeExceptT(dictMonad).pure; + return value => { + if (isUndefined(value)) { return pure1(Data$dMaybe.Nothing); } + return pure1(Data$dMaybe.$Maybe("Just", value)); + }; +}; +const readNullOrUndefined = dictMonad => { + const pure1 = Control$dMonad$dExcept$dTrans.applicativeExceptT(dictMonad).pure; + return value => { + if (isNull(value) || isUndefined(value)) { return pure1(Data$dMaybe.Nothing); } + return pure1(Data$dMaybe.$Maybe("Just", value)); + }; +}; +const readNull = dictMonad => { + const pure1 = Control$dMonad$dExcept$dTrans.applicativeExceptT(dictMonad).pure; + return value => { + if (isNull(value)) { return pure1(Data$dMaybe.Nothing); } + return pure1(Data$dMaybe.$Maybe("Just", value)); + }; +}; +const fail = dictMonad => { + const $1 = Control$dMonad$dExcept$dTrans.monadThrowExceptT(dictMonad).throwError; + return x => $1(Data$dNonEmpty.$NonEmpty(x, Data$dList$dTypes.Nil)); +}; +const readArray = dictMonad => { + const pure1 = Control$dMonad$dExcept$dTrans.applicativeExceptT(dictMonad).pure; + const $2 = Control$dMonad$dExcept$dTrans.monadThrowExceptT(dictMonad).throwError; + return value => { + if (isArray(value)) { return pure1(value); } + return $2(Data$dNonEmpty.$NonEmpty($ForeignError("TypeMismatch", "array", tagOf(value)), Data$dList$dTypes.Nil)); + }; +}; +const unsafeReadTagged = dictMonad => { + const pure1 = Control$dMonad$dExcept$dTrans.applicativeExceptT(dictMonad).pure; + const $2 = Control$dMonad$dExcept$dTrans.monadThrowExceptT(dictMonad).throwError; + return tag => value => { + if (tagOf(value) === tag) { return pure1(value); } + return $2(Data$dNonEmpty.$NonEmpty($ForeignError("TypeMismatch", tag, tagOf(value)), Data$dList$dTypes.Nil)); + }; +}; +const readBoolean = dictMonad => unsafeReadTagged(dictMonad)("Boolean"); +const readNumber = dictMonad => unsafeReadTagged(dictMonad)("Number"); +const readInt = dictMonad => { + const map = dictMonad.Bind1().Apply0().Functor0().map; + const readNumber1 = unsafeReadTagged(dictMonad)("Number"); + return value => { + const error = Data$dEither.$Either("Left", Data$dNonEmpty.$NonEmpty($ForeignError("TypeMismatch", "Int", tagOf(value)), Data$dList$dTypes.Nil)); + return map(v2 => { + if (v2.tag === "Left") { return error; } + if (v2.tag === "Right") { + const $6 = Data$dInt.fromNumber(v2._1); + if ($6.tag === "Nothing") { return error; } + if ($6.tag === "Just") { return Data$dEither.$Either("Right", $6._1); } + $runtime.fail(); + } + $runtime.fail(); + })(readNumber1(value)); + }; +}; +const readString = dictMonad => unsafeReadTagged(dictMonad)("String"); +const readChar = dictMonad => { + const map = dictMonad.Bind1().Apply0().Functor0().map; + const readString1 = unsafeReadTagged(dictMonad)("String"); + return value => { + const error = Data$dEither.$Either("Left", Data$dNonEmpty.$NonEmpty($ForeignError("TypeMismatch", "Char", tagOf(value)), Data$dList$dTypes.Nil)); + return map(v2 => { + if (v2.tag === "Left") { return error; } + if (v2.tag === "Right") { + const $6 = Data$dString$dCodeUnits.toChar(v2._1); + if ($6.tag === "Nothing") { return error; } + if ($6.tag === "Just") { return Data$dEither.$Either("Right", $6._1); } + $runtime.fail(); + } + $runtime.fail(); + })(readString1(value)); + }; +}; +const eqForeignError = { + eq: x => y => { + if (x.tag === "ForeignError") { + if (y.tag === "ForeignError") { return x._1 === y._1; } + return false; + } + if (x.tag === "TypeMismatch") { + if (y.tag === "TypeMismatch") { return x._1 === y._1 && x._2 === y._2; } + return false; + } + if (x.tag === "ErrorAtIndex") { + if (y.tag === "ErrorAtIndex") { return x._1 === y._1 && eqForeignError.eq(x._2)(y._2); } + return false; + } + if (x.tag === "ErrorAtProperty") { + if (y.tag === "ErrorAtProperty") { return x._1 === y._1 && eqForeignError.eq(x._2)(y._2); } + return false; + } + return false; + } +}; +const ordForeignError = { + compare: x => y => { + if (x.tag === "ForeignError") { + if (y.tag === "ForeignError") { return Data$dOrd.ordString.compare(x._1)(y._1); } + return Data$dOrdering.LT; + } + if (y.tag === "ForeignError") { return Data$dOrdering.GT; } + if (x.tag === "TypeMismatch") { + if (y.tag === "TypeMismatch") { + const v = Data$dOrd.ordString.compare(x._1)(y._1); + if (v.tag === "LT") { return Data$dOrdering.LT; } + if (v.tag === "GT") { return Data$dOrdering.GT; } + return Data$dOrd.ordString.compare(x._2)(y._2); + } + return Data$dOrdering.LT; + } + if (y.tag === "TypeMismatch") { return Data$dOrdering.GT; } + if (x.tag === "ErrorAtIndex") { + if (y.tag === "ErrorAtIndex") { + const v = Data$dOrd.ordInt.compare(x._1)(y._1); + if (v.tag === "LT") { return Data$dOrdering.LT; } + if (v.tag === "GT") { return Data$dOrdering.GT; } + return ordForeignError.compare(x._2)(y._2); + } + return Data$dOrdering.LT; + } + if (y.tag === "ErrorAtIndex") { return Data$dOrdering.GT; } + if (x.tag === "ErrorAtProperty") { + if (y.tag === "ErrorAtProperty") { + const v = Data$dOrd.ordString.compare(x._1)(y._1); + if (v.tag === "LT") { return Data$dOrdering.LT; } + if (v.tag === "GT") { return Data$dOrdering.GT; } + return ordForeignError.compare(x._2)(y._2); + } + $runtime.fail(); + } + $runtime.fail(); + }, + Eq0: () => eqForeignError +}; +export { + $ForeignError, + ErrorAtIndex, + ErrorAtProperty, + ForeignError, + TypeMismatch, + eqForeignError, + fail, + ordForeignError, + readArray, + readBoolean, + readChar, + readInt, + readNull, + readNullOrUndefined, + readNumber, + readString, + readUndefined, + renderForeignError, + showForeignError, + unsafeFromForeign, + unsafeReadTagged, + unsafeToForeign +}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Js.BigInt.BigInt/foreign.js b/.storybook/purescript-indexer/output-es/Js.BigInt.BigInt/foreign.js new file mode 100644 index 0000000..4f0ca50 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Js.BigInt.BigInt/foreign.js @@ -0,0 +1,59 @@ +export const fromStringImpl = (just) => (nothing) => (s) => { + try { + var x = BigInt(s); + return just(x); + } catch (err) { + return nothing; + } +}; +export const fromNumberImpl = (just) => (nothing) => (n) => { + try { + var x = BigInt(n); + return just(x); + } catch (err) { + return nothing; + } +}; + +export const fromInt = (n) => BigInt(n); + +export const fromTypeLevelInt = (str) => BigInt(str); + +export const biAdd = (x) => (y) => x + y; + +export const biMul = (x) => (y) => x * y; + +export const biSub = (x) => (y) => x - y; + +export const biMod = (x) => (y) => x % y; + +export const biZero = 0n; + +export const biOne = 1n; + +export const pow = (x) => (y) => y >= 0 ? x ** y : 0; + +export const not = (x) => ~x; + +export const or = (x) => (y) => x | y; + +export const xor = (x) => (y) => x ^ y; + +export const and = (x) => (y) => x & y; + +export const shl = (x) => (n) => x << n; + +export const shr = (x) => (n) => x >> n; + +export const biEquals = (x) => (y) => x == y; + +export const biCompare = (x) => (y) => { + if (x === y) return 0; + else if (x > y) return 1; + else return -1; +}; + +export const toString = (x) => x.toString(); + +export const asIntN = (bits) => (n) => BigInt.asIntN(bits, n); +export const asUintN = (bits) => (n) => BigInt.asUintN(bits, n); diff --git a/.storybook/purescript-indexer/output-es/Js.BigInt.BigInt/index.js b/.storybook/purescript-indexer/output-es/Js.BigInt.BigInt/index.js new file mode 100644 index 0000000..87c7e48 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Js.BigInt.BigInt/index.js @@ -0,0 +1,47 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dOrdering from "../Data.Ordering/index.js"; +import * as Type$dProxy from "../Type.Proxy/index.js"; +import { + and, + asIntN, + asUintN, + biAdd, + biCompare, + biEquals, + biMod, + biMul, + biOne, + biSub, + biZero, + fromInt, + fromNumberImpl, + fromStringImpl, + fromTypeLevelInt, + not, + or, + pow, + shl, + shr, + toString, + xor +} from "./foreign.js"; +const showBigInt = {show: toString}; +const semiringBigInt = {add: biAdd, zero: biZero, mul: biMul, one: biOne}; +const ringBigInt = {sub: biSub, Semiring0: () => semiringBigInt}; +const eqBigInt = {eq: biEquals}; +const ordBigInt = { + compare: x => y => { + const v = biCompare(x)(y); + if (v === 1) { return Data$dOrdering.GT; } + if (v === 0) { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + }, + Eq0: () => eqBigInt +}; +const commutativeRingBigInt = {Ring0: () => ringBigInt}; +const fromTLInt = () => dictReflectable => v => fromTypeLevelInt(dictReflectable.reflectType(Type$dProxy.Proxy)); +const fromString = /* #__PURE__ */ fromStringImpl(Data$dMaybe.Just)(Data$dMaybe.Nothing); +const fromNumber = /* #__PURE__ */ fromNumberImpl(Data$dMaybe.Just)(Data$dMaybe.Nothing); +export {commutativeRingBigInt, eqBigInt, fromNumber, fromString, fromTLInt, ordBigInt, ringBigInt, semiringBigInt, showBigInt}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Main/index.js b/.storybook/purescript-indexer/output-es/Main/index.js new file mode 100644 index 0000000..b0cea08 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Main/index.js @@ -0,0 +1,5 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dPromise from "../Control.Promise/index.js"; +import * as PureScriptCSFIndexer from "../PureScriptCSFIndexer/index.js"; +const indexer = (fn, opts) => Control$dPromise.fromAff(PureScriptCSFIndexer.indexer(fn)(opts))(); +export {indexer}; diff --git a/.storybook/purescript-indexer/output-es/Node.Buffer.Class/index.js b/.storybook/purescript-indexer/output-es/Node.Buffer.Class/index.js new file mode 100644 index 0000000..4f7f140 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Node.Buffer.Class/index.js @@ -0,0 +1,49 @@ +import * as $runtime from "../runtime.js"; +const writeString = dict => dict.writeString; +const write = dict => dict.write; +const unsafeThaw = dict => dict.unsafeThaw; +const unsafeFreeze = dict => dict.unsafeFreeze; +const toString = dict => dict.toString; +const toArrayBuffer = dict => dict.toArrayBuffer; +const toArray = dict => dict.toArray; +const thaw = dict => dict.thaw; +const slice = dict => dict.slice; +const size = dict => dict.size; +const setAtOffset = dict => dict.setAtOffset; +const readString = dict => dict.readString; +const read = dict => dict.read; +const getAtOffset = dict => dict.getAtOffset; +const fromString = dict => dict.fromString; +const fromArrayBuffer = dict => dict.fromArrayBuffer; +const fromArray = dict => dict.fromArray; +const freeze = dict => dict.freeze; +const fill = dict => dict.fill; +const create = dict => dict.create; +const copy = dict => dict.copy; +const concat$p = dict => dict["concat'"]; +const concat = dict => dict.concat; +export { + concat, + concat$p, + copy, + create, + fill, + freeze, + fromArray, + fromArrayBuffer, + fromString, + getAtOffset, + read, + readString, + setAtOffset, + size, + slice, + thaw, + toArray, + toArrayBuffer, + toString, + unsafeFreeze, + unsafeThaw, + write, + writeString +}; diff --git a/.storybook/purescript-indexer/output-es/Node.Buffer.Immutable/foreign.js b/.storybook/purescript-indexer/output-es/Node.Buffer.Immutable/foreign.js new file mode 100644 index 0000000..48517b7 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Node.Buffer.Immutable/foreign.js @@ -0,0 +1,99 @@ +/* global Buffer */ +import { inspect } from "util"; +export const showImpl = inspect; + +export function eqImpl(a) { + return b => { + return a.equals(b); + }; +} + +export function compareImpl(a) { + return b => { + return a.compare(b); + }; +} + +export function create(size) { + return Buffer.alloc(size); +} + +export function fromArray(octets) { + return Buffer.from(octets); +} + +export function size(buff) { + return buff.length; +} + +export function toArray(buff) { + var json = buff.toJSON(); + return json.data || json; +} + +export function toArrayBuffer(buff) { + return buff.buffer.slice(buff.byteOffset, buff.byteOffset + buff.byteLength); +} + +export function fromArrayBuffer(ab) { + return Buffer.from(ab); +} + +export function fromStringImpl(str) { + return encoding => { + return Buffer.from(str, encoding); + }; +} + +export function readImpl(ty) { + return offset => { + return buf => { + return buf["read" + ty](offset); + }; + }; +} + +export function readStringImpl(enc) { + return start => { + return end => { + return buff => { + return buff.toString(enc, start, end); + }; + }; + }; +} + +export function getAtOffsetImpl(just) { + return nothing => { + return offset => { + return buff => { + var octet = buff[offset]; + return octet == null ? nothing : just(octet); + }; + }; + }; +} + +export function toStringImpl(enc) { + return buff => { + return buff.toString(enc); + }; +} + +export function slice(start) { + return end => { + return buff => { + return buff.slice(start, end); + }; + }; +} + +export function concat(buffs) { + return Buffer.concat(buffs); +} + +export function concatToLength(buffs) { + return totalLength => { + return Buffer.concat(buffs, totalLength); + }; +} diff --git a/.storybook/purescript-indexer/output-es/Node.Buffer.Immutable/index.js b/.storybook/purescript-indexer/output-es/Node.Buffer.Immutable/index.js new file mode 100644 index 0000000..b927204 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Node.Buffer.Immutable/index.js @@ -0,0 +1,91 @@ +// | Immutable buffers and associated operations. +import * as $runtime from "../runtime.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dOrdering from "../Data.Ordering/index.js"; +import { + compareImpl, + concat, + concatToLength, + create, + eqImpl, + fromArray, + fromArrayBuffer, + fromStringImpl, + getAtOffsetImpl, + readImpl, + readStringImpl, + showImpl, + size, + slice, + toArray, + toArrayBuffer, + toStringImpl +} from "./foreign.js"; +const toString = x => toStringImpl((() => { + if (x.tag === "ASCII") { return "ascii"; } + if (x.tag === "UTF8") { return "utf8"; } + if (x.tag === "UTF16LE") { return "utf16le"; } + if (x.tag === "UCS2") { return "ucs2"; } + if (x.tag === "Base64") { return "base64"; } + if (x.tag === "Latin1") { return "latin1"; } + if (x.tag === "Binary") { return "binary"; } + if (x.tag === "Hex") { return "hex"; } + $runtime.fail(); +})()); +const showBuffer = {show: showImpl}; +const readString = x => readStringImpl((() => { + if (x.tag === "ASCII") { return "ascii"; } + if (x.tag === "UTF8") { return "utf8"; } + if (x.tag === "UTF16LE") { return "utf16le"; } + if (x.tag === "UCS2") { return "ucs2"; } + if (x.tag === "Base64") { return "base64"; } + if (x.tag === "Latin1") { return "latin1"; } + if (x.tag === "Binary") { return "binary"; } + if (x.tag === "Hex") { return "hex"; } + $runtime.fail(); +})()); +const read = x => readImpl((() => { + if (x.tag === "UInt8") { return "UInt8"; } + if (x.tag === "UInt16LE") { return "UInt16LE"; } + if (x.tag === "UInt16BE") { return "UInt16BE"; } + if (x.tag === "UInt32LE") { return "UInt32LE"; } + if (x.tag === "UInt32BE") { return "UInt32BE"; } + if (x.tag === "Int8") { return "Int8"; } + if (x.tag === "Int16LE") { return "Int16LE"; } + if (x.tag === "Int16BE") { return "Int16BE"; } + if (x.tag === "Int32LE") { return "Int32LE"; } + if (x.tag === "Int32BE") { return "Int32BE"; } + if (x.tag === "FloatLE") { return "FloatLE"; } + if (x.tag === "FloatBE") { return "FloatBE"; } + if (x.tag === "DoubleLE") { return "DoubleLE"; } + if (x.tag === "DoubleBE") { return "DoubleBE"; } + $runtime.fail(); +})()); +const getAtOffset = /* #__PURE__ */ getAtOffsetImpl(Data$dMaybe.Just)(Data$dMaybe.Nothing); +const fromString = str => { + const $1 = fromStringImpl(str); + return x => $1((() => { + if (x.tag === "ASCII") { return "ascii"; } + if (x.tag === "UTF8") { return "utf8"; } + if (x.tag === "UTF16LE") { return "utf16le"; } + if (x.tag === "UCS2") { return "ucs2"; } + if (x.tag === "Base64") { return "base64"; } + if (x.tag === "Latin1") { return "latin1"; } + if (x.tag === "Binary") { return "binary"; } + if (x.tag === "Hex") { return "hex"; } + $runtime.fail(); + })()); +}; +const eqBuffer = {eq: eqImpl}; +const ordBuffer = { + compare: a => b => { + const v = compareImpl(a)(b); + if (v < 0) { return Data$dOrdering.LT; } + if (v > 0) { return Data$dOrdering.GT; } + return Data$dOrdering.EQ; + }, + Eq0: () => eqBuffer +}; +const concat$p = concatToLength; +export {concat$p, eqBuffer, fromString, getAtOffset, ordBuffer, read, readString, showBuffer, toString}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Node.Buffer.Internal/foreign.js b/.storybook/purescript-indexer/output-es/Node.Buffer.Internal/foreign.js new file mode 100644 index 0000000..2af2886 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Node.Buffer.Internal/foreign.js @@ -0,0 +1,68 @@ +/* global Buffer */ +export function copyAll(a) { + return () => { + return Buffer.from(a); + }; +} + +export function writeInternal(ty) { + return value => { + return offset => { + return buf => { + return () => { + buf["write" + ty](value, offset); + }; + }; + }; + }; +} + +export function writeStringInternal(encoding) { + return offset => { + return length => { + return value => { + return buff => { + return () => { + return buff.write(value, offset, length, encoding); + }; + }; + }; + }; + }; +} + +export function setAtOffset(value) { + return offset => { + return buff => { + return () => { + buff[offset] = value; + }; + }; + }; +} + +export function copy(srcStart) { + return srcEnd => { + return src => { + return targStart => { + return targ => { + return () => { + return src.copy(targ, targStart, srcStart, srcEnd); + }; + }; + }; + }; + }; +} + +export function fill(octet) { + return start => { + return end => { + return buf => { + return () => { + buf.fill(octet, start, end); + }; + }; + }; + }; +} diff --git a/.storybook/purescript-indexer/output-es/Node.Buffer.Internal/index.js b/.storybook/purescript-indexer/output-es/Node.Buffer.Internal/index.js new file mode 100644 index 0000000..2068a6f --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Node.Buffer.Internal/index.js @@ -0,0 +1,135 @@ +// | Functions and types to support the other modules. Not for public use. +import * as $runtime from "../runtime.js"; +import * as Node$dBuffer$dImmutable from "../Node.Buffer.Immutable/index.js"; +import {copy, copyAll, fill, setAtOffset, writeInternal, writeStringInternal} from "./foreign.js"; +const writeString = dictMonad => x => writeStringInternal((() => { + if (x.tag === "ASCII") { return "ascii"; } + if (x.tag === "UTF8") { return "utf8"; } + if (x.tag === "UTF16LE") { return "utf16le"; } + if (x.tag === "UCS2") { return "ucs2"; } + if (x.tag === "Base64") { return "base64"; } + if (x.tag === "Latin1") { return "latin1"; } + if (x.tag === "Binary") { return "binary"; } + if (x.tag === "Hex") { return "hex"; } + $runtime.fail(); +})()); +const write = dictMonad => x => writeInternal((() => { + if (x.tag === "UInt8") { return "UInt8"; } + if (x.tag === "UInt16LE") { return "UInt16LE"; } + if (x.tag === "UInt16BE") { return "UInt16BE"; } + if (x.tag === "UInt32LE") { return "UInt32LE"; } + if (x.tag === "UInt32BE") { return "UInt32BE"; } + if (x.tag === "Int8") { return "Int8"; } + if (x.tag === "Int16LE") { return "Int16LE"; } + if (x.tag === "Int16BE") { return "Int16BE"; } + if (x.tag === "Int32LE") { return "Int32LE"; } + if (x.tag === "Int32BE") { return "Int32BE"; } + if (x.tag === "FloatLE") { return "FloatLE"; } + if (x.tag === "FloatBE") { return "FloatBE"; } + if (x.tag === "DoubleLE") { return "DoubleLE"; } + if (x.tag === "DoubleBE") { return "DoubleBE"; } + $runtime.fail(); +})()); +const unsafeThaw = dictMonad => dictMonad.Applicative0().pure; +const usingToImmutable = dictMonad => { + const unsafeThaw1 = dictMonad.Applicative0().pure; + return f => x => unsafeThaw1(f(x)); +}; +const unsafeFreeze = dictMonad => dictMonad.Applicative0().pure; +const usingFromImmutable = dictMonad => { + const map = dictMonad.Bind1().Apply0().Functor0().map; + const unsafeFreeze1 = dictMonad.Applicative0().pure; + return f => buf => map(f)(unsafeFreeze1(buf)); +}; +const toString = dictMonad => { + const map = dictMonad.Bind1().Apply0().Functor0().map; + const unsafeFreeze1 = dictMonad.Applicative0().pure; + return m => { + const $4 = Node$dBuffer$dImmutable.toString(m); + return buf => map($4)(unsafeFreeze1(buf)); + }; +}; +const toArrayBuffer = dictMonad => { + const map = dictMonad.Bind1().Apply0().Functor0().map; + const unsafeFreeze1 = dictMonad.Applicative0().pure; + return buf => map(Node$dBuffer$dImmutable.toArrayBuffer)(unsafeFreeze1(buf)); +}; +const toArray = dictMonad => { + const map = dictMonad.Bind1().Apply0().Functor0().map; + const unsafeFreeze1 = dictMonad.Applicative0().pure; + return buf => map(Node$dBuffer$dImmutable.toArray)(unsafeFreeze1(buf)); +}; +const slice = Node$dBuffer$dImmutable.slice; +const size = dictMonad => { + const map = dictMonad.Bind1().Apply0().Functor0().map; + const unsafeFreeze1 = dictMonad.Applicative0().pure; + return buf => map(Node$dBuffer$dImmutable.size)(unsafeFreeze1(buf)); +}; +const readString = dictMonad => { + const map = dictMonad.Bind1().Apply0().Functor0().map; + const unsafeFreeze1 = dictMonad.Applicative0().pure; + return m => o => o$p => { + const $6 = Node$dBuffer$dImmutable.readString(m)(o)(o$p); + return buf => map($6)(unsafeFreeze1(buf)); + }; +}; +const read = dictMonad => { + const map = dictMonad.Bind1().Apply0().Functor0().map; + const unsafeFreeze1 = dictMonad.Applicative0().pure; + return t => o => { + const $5 = Node$dBuffer$dImmutable.read(t)(o); + return buf => map($5)(unsafeFreeze1(buf)); + }; +}; +const getAtOffset = dictMonad => { + const map = dictMonad.Bind1().Apply0().Functor0().map; + const unsafeFreeze1 = dictMonad.Applicative0().pure; + return o => { + const $4 = Node$dBuffer$dImmutable.getAtOffset(o); + return buf => map($4)(unsafeFreeze1(buf)); + }; +}; +const fromString = dictMonad => { + const unsafeThaw1 = dictMonad.Applicative0().pure; + return s => { + const $3 = Node$dBuffer$dImmutable.fromString(s); + return x => unsafeThaw1($3(x)); + }; +}; +const fromArrayBuffer = dictMonad => { + const unsafeThaw1 = dictMonad.Applicative0().pure; + return x => unsafeThaw1(Node$dBuffer$dImmutable.fromArrayBuffer(x)); +}; +const fromArray = dictMonad => { + const unsafeThaw1 = dictMonad.Applicative0().pure; + return x => unsafeThaw1(Node$dBuffer$dImmutable.fromArray(x)); +}; +const create = dictMonad => { + const unsafeThaw1 = dictMonad.Applicative0().pure; + return x => unsafeThaw1(Node$dBuffer$dImmutable.create(x)); +}; +const concat$p = dictMonad => arrs => n => v => Node$dBuffer$dImmutable.concatToLength(arrs)(n); +const concat = arrs => v => Node$dBuffer$dImmutable.concat(arrs); +export { + concat, + concat$p, + create, + fromArray, + fromArrayBuffer, + fromString, + getAtOffset, + read, + readString, + size, + slice, + toArray, + toArrayBuffer, + toString, + unsafeFreeze, + unsafeThaw, + usingFromImmutable, + usingToImmutable, + write, + writeString +}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Node.Buffer.ST/index.js b/.storybook/purescript-indexer/output-es/Node.Buffer.ST/index.js new file mode 100644 index 0000000..16342c6 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Node.Buffer.ST/index.js @@ -0,0 +1,32 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dST$dInternal from "../Control.Monad.ST.Internal/index.js"; +import * as Node$dBuffer$dImmutable from "../Node.Buffer.Immutable/index.js"; +import * as Node$dBuffer$dInternal from "../Node.Buffer.Internal/index.js"; +const mutableBufferST = { + create: /* #__PURE__ */ Node$dBuffer$dInternal.create(Control$dMonad$dST$dInternal.monadST), + freeze: Node$dBuffer$dInternal.copyAll, + unsafeFreeze: Control$dMonad$dST$dInternal.pure_, + thaw: Node$dBuffer$dInternal.copyAll, + unsafeThaw: Control$dMonad$dST$dInternal.pure_, + fromArray: /* #__PURE__ */ Node$dBuffer$dInternal.fromArray(Control$dMonad$dST$dInternal.monadST), + fromString: /* #__PURE__ */ Node$dBuffer$dInternal.fromString(Control$dMonad$dST$dInternal.monadST), + fromArrayBuffer: /* #__PURE__ */ Node$dBuffer$dInternal.fromArrayBuffer(Control$dMonad$dST$dInternal.monadST), + toArrayBuffer: /* #__PURE__ */ Node$dBuffer$dInternal.toArrayBuffer(Control$dMonad$dST$dInternal.monadST), + read: /* #__PURE__ */ Node$dBuffer$dInternal.read(Control$dMonad$dST$dInternal.monadST), + readString: /* #__PURE__ */ Node$dBuffer$dInternal.readString(Control$dMonad$dST$dInternal.monadST), + toString: /* #__PURE__ */ Node$dBuffer$dInternal.toString(Control$dMonad$dST$dInternal.monadST), + write: /* #__PURE__ */ Node$dBuffer$dInternal.write(Control$dMonad$dST$dInternal.monadST), + writeString: /* #__PURE__ */ Node$dBuffer$dInternal.writeString(Control$dMonad$dST$dInternal.monadST), + toArray: /* #__PURE__ */ Node$dBuffer$dInternal.toArray(Control$dMonad$dST$dInternal.monadST), + getAtOffset: /* #__PURE__ */ Node$dBuffer$dInternal.getAtOffset(Control$dMonad$dST$dInternal.monadST), + setAtOffset: Node$dBuffer$dInternal.setAtOffset, + slice: Node$dBuffer$dImmutable.slice, + size: /* #__PURE__ */ Node$dBuffer$dInternal.size(Control$dMonad$dST$dInternal.monadST), + concat: Node$dBuffer$dInternal.concat, + "concat'": /* #__PURE__ */ Node$dBuffer$dInternal.concat$p(Control$dMonad$dST$dInternal.monadST), + copy: Node$dBuffer$dInternal.copy, + fill: Node$dBuffer$dInternal.fill, + Monad0: () => Control$dMonad$dST$dInternal.monadST +}; +const run = st => Control$dMonad$dST$dInternal.run(Control$dMonad$dST$dInternal.bind_(st)(Control$dMonad$dST$dInternal.pure_)); +export {mutableBufferST, run}; diff --git a/.storybook/purescript-indexer/output-es/Node.Buffer.Types/index.js b/.storybook/purescript-indexer/output-es/Node.Buffer.Types/index.js new file mode 100644 index 0000000..d4abde2 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Node.Buffer.Types/index.js @@ -0,0 +1,36 @@ +import * as $runtime from "../runtime.js"; +const $BufferValueType = tag => ({tag}); +const UInt8 = /* #__PURE__ */ $BufferValueType("UInt8"); +const UInt16LE = /* #__PURE__ */ $BufferValueType("UInt16LE"); +const UInt16BE = /* #__PURE__ */ $BufferValueType("UInt16BE"); +const UInt32LE = /* #__PURE__ */ $BufferValueType("UInt32LE"); +const UInt32BE = /* #__PURE__ */ $BufferValueType("UInt32BE"); +const Int8 = /* #__PURE__ */ $BufferValueType("Int8"); +const Int16LE = /* #__PURE__ */ $BufferValueType("Int16LE"); +const Int16BE = /* #__PURE__ */ $BufferValueType("Int16BE"); +const Int32LE = /* #__PURE__ */ $BufferValueType("Int32LE"); +const Int32BE = /* #__PURE__ */ $BufferValueType("Int32BE"); +const FloatLE = /* #__PURE__ */ $BufferValueType("FloatLE"); +const FloatBE = /* #__PURE__ */ $BufferValueType("FloatBE"); +const DoubleLE = /* #__PURE__ */ $BufferValueType("DoubleLE"); +const DoubleBE = /* #__PURE__ */ $BufferValueType("DoubleBE"); +const showBufferValueType = { + show: v => { + if (v.tag === "UInt8") { return "UInt8"; } + if (v.tag === "UInt16LE") { return "UInt16LE"; } + if (v.tag === "UInt16BE") { return "UInt16BE"; } + if (v.tag === "UInt32LE") { return "UInt32LE"; } + if (v.tag === "UInt32BE") { return "UInt32BE"; } + if (v.tag === "Int8") { return "Int8"; } + if (v.tag === "Int16LE") { return "Int16LE"; } + if (v.tag === "Int16BE") { return "Int16BE"; } + if (v.tag === "Int32LE") { return "Int32LE"; } + if (v.tag === "Int32BE") { return "Int32BE"; } + if (v.tag === "FloatLE") { return "FloatLE"; } + if (v.tag === "FloatBE") { return "FloatBE"; } + if (v.tag === "DoubleLE") { return "DoubleLE"; } + if (v.tag === "DoubleBE") { return "DoubleBE"; } + $runtime.fail(); + } +}; +export {$BufferValueType, DoubleBE, DoubleLE, FloatBE, FloatLE, Int16BE, Int16LE, Int32BE, Int32LE, Int8, UInt16BE, UInt16LE, UInt32BE, UInt32LE, UInt8, showBufferValueType}; diff --git a/.storybook/purescript-indexer/output-es/Node.Buffer/index.js b/.storybook/purescript-indexer/output-es/Node.Buffer/index.js new file mode 100644 index 0000000..3ad4d04 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Node.Buffer/index.js @@ -0,0 +1,32 @@ +// | Mutable buffers and associated operations. +import * as $runtime from "../runtime.js"; +import * as Effect from "../Effect/index.js"; +import * as Node$dBuffer$dImmutable from "../Node.Buffer.Immutable/index.js"; +import * as Node$dBuffer$dInternal from "../Node.Buffer.Internal/index.js"; +const mutableBufferEffect = { + create: /* #__PURE__ */ Node$dBuffer$dInternal.create(Effect.monadEffect), + freeze: Node$dBuffer$dInternal.copyAll, + unsafeFreeze: Effect.pureE, + thaw: Node$dBuffer$dInternal.copyAll, + unsafeThaw: Effect.pureE, + fromArray: /* #__PURE__ */ Node$dBuffer$dInternal.fromArray(Effect.monadEffect), + fromString: /* #__PURE__ */ Node$dBuffer$dInternal.fromString(Effect.monadEffect), + fromArrayBuffer: /* #__PURE__ */ Node$dBuffer$dInternal.fromArrayBuffer(Effect.monadEffect), + toArrayBuffer: /* #__PURE__ */ Node$dBuffer$dInternal.toArrayBuffer(Effect.monadEffect), + read: /* #__PURE__ */ Node$dBuffer$dInternal.read(Effect.monadEffect), + readString: /* #__PURE__ */ Node$dBuffer$dInternal.readString(Effect.monadEffect), + toString: /* #__PURE__ */ Node$dBuffer$dInternal.toString(Effect.monadEffect), + write: /* #__PURE__ */ Node$dBuffer$dInternal.write(Effect.monadEffect), + writeString: /* #__PURE__ */ Node$dBuffer$dInternal.writeString(Effect.monadEffect), + toArray: /* #__PURE__ */ Node$dBuffer$dInternal.toArray(Effect.monadEffect), + getAtOffset: /* #__PURE__ */ Node$dBuffer$dInternal.getAtOffset(Effect.monadEffect), + setAtOffset: Node$dBuffer$dInternal.setAtOffset, + slice: Node$dBuffer$dImmutable.slice, + size: /* #__PURE__ */ Node$dBuffer$dInternal.size(Effect.monadEffect), + concat: Node$dBuffer$dInternal.concat, + "concat'": /* #__PURE__ */ Node$dBuffer$dInternal.concat$p(Effect.monadEffect), + copy: Node$dBuffer$dInternal.copy, + fill: Node$dBuffer$dInternal.fill, + Monad0: () => Effect.monadEffect +}; +export {mutableBufferEffect}; diff --git a/.storybook/purescript-indexer/output-es/Node.ChildProcess/foreign.js b/.storybook/purescript-indexer/output-es/Node.ChildProcess/foreign.js new file mode 100644 index 0000000..b3ba75a --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Node.ChildProcess/foreign.js @@ -0,0 +1,96 @@ +/* eslint-env node*/ + +import { spawn, exec, execFile, execSync, execFileSync, fork as cp_fork } from "child_process"; + +export function unsafeFromNullable(msg) { + return x => { + if (x === null) throw new Error(msg); + return x; + }; +} + +export function spawnImpl(command) { + return args => opts => () => spawn(command, args, opts); +} + +export function execImpl(command) { + return opts => callback => () => exec( + command, + opts, + (err, stdout, stderr) => { + callback(err)(stdout)(stderr)(); + } + ); +} + +export const execFileImpl = function execImpl(command) { + return args => opts => callback => () => execFile( + command, + args, + opts, + (err, stdout, stderr) => { + callback(err)(stdout)(stderr)(); + } + ); +}; + +export function execSyncImpl(command) { + return opts => () => execSync(command, opts); +} + +export function execFileSyncImpl(command) { + return args => opts => () => execFileSync(command, args, opts); +} + +export function fork(cmd) { + return args => () => cp_fork(cmd, args); +} + +export function mkOnExit(mkChildExit) { + return function onExit(cp) { + return cb => () => { + cp.on("exit", (code, signal) => { + cb(mkChildExit(code)(signal))(); + }); + }; + }; +} + +export function mkOnClose(mkChildExit) { + return function onClose(cp) { + return cb => () => { + cp.on("close", (code, signal) => { + cb(mkChildExit(code)(signal))(); + }); + }; + }; +} + +export function onDisconnect(cp) { + return cb => () => { + cp.on("disconnect", cb); + }; +} + +export function mkOnMessage(nothing) { + return just => (function onMessage(cp) { + return cb => () => { + cp.on("message", (mess, sendHandle) => { + cb(mess, sendHandle ? just(sendHandle) : nothing)(); + }); + }; + }); +} + +export function onError(cp) { + return cb => () => { + cp.on("error", err => { + cb(err)(); + }); + }; +} + +const _undefined = undefined; +export { _undefined as undefined }; +import process from "process"; +export { process }; diff --git a/.storybook/purescript-indexer/output-es/Node.ChildProcess/index.js b/.storybook/purescript-indexer/output-es/Node.ChildProcess/index.js new file mode 100644 index 0000000..7c724ae --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Node.ChildProcess/index.js @@ -0,0 +1,318 @@ +// | This module contains various types and functions to allow you to spawn and +// | interact with child processes. +// | +// | It is intended to be imported qualified, as follows: +// | +// | ```purescript +// | import Node.ChildProcess (ChildProcess, CHILD_PROCESS) +// | import Node.ChildProcess as ChildProcess +// | ``` +// | +// | The [Node.js documentation](https://nodejs.org/api/child_process.html) +// | forms the basis for this module and has in-depth documentation about +// | runtime behaviour. +import * as $runtime from "../runtime.js"; +import * as Data$dFunctor from "../Data.Functor/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dNullable from "../Data.Nullable/index.js"; +import * as Data$dPosix$dSignal from "../Data.Posix.Signal/index.js"; +import * as Data$dShow from "../Data.Show/index.js"; +import * as Effect$dException from "../Effect.Exception/index.js"; +import * as Effect$dUnsafe from "../Effect.Unsafe/index.js"; +import * as Unsafe$dCoerce from "../Unsafe.Coerce/index.js"; +import { + execFileImpl, + execFileSyncImpl, + execImpl, + execSyncImpl, + fork, + mkOnClose, + mkOnExit, + mkOnMessage, + onDisconnect, + onError, + process, + spawnImpl, + undefined as $$undefined, + unsafeFromNullable +} from "./foreign.js"; +const $Exit = (tag, _1) => ({tag, _1}); +const $StdIOBehaviour = (tag, _1) => ({tag, _1}); +const Pipe = /* #__PURE__ */ $StdIOBehaviour("Pipe"); +const Ignore = /* #__PURE__ */ $StdIOBehaviour("Ignore"); +const ShareStream = value0 => $StdIOBehaviour("ShareStream", value0); +const ShareFD = value0 => $StdIOBehaviour("ShareFD", value0); +const Normally = value0 => $Exit("Normally", value0); +const BySignal = value0 => $Exit("BySignal", value0); +const toStandardError = Unsafe$dCoerce.unsafeCoerce; +const toActualStdIOOptions = /* #__PURE__ */ Data$dFunctor.arrayMap(x => { + if (x.tag === "Just") { + return Data$dNullable.notNull((() => { + if (x._1.tag === "Pipe") { return "pipe"; } + if (x._1.tag === "Ignore") { return "ignore"; } + if (x._1.tag === "ShareFD") { return x._1._1; } + if (x._1.tag === "ShareStream") { return x._1._1; } + $runtime.fail(); + })()); + } + return Data$dNullable.null; +}); +const spawn = cmd => args => { + const $2 = spawnImpl(cmd)(args); + return x => $2({ + cwd: (() => { + if (x.cwd.tag === "Nothing") { return $$undefined; } + if (x.cwd.tag === "Just") { return x.cwd._1; } + $runtime.fail(); + })(), + stdio: toActualStdIOOptions(x.stdio), + env: (() => { + if (x.env.tag === "Nothing") { return Data$dNullable.null; } + if (x.env.tag === "Just") { return Data$dNullable.notNull(x.env._1); } + $runtime.fail(); + })(), + detached: x.detached, + uid: (() => { + if (x.uid.tag === "Nothing") { return $$undefined; } + if (x.uid.tag === "Just") { return x.uid._1; } + $runtime.fail(); + })(), + gid: (() => { + if (x.gid.tag === "Nothing") { return $$undefined; } + if (x.gid.tag === "Just") { return x.gid._1; } + $runtime.fail(); + })() + }); +}; +const showExit = { + show: v => { + if (v.tag === "Normally") { return "Normally " + Data$dShow.showIntImpl(v._1); } + if (v.tag === "BySignal") { return "BySignal " + Data$dPosix$dSignal.toString(v._1); } + $runtime.fail(); + } +}; +const pipe = /* #__PURE__ */ Data$dFunctor.arrayMap(Data$dMaybe.Just)([Pipe, Pipe, Pipe]); +const pid = x => x.pid; +const onMessage = /* #__PURE__ */ mkOnMessage(Data$dMaybe.Nothing)(Data$dMaybe.Just); +const mkExit = code => signal => { + const $2 = Data$dNullable.nullable(code, Data$dMaybe.Nothing, Data$dMaybe.Just); + if ($2.tag === "Just") { + const $3 = Data$dNullable.nullable(signal, Data$dMaybe.Nothing, Data$dMaybe.Just); + if ($3.tag === "Just") { + if (Data$dPosix$dSignal.fromString($3._1).tag === "Just") { return $Exit("Normally", $2._1); } + return $Exit("Normally", $2._1); + } + if ($3.tag === "Nothing") { return $Exit("Normally", $2._1); } + return $Exit("Normally", $2._1); + } + const $3 = Data$dNullable.nullable(signal, Data$dMaybe.Nothing, Data$dMaybe.Just); + if ($3.tag === "Just") { + const $4 = Data$dPosix$dSignal.fromString($3._1); + if ($4.tag === "Just") { return $Exit("BySignal", $4._1); } + return Effect$dUnsafe.unsafePerformEffect(Effect$dException.throwException(Effect$dException.error("Node.ChildProcess.mkExit: Invalid arguments"))); + } + if ($3.tag === "Nothing") { return Effect$dUnsafe.unsafePerformEffect(Effect$dException.throwException(Effect$dException.error("Node.ChildProcess.mkExit: Invalid arguments"))); } + $runtime.fail(); +}; +const onClose = /* #__PURE__ */ mkOnClose(mkExit); +const onExit = /* #__PURE__ */ mkOnExit(mkExit); +const send = msg => handle => v => v1 => v.send(msg, handle); +const stderr = /* #__PURE__ */ (() => { + const $0 = unsafeFromNullable("Node.ChildProcess: stream not available: stderr\nThis is probably because you passed something other than Pipe to the stdio option when you spawned it."); + return x => $0(x.stderr); +})(); +const stdin = /* #__PURE__ */ (() => { + const $0 = unsafeFromNullable("Node.ChildProcess: stream not available: stdin\nThis is probably because you passed something other than Pipe to the stdio option when you spawned it."); + return x => $0(x.stdin); +})(); +const stdout = /* #__PURE__ */ (() => { + const $0 = unsafeFromNullable("Node.ChildProcess: stream not available: stdout\nThis is probably because you passed something other than Pipe to the stdio option when you spawned it."); + return x => $0(x.stdout); +})(); +const kill = sig => v => v1 => v.kill(Data$dPosix$dSignal.toString(sig)); +const inherit = /* #__PURE__ */ (() => Data$dFunctor.arrayMap(Data$dMaybe.Just)([ + $StdIOBehaviour("ShareStream", process.stdin), + $StdIOBehaviour("ShareStream", process.stdout), + $StdIOBehaviour("ShareStream", process.stderr) +]))(); +const ignore = /* #__PURE__ */ Data$dFunctor.arrayMap(Data$dMaybe.Just)([Ignore, Ignore, Ignore]); +const disconnect = x => x.disconnect; +const defaultSpawnOptions = {cwd: Data$dMaybe.Nothing, stdio: pipe, env: Data$dMaybe.Nothing, detached: false, uid: Data$dMaybe.Nothing, gid: Data$dMaybe.Nothing}; +const defaultExecSyncOptions = { + cwd: Data$dMaybe.Nothing, + input: Data$dMaybe.Nothing, + stdio: pipe, + env: Data$dMaybe.Nothing, + timeout: Data$dMaybe.Nothing, + maxBuffer: Data$dMaybe.Nothing, + killSignal: Data$dMaybe.Nothing, + uid: Data$dMaybe.Nothing, + gid: Data$dMaybe.Nothing +}; +const defaultExecOptions = { + cwd: Data$dMaybe.Nothing, + env: Data$dMaybe.Nothing, + encoding: Data$dMaybe.Nothing, + shell: Data$dMaybe.Nothing, + timeout: Data$dMaybe.Nothing, + maxBuffer: Data$dMaybe.Nothing, + killSignal: Data$dMaybe.Nothing, + uid: Data$dMaybe.Nothing, + gid: Data$dMaybe.Nothing +}; +const convertExecSyncOptions = opts => ( + { + cwd: (() => { + if (opts.cwd.tag === "Nothing") { return $$undefined; } + if (opts.cwd.tag === "Just") { return opts.cwd._1; } + $runtime.fail(); + })(), + input: (() => { + if (opts.input.tag === "Nothing") { return $$undefined; } + if (opts.input.tag === "Just") { return opts.input._1; } + $runtime.fail(); + })(), + stdio: toActualStdIOOptions(opts.stdio), + env: (() => { + if (opts.env.tag === "Nothing") { return $$undefined; } + if (opts.env.tag === "Just") { return opts.env._1; } + $runtime.fail(); + })(), + timeout: (() => { + if (opts.timeout.tag === "Nothing") { return $$undefined; } + if (opts.timeout.tag === "Just") { return opts.timeout._1; } + $runtime.fail(); + })(), + maxBuffer: (() => { + if (opts.maxBuffer.tag === "Nothing") { return $$undefined; } + if (opts.maxBuffer.tag === "Just") { return opts.maxBuffer._1; } + $runtime.fail(); + })(), + killSignal: (() => { + if (opts.killSignal.tag === "Nothing") { return $$undefined; } + if (opts.killSignal.tag === "Just") { return opts.killSignal._1; } + $runtime.fail(); + })(), + uid: (() => { + if (opts.uid.tag === "Nothing") { return $$undefined; } + if (opts.uid.tag === "Just") { return opts.uid._1; } + $runtime.fail(); + })(), + gid: (() => { + if (opts.gid.tag === "Nothing") { return $$undefined; } + if (opts.gid.tag === "Just") { return opts.gid._1; } + $runtime.fail(); + })() + } +); +const execFileSync = cmd => args => opts => execFileSyncImpl(cmd)(args)(convertExecSyncOptions(opts)); +const execSync = cmd => opts => execSyncImpl(cmd)(convertExecSyncOptions(opts)); +const convertExecOptions = opts => ( + { + cwd: (() => { + if (opts.cwd.tag === "Nothing") { return $$undefined; } + if (opts.cwd.tag === "Just") { return opts.cwd._1; } + $runtime.fail(); + })(), + env: (() => { + if (opts.env.tag === "Nothing") { return $$undefined; } + if (opts.env.tag === "Just") { return opts.env._1; } + $runtime.fail(); + })(), + encoding: (() => { + if (opts.encoding.tag === "Nothing") { return $$undefined; } + if (opts.encoding.tag === "Just") { + if (opts.encoding._1.tag === "ASCII") { return "ascii"; } + if (opts.encoding._1.tag === "UTF8") { return "utf8"; } + if (opts.encoding._1.tag === "UTF16LE") { return "utf16le"; } + if (opts.encoding._1.tag === "UCS2") { return "ucs2"; } + if (opts.encoding._1.tag === "Base64") { return "base64"; } + if (opts.encoding._1.tag === "Latin1") { return "latin1"; } + if (opts.encoding._1.tag === "Binary") { return "binary"; } + if (opts.encoding._1.tag === "Hex") { return "hex"; } + $runtime.fail(); + } + $runtime.fail(); + })(), + shell: (() => { + if (opts.shell.tag === "Nothing") { return $$undefined; } + if (opts.shell.tag === "Just") { return opts.shell._1; } + $runtime.fail(); + })(), + timeout: (() => { + if (opts.timeout.tag === "Nothing") { return $$undefined; } + if (opts.timeout.tag === "Just") { return opts.timeout._1; } + $runtime.fail(); + })(), + maxBuffer: (() => { + if (opts.maxBuffer.tag === "Nothing") { return $$undefined; } + if (opts.maxBuffer.tag === "Just") { return opts.maxBuffer._1; } + $runtime.fail(); + })(), + killSignal: (() => { + if (opts.killSignal.tag === "Nothing") { return $$undefined; } + if (opts.killSignal.tag === "Just") { return opts.killSignal._1; } + $runtime.fail(); + })(), + uid: (() => { + if (opts.uid.tag === "Nothing") { return $$undefined; } + if (opts.uid.tag === "Just") { return opts.uid._1; } + $runtime.fail(); + })(), + gid: (() => { + if (opts.gid.tag === "Nothing") { return $$undefined; } + if (opts.gid.tag === "Just") { return opts.gid._1; } + $runtime.fail(); + })() + } +); +const exec = cmd => opts => callback => execImpl(cmd)(convertExecOptions(opts))(err => stdout$p => stderr$p => callback({ + error: Data$dNullable.nullable(err, Data$dMaybe.Nothing, Data$dMaybe.Just), + stdout: stdout$p, + stderr: stderr$p +})); +const execFile = cmd => args => opts => callback => execFileImpl(cmd)(args)(convertExecOptions(opts))(err => stdout$p => stderr$p => callback({ + error: Data$dNullable.nullable(err, Data$dMaybe.Nothing, Data$dMaybe.Just), + stdout: stdout$p, + stderr: stderr$p +})); +const connected = v => v1 => v.connected; +export { + $Exit, + $StdIOBehaviour, + BySignal, + Ignore, + Normally, + Pipe, + ShareFD, + ShareStream, + connected, + convertExecOptions, + convertExecSyncOptions, + defaultExecOptions, + defaultExecSyncOptions, + defaultSpawnOptions, + disconnect, + exec, + execFile, + execFileSync, + execSync, + ignore, + inherit, + kill, + mkExit, + onClose, + onExit, + onMessage, + pid, + pipe, + send, + showExit, + spawn, + stderr, + stdin, + stdout, + toActualStdIOOptions, + toStandardError +}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Node.Encoding/foreign.js b/.storybook/purescript-indexer/output-es/Node.Encoding/foreign.js new file mode 100644 index 0000000..608e31d --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Node.Encoding/foreign.js @@ -0,0 +1,6 @@ +/* global Buffer */ +export function byteLengthImpl(str) { + return enc => { + return Buffer.byteLength(str, enc); + }; +} diff --git a/.storybook/purescript-indexer/output-es/Node.Encoding/index.js b/.storybook/purescript-indexer/output-es/Node.Encoding/index.js new file mode 100644 index 0000000..a683b6e --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Node.Encoding/index.js @@ -0,0 +1,48 @@ +import * as $runtime from "../runtime.js"; +import {byteLengthImpl} from "./foreign.js"; +const $Encoding = tag => ({tag}); +const ASCII = /* #__PURE__ */ $Encoding("ASCII"); +const UTF8 = /* #__PURE__ */ $Encoding("UTF8"); +const UTF16LE = /* #__PURE__ */ $Encoding("UTF16LE"); +const UCS2 = /* #__PURE__ */ $Encoding("UCS2"); +const Base64 = /* #__PURE__ */ $Encoding("Base64"); +const Latin1 = /* #__PURE__ */ $Encoding("Latin1"); +const Binary = /* #__PURE__ */ $Encoding("Binary"); +const Hex = /* #__PURE__ */ $Encoding("Hex"); +const showEncoding = { + show: v => { + if (v.tag === "ASCII") { return "ASCII"; } + if (v.tag === "UTF8") { return "UTF8"; } + if (v.tag === "UTF16LE") { return "UTF16LE"; } + if (v.tag === "UCS2") { return "UCS2"; } + if (v.tag === "Base64") { return "Base64"; } + if (v.tag === "Latin1") { return "Latin1"; } + if (v.tag === "Binary") { return "Binary"; } + if (v.tag === "Hex") { return "Hex"; } + $runtime.fail(); + } +}; +const encodingToNode = v => { + if (v.tag === "ASCII") { return "ascii"; } + if (v.tag === "UTF8") { return "utf8"; } + if (v.tag === "UTF16LE") { return "utf16le"; } + if (v.tag === "UCS2") { return "ucs2"; } + if (v.tag === "Base64") { return "base64"; } + if (v.tag === "Latin1") { return "latin1"; } + if (v.tag === "Binary") { return "binary"; } + if (v.tag === "Hex") { return "hex"; } + $runtime.fail(); +}; +const byteLength = str => enc => byteLengthImpl(str)((() => { + if (enc.tag === "ASCII") { return "ascii"; } + if (enc.tag === "UTF8") { return "utf8"; } + if (enc.tag === "UTF16LE") { return "utf16le"; } + if (enc.tag === "UCS2") { return "ucs2"; } + if (enc.tag === "Base64") { return "base64"; } + if (enc.tag === "Latin1") { return "latin1"; } + if (enc.tag === "Binary") { return "binary"; } + if (enc.tag === "Hex") { return "hex"; } + $runtime.fail(); +})()); +export {$Encoding, ASCII, Base64, Binary, Hex, Latin1, UCS2, UTF16LE, UTF8, byteLength, encodingToNode, showEncoding}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Node.FS.Aff/index.js b/.storybook/purescript-indexer/output-es/Node.FS.Aff/index.js new file mode 100644 index 0000000..7b9e659 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Node.FS.Aff/index.js @@ -0,0 +1,111 @@ +import * as $runtime from "../runtime.js"; +import * as Effect$dAff from "../Effect.Aff/index.js"; +import * as Node$dFS$dAsync from "../Node.FS.Async/index.js"; +const toAff1 = f => a => { + const $2 = f(a); + return Effect$dAff.makeAff(k => { + const $4 = $2(k); + return () => { + $4(); + return Effect$dAff.nonCanceler; + }; + }); +}; +const unlink = /* #__PURE__ */ toAff1(Node$dFS$dAsync.unlink); +const toAff2 = f => a => b => { + const $3 = f(a)(b); + return Effect$dAff.makeAff(k => { + const $5 = $3(k); + return () => { + $5(); + return Effect$dAff.nonCanceler; + }; + }); +}; +const truncate = /* #__PURE__ */ toAff2(Node$dFS$dAsync.truncate); +const writeFile = /* #__PURE__ */ toAff2(Node$dFS$dAsync.writeFile); +const toAff3 = f => a => b => c => { + const $4 = f(a)(b)(c); + return Effect$dAff.makeAff(k => { + const $6 = $4(k); + return () => { + $6(); + return Effect$dAff.nonCanceler; + }; + }); +}; +const utimes = /* #__PURE__ */ toAff3(Node$dFS$dAsync.utimes); +const writeTextFile = /* #__PURE__ */ toAff3(Node$dFS$dAsync.writeTextFile); +const toAff5 = f => a => b => c => d => e => { + const $6 = f(a)(b)(c)(d)(e); + return Effect$dAff.makeAff(k => { + const $8 = $6(k); + return () => { + $8(); + return Effect$dAff.nonCanceler; + }; + }); +}; +const symlink = /* #__PURE__ */ toAff3(Node$dFS$dAsync.symlink); +const stat = /* #__PURE__ */ toAff1(Node$dFS$dAsync.stat); +const rmdir$p = /* #__PURE__ */ toAff2(Node$dFS$dAsync.rmdir$p); +const rmdir = /* #__PURE__ */ toAff1(Node$dFS$dAsync.rmdir); +const rm$p = /* #__PURE__ */ toAff2(Node$dFS$dAsync.rm$p); +const rm = /* #__PURE__ */ toAff1(Node$dFS$dAsync.rmdir); +const rename = /* #__PURE__ */ toAff2(Node$dFS$dAsync.rename); +const realpath$p = /* #__PURE__ */ toAff2(Node$dFS$dAsync.realpath$p); +const realpath = /* #__PURE__ */ toAff1(Node$dFS$dAsync.realpath); +const readlink = /* #__PURE__ */ toAff1(Node$dFS$dAsync.readlink); +const readdir = /* #__PURE__ */ toAff1(Node$dFS$dAsync.readdir); +const readTextFile = /* #__PURE__ */ toAff2(Node$dFS$dAsync.readTextFile); +const readFile = /* #__PURE__ */ toAff1(Node$dFS$dAsync.readFile); +const mkdir$p = /* #__PURE__ */ toAff2(Node$dFS$dAsync.mkdir$p); +const mkdir = /* #__PURE__ */ toAff1(Node$dFS$dAsync.mkdir); +const link = /* #__PURE__ */ toAff2(Node$dFS$dAsync.link); +const fdWrite = /* #__PURE__ */ toAff5(Node$dFS$dAsync.fdWrite); +const fdRead = /* #__PURE__ */ toAff5(Node$dFS$dAsync.fdRead); +const fdOpen = /* #__PURE__ */ toAff3(Node$dFS$dAsync.fdOpen); +const fdNext = /* #__PURE__ */ toAff2(Node$dFS$dAsync.fdNext); +const fdClose = /* #__PURE__ */ toAff1(Node$dFS$dAsync.fdClose); +const fdAppend = /* #__PURE__ */ toAff2(Node$dFS$dAsync.fdAppend); +const chown = /* #__PURE__ */ toAff3(Node$dFS$dAsync.chown); +const chmod = /* #__PURE__ */ toAff2(Node$dFS$dAsync.chmod); +const appendTextFile = /* #__PURE__ */ toAff3(Node$dFS$dAsync.appendTextFile); +const appendFile = /* #__PURE__ */ toAff2(Node$dFS$dAsync.appendFile); +export { + appendFile, + appendTextFile, + chmod, + chown, + fdAppend, + fdClose, + fdNext, + fdOpen, + fdRead, + fdWrite, + link, + mkdir, + mkdir$p, + readFile, + readTextFile, + readdir, + readlink, + realpath, + realpath$p, + rename, + rm, + rm$p, + rmdir, + rmdir$p, + stat, + symlink, + toAff1, + toAff2, + toAff3, + toAff5, + truncate, + unlink, + utimes, + writeFile, + writeTextFile +}; diff --git a/.storybook/purescript-indexer/output-es/Node.FS.Async/foreign.js b/.storybook/purescript-indexer/output-es/Node.FS.Async/foreign.js new file mode 100644 index 0000000..3ddc7a7 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Node.FS.Async/foreign.js @@ -0,0 +1,25 @@ +export { + rename as renameImpl, + truncate as truncateImpl, + chown as chownImpl, + chmod as chmodImpl, + stat as statImpl, + lstat as lstatImpl, + link as linkImpl, + symlink as symlinkImpl, + readlink as readlinkImpl, + realpath as realpathImpl, + unlink as unlinkImpl, + rmdir as rmdirImpl, + rm as rmImpl, + mkdir as mkdirImpl, + readdir as readdirImpl, + utimes as utimesImpl, + readFile as readFileImpl, + writeFile as writeFileImpl, + appendFile as appendFileImpl, + open as openImpl, + read as readImpl, + write as writeImpl, + close as closeImpl +} from "fs"; diff --git a/.storybook/purescript-indexer/output-es/Node.FS.Async/index.js b/.storybook/purescript-indexer/output-es/Node.FS.Async/index.js new file mode 100644 index 0000000..0633b8f --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Node.FS.Async/index.js @@ -0,0 +1,235 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dDateTime$dInstant from "../Data.DateTime.Instant/index.js"; +import * as Data$dEither from "../Data.Either/index.js"; +import * as Data$dEuclideanRing from "../Data.EuclideanRing/index.js"; +import * as Data$dInt from "../Data.Int/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dNullable from "../Data.Nullable/index.js"; +import * as Data$dNumber from "../Data.Number/index.js"; +import * as Node$dBuffer from "../Node.Buffer/index.js"; +import * as Node$dFS$dPerms from "../Node.FS.Perms/index.js"; +import * as Node$dFS$dStats from "../Node.FS.Stats/index.js"; +import { + appendFileImpl, + chmodImpl, + chownImpl, + closeImpl, + linkImpl, + lstatImpl, + mkdirImpl, + openImpl, + readFileImpl, + readImpl, + readdirImpl, + readlinkImpl, + realpathImpl, + renameImpl, + rmImpl, + rmdirImpl, + statImpl, + symlinkImpl, + truncateImpl, + unlinkImpl, + utimesImpl, + writeFileImpl, + writeImpl +} from "./foreign.js"; +const handleCallback = cb => (err, a) => { + const v = Data$dNullable.nullable(err, Data$dMaybe.Nothing, Data$dMaybe.Just); + if (v.tag === "Nothing") { return cb(Data$dEither.$Either("Right", a))(); } + if (v.tag === "Just") { return cb(Data$dEither.$Either("Left", v._1))(); } + $runtime.fail(); +}; +const link = src => dst => cb => () => linkImpl(src, dst, handleCallback(cb)); +const lstat = file => cb => { + const $2 = handleCallback(x => cb((() => { + if (x.tag === "Left") { return Data$dEither.$Either("Left", x._1); } + if (x.tag === "Right") { return Data$dEither.$Either("Right", Node$dFS$dStats.$Stats(x._1)); } + $runtime.fail(); + })())); + return () => lstatImpl(file, $2); +}; +const mkdir$p = file => v => cb => { + const $3 = {recursive: v.recursive, mode: Node$dFS$dPerms.permsToString(v.mode)}; + return () => mkdirImpl(file, $3, handleCallback(cb)); +}; +const mkdir = path => mkdir$p(path)({recursive: false, mode: {u: Node$dFS$dPerms.semiringPerm.one, g: Node$dFS$dPerms.semiringPerm.one, o: Node$dFS$dPerms.semiringPerm.one}}); +const readFile = file => cb => () => readFileImpl(file, {}, handleCallback(cb)); +const readTextFile = encoding => file => cb => { + const $3 = { + encoding: (() => { + if (encoding.tag === "ASCII") { return "ASCII"; } + if (encoding.tag === "UTF8") { return "UTF8"; } + if (encoding.tag === "UTF16LE") { return "UTF16LE"; } + if (encoding.tag === "UCS2") { return "UCS2"; } + if (encoding.tag === "Base64") { return "Base64"; } + if (encoding.tag === "Latin1") { return "Latin1"; } + if (encoding.tag === "Binary") { return "Binary"; } + if (encoding.tag === "Hex") { return "Hex"; } + $runtime.fail(); + })() + }; + return () => readFileImpl(file, $3, handleCallback(cb)); +}; +const readdir = file => cb => () => readdirImpl(file, handleCallback(cb)); +const readlink = path => cb => () => readlinkImpl(path, handleCallback(cb)); +const realpath = path => cb => () => realpathImpl(path, {}, handleCallback(cb)); +const realpath$p = path => cache => cb => () => realpathImpl(path, cache, handleCallback(cb)); +const rename = oldFile => newFile => cb => () => renameImpl(oldFile, newFile, handleCallback(cb)); +const rm$p = path => opts => cb => () => rmImpl(path, opts, handleCallback(cb)); +const rm = path => rm$p(path)({force: false, maxRetries: 100, recursive: false, retryDelay: 1000}); +const rmdir$p = path => opts => cb => () => rmdirImpl(path, opts, handleCallback(cb)); +const rmdir = path => cb => () => rmdirImpl(path, {maxRetries: 0, retryDelay: 100}, handleCallback(cb)); +const stat = file => cb => { + const $2 = handleCallback(x => cb((() => { + if (x.tag === "Left") { return Data$dEither.$Either("Left", x._1); } + if (x.tag === "Right") { return Data$dEither.$Either("Right", Node$dFS$dStats.$Stats(x._1)); } + $runtime.fail(); + })())); + return () => statImpl(file, $2); +}; +const symlink = src => dest => ty => cb => { + const $4 = (() => { + if (ty.tag === "FileLink") { return "file"; } + if (ty.tag === "DirLink") { return "dir"; } + if (ty.tag === "JunctionLink") { return "junction"; } + $runtime.fail(); + })(); + return () => symlinkImpl(src, dest, $4, handleCallback(cb)); +}; +const truncate = file => len => cb => () => truncateImpl(file, len, handleCallback(cb)); +const unlink = file => cb => () => unlinkImpl(file, handleCallback(cb)); +const utimes = file => atime => mtime => cb => { + const $4 = Data$dEuclideanRing.intDiv(Data$dInt.unsafeClamp(Data$dNumber.round(Data$dDateTime$dInstant.fromDateTime(atime))))(1000); + const $5 = Data$dEuclideanRing.intDiv(Data$dInt.unsafeClamp(Data$dNumber.round(Data$dDateTime$dInstant.fromDateTime(mtime))))(1000); + return () => utimesImpl(file, $4, $5, handleCallback(cb)); +}; +const writeFile = file => buff => cb => () => writeFileImpl(file, buff, {}, handleCallback(cb)); +const writeTextFile = encoding => file => buff => cb => { + const $4 = { + encoding: (() => { + if (encoding.tag === "ASCII") { return "ASCII"; } + if (encoding.tag === "UTF8") { return "UTF8"; } + if (encoding.tag === "UTF16LE") { return "UTF16LE"; } + if (encoding.tag === "UCS2") { return "UCS2"; } + if (encoding.tag === "Base64") { return "Base64"; } + if (encoding.tag === "Latin1") { return "Latin1"; } + if (encoding.tag === "Binary") { return "Binary"; } + if (encoding.tag === "Hex") { return "Hex"; } + $runtime.fail(); + })() + }; + return () => writeFileImpl(file, buff, $4, handleCallback(cb)); +}; +const fdWrite = fd => buff => off => len => pos => cb => { + const $6 = (() => { + if (pos.tag === "Nothing") { return Data$dNullable.null; } + if (pos.tag === "Just") { return Data$dNullable.notNull(pos._1); } + $runtime.fail(); + })(); + return () => writeImpl(fd, buff, off, len, $6, handleCallback(cb)); +}; +const fdRead = fd => buff => off => len => pos => cb => { + const $6 = (() => { + if (pos.tag === "Nothing") { return Data$dNullable.null; } + if (pos.tag === "Just") { return Data$dNullable.notNull(pos._1); } + $runtime.fail(); + })(); + return () => readImpl(fd, buff, off, len, $6, handleCallback(cb)); +}; +const fdOpen = file => flags => mode => cb => { + const $4 = (() => { + if (flags.tag === "R") { return "r"; } + if (flags.tag === "R_PLUS") { return "r+"; } + if (flags.tag === "RS") { return "rs"; } + if (flags.tag === "RS_PLUS") { return "rs+"; } + if (flags.tag === "W") { return "w"; } + if (flags.tag === "WX") { return "wx"; } + if (flags.tag === "W_PLUS") { return "w+"; } + if (flags.tag === "WX_PLUS") { return "wx+"; } + if (flags.tag === "A") { return "a"; } + if (flags.tag === "AX") { return "ax"; } + if (flags.tag === "A_PLUS") { return "a+"; } + if (flags.tag === "AX_PLUS") { return "ax+"; } + $runtime.fail(); + })(); + const $5 = (() => { + if (mode.tag === "Nothing") { return Data$dNullable.null; } + if (mode.tag === "Just") { return Data$dNullable.notNull(mode._1); } + $runtime.fail(); + })(); + return () => openImpl(file, $4, $5, handleCallback(cb)); +}; +const fdNext = fd => buff => cb => { + const $3 = Node$dBuffer.mutableBufferEffect.size(buff); + return () => { + const sz = $3(); + return fdRead(fd)(buff)(0)(sz)(Data$dMaybe.Nothing)(cb)(); + }; +}; +const fdClose = fd => cb => () => closeImpl(fd, handleCallback(cb)); +const fdAppend = fd => buff => cb => { + const $3 = Node$dBuffer.mutableBufferEffect.size(buff); + return () => { + const sz = $3(); + return fdWrite(fd)(buff)(0)(sz)(Data$dMaybe.Nothing)(cb)(); + }; +}; +const chown = file => uid => gid => cb => () => chownImpl(file, uid, gid, handleCallback(cb)); +const chmod = file => perms => cb => { + const $3 = Node$dFS$dPerms.permsToString(perms); + return () => chmodImpl(file, $3, handleCallback(cb)); +}; +const appendTextFile = encoding => file => buff => cb => { + const $4 = { + encoding: (() => { + if (encoding.tag === "ASCII") { return "ASCII"; } + if (encoding.tag === "UTF8") { return "UTF8"; } + if (encoding.tag === "UTF16LE") { return "UTF16LE"; } + if (encoding.tag === "UCS2") { return "UCS2"; } + if (encoding.tag === "Base64") { return "Base64"; } + if (encoding.tag === "Latin1") { return "Latin1"; } + if (encoding.tag === "Binary") { return "Binary"; } + if (encoding.tag === "Hex") { return "Hex"; } + $runtime.fail(); + })() + }; + return () => appendFileImpl(file, buff, $4, handleCallback(cb)); +}; +const appendFile = file => buff => cb => () => appendFileImpl(file, buff, {}, handleCallback(cb)); +export { + appendFile, + appendTextFile, + chmod, + chown, + fdAppend, + fdClose, + fdNext, + fdOpen, + fdRead, + fdWrite, + handleCallback, + link, + lstat, + mkdir, + mkdir$p, + readFile, + readTextFile, + readdir, + readlink, + realpath, + realpath$p, + rename, + rm, + rm$p, + rmdir, + rmdir$p, + stat, + symlink, + truncate, + unlink, + utimes, + writeFile, + writeTextFile +}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Node.FS.Perms/index.js b/.storybook/purescript-indexer/output-es/Node.FS.Perms/index.js new file mode 100644 index 0000000..404d3b8 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Node.FS.Perms/index.js @@ -0,0 +1,147 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dEnum from "../Data.Enum/index.js"; +import * as Data$dFunctor from "../Data.Functor/index.js"; +import * as Data$dInt from "../Data.Int/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dOrd from "../Data.Ord/index.js"; +import * as Data$dSemigroup from "../Data.Semigroup/index.js"; +import * as Data$dShow from "../Data.Show/index.js"; +import * as Data$dString$dCodePoints from "../Data.String.CodePoints/index.js"; +import * as Data$dString$dCodeUnits from "../Data.String.CodeUnits/index.js"; +import * as Data$dString$dCommon from "../Data.String.Common/index.js"; +const compare = /* #__PURE__ */ (() => Data$dOrd.ordArray(Data$dOrd.ordBoolean).compare)(); +const write = {r: false, w: true, x: false}; +const semiringPerm = { + add: v => v1 => ({r: v.r || v1.r, w: v.w || v1.w, x: v.x || v1.x}), + zero: {r: false, w: false, x: false}, + mul: v => v1 => ({r: v.r && v1.r, w: v.w && v1.w, x: v.x && v1.x}), + one: {r: true, w: true, x: true} +}; +const read = {r: true, w: false, x: false}; +const permToString = x => Data$dShow.showIntImpl(( + (() => { + if (x.r) { return 4; } + return 0; + })() + (() => { + if (x.w) { return 2; } + return 0; + })() | 0 +) + (() => { + if (x.x) { return 1; } + return 0; +})() | 0); +const permsToString = v => "0" + (permToString(v.u) + (permToString(v.g) + permToString(v.o))); +const permsToInt = /* #__PURE__ */ (() => { + const $0 = Data$dInt.fromStringAs(8); + return x => { + const $2 = $0(permsToString(x)); + if ($2.tag === "Just") { return $2._1; } + $runtime.fail(); + }; +})(); +const none = /* #__PURE__ */ (() => semiringPerm.zero)(); +const mkPerms = u => g => o => ({u: u, g: g, o: o}); +const mkPerm = r => w => x => ({r: r, w: w, x: x}); +const execute = {r: false, w: false, x: true}; +const permFromChar = c => { + if (c === "0") { return Data$dMaybe.$Maybe("Just", semiringPerm.zero); } + if (c === "1") { return Data$dMaybe.$Maybe("Just", execute); } + if (c === "2") { return Data$dMaybe.$Maybe("Just", write); } + if (c === "3") { return Data$dMaybe.$Maybe("Just", {r: false, w: true, x: true}); } + if (c === "4") { return Data$dMaybe.$Maybe("Just", read); } + if (c === "5") { return Data$dMaybe.$Maybe("Just", {r: true, w: false, x: true}); } + if (c === "6") { return Data$dMaybe.$Maybe("Just", {r: true, w: true, x: false}); } + if (c === "7") { return Data$dMaybe.$Maybe("Just", {r: true, w: true, x: true}); } + return Data$dMaybe.Nothing; +}; +const permsFromString = /* #__PURE__ */ (() => { + const $0 = Data$dEnum.fromCharCode(48); + return x => { + const $2 = Data$dString$dCodeUnits.toCharArray((() => { + if ( + (() => { + const $2 = Data$dString$dCodeUnits.charAt(0)(x); + if ($2.tag === "Nothing") { return false; } + if ($2.tag === "Just") { return $2._1 === $0; } + return false; + })() + ) { + return Data$dString$dCodeUnits.drop(Data$dString$dCodeUnits.length(Data$dString$dCodePoints.take(1)(x)))(x); + } + return x; + })()); + if ($2.length === 3) { + return Data$dMaybe.applyMaybe.apply(Data$dMaybe.applyMaybe.apply((() => { + const $3 = permFromChar($2[0]); + if ($3.tag === "Just") { return Data$dMaybe.$Maybe("Just", g => o => ({u: $3._1, g: g, o: o})); } + return Data$dMaybe.Nothing; + })())(permFromChar($2[1])))(permFromChar($2[2])); + } + return Data$dMaybe.Nothing; + }; +})(); +const eqPerm = {eq: v => v1 => v.r === v1.r && (v.w === v1.w && v.x === v1.x)}; +const eqPerms = { + eq: v => v1 => v.u.r === v1.u.r && (v.u.w === v1.u.w && v.u.x === v1.u.x) && ( + v.g.r === v1.g.r && (v.g.w === v1.g.w && v.g.x === v1.g.x) && (v.o.r === v1.o.r && (v.o.w === v1.o.w && v.o.x === v1.o.x)) + ) +}; +const ordPerm = {compare: v => v1 => compare([v.r, v.w, v.x])([v1.r, v1.w, v1.x]), Eq0: () => eqPerm}; +const compare1 = /* #__PURE__ */ (() => Data$dOrd.ordArray(ordPerm).compare)(); +const ordPerms = {compare: v => v1 => compare1([v.u, v.g, v.o])([v1.u, v1.g, v1.o]), Eq0: () => eqPerms}; +const all = /* #__PURE__ */ (() => semiringPerm.one)(); +const showPerm = { + show: v => { + if (v.r === semiringPerm.zero.r && (v.w === semiringPerm.zero.w && v.x === semiringPerm.zero.x)) { return "none"; } + if (v.r === semiringPerm.one.r && (v.w === semiringPerm.one.w && v.x === semiringPerm.one.x)) { return "all"; } + return Data$dString$dCommon.joinWith(" + ")(Data$dSemigroup.concatArray((() => { + if (v.r) { return ["read"]; } + return []; + })())(Data$dSemigroup.concatArray((() => { + if (v.w) { return ["write"]; } + return []; + })())((() => { + if (v.x) { return ["execute"]; } + return []; + })()))); + } +}; +const showPerms = { + show: v => "mkPerms " + Data$dString$dCommon.joinWith(" ")(Data$dFunctor.arrayMap(perm => { + const str = showPerm.show(perm); + if ( + (() => { + const $3 = Data$dString$dCodePoints.indexOf(" ")(str); + if ($3.tag === "Nothing") { return true; } + if ($3.tag === "Just") { return false; } + $runtime.fail(); + })() + ) { + return str; + } + return "(" + (str + ")"); + })([v.u, v.g, v.o])) +}; +export { + all, + compare, + compare1, + eqPerm, + eqPerms, + execute, + mkPerm, + mkPerms, + none, + ordPerm, + ordPerms, + permFromChar, + permToString, + permsFromString, + permsToInt, + permsToString, + read, + semiringPerm, + showPerm, + showPerms, + write +}; diff --git a/.storybook/purescript-indexer/output-es/Node.FS.Stats/foreign.js b/.storybook/purescript-indexer/output-es/Node.FS.Stats/foreign.js new file mode 100644 index 0000000..e6e6148 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Node.FS.Stats/foreign.js @@ -0,0 +1,5 @@ +export { inspect as showStatsObj } from "util"; + +export function statsMethod(m, s) { + return s[m](); +} diff --git a/.storybook/purescript-indexer/output-es/Node.FS.Stats/index.js b/.storybook/purescript-indexer/output-es/Node.FS.Stats/index.js new file mode 100644 index 0000000..1551826 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Node.FS.Stats/index.js @@ -0,0 +1,31 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dDateTime$dInstant from "../Data.DateTime.Instant/index.js"; +import * as Data$dJSDate from "../Data.JSDate/index.js"; +import {showStatsObj, statsMethod} from "./foreign.js"; +const $Stats = _1 => ({tag: "Stats", _1}); +const Stats = value0 => $Stats(value0); +const statusChangedTime = v => { + const $1 = Data$dJSDate.toInstant(v._1.ctime); + if ($1.tag === "Just") { return Data$dDateTime$dInstant.toDateTime($1._1); } + $runtime.fail(); +}; +const showStats = {show: v => "Stats " + showStatsObj(v._1)}; +const modifiedTime = v => { + const $1 = Data$dJSDate.toInstant(v._1.mtime); + if ($1.tag === "Just") { return Data$dDateTime$dInstant.toDateTime($1._1); } + $runtime.fail(); +}; +const isSymbolicLink = v => statsMethod("isSymbolicLink", v._1); +const isSocket = v => statsMethod("isSocket", v._1); +const isFile = v => statsMethod("isFile", v._1); +const isFIFO = v => statsMethod("isFIFO", v._1); +const isDirectory = v => statsMethod("isDirectory", v._1); +const isCharacterDevice = v => statsMethod("isCharacterDevice", v._1); +const isBlockDevice = v => statsMethod("isBlockDevice", v._1); +const accessedTime = v => { + const $1 = Data$dJSDate.toInstant(v._1.atime); + if ($1.tag === "Just") { return Data$dDateTime$dInstant.toDateTime($1._1); } + $runtime.fail(); +}; +export {$Stats, Stats, accessedTime, isBlockDevice, isCharacterDevice, isDirectory, isFIFO, isFile, isSocket, isSymbolicLink, modifiedTime, showStats, statusChangedTime}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Node.FS.Stream/foreign.js b/.storybook/purescript-indexer/output-es/Node.FS.Stream/foreign.js new file mode 100644 index 0000000..bfc7126 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Node.FS.Stream/foreign.js @@ -0,0 +1,4 @@ +export { + createReadStream as createReadStreamImpl, + createWriteStream as createWriteStreamImpl +} from "fs"; diff --git a/.storybook/purescript-indexer/output-es/Node.FS.Stream/index.js b/.storybook/purescript-indexer/output-es/Node.FS.Stream/index.js new file mode 100644 index 0000000..d882a20 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Node.FS.Stream/index.js @@ -0,0 +1,119 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dNullable from "../Data.Nullable/index.js"; +import * as Node$dFS from "../Node.FS/index.js"; +import * as Node$dFS$dPerms from "../Node.FS.Perms/index.js"; +import {createReadStreamImpl, createWriteStreamImpl} from "./foreign.js"; +const readWrite = /* #__PURE__ */ (() => { + const rw = {r: true, w: true, x: false}; + return {u: rw, g: rw, o: rw}; +})(); +const fdCreateWriteStreamWith = opts => fd => { + const $2 = { + fd: fd, + mode: Node$dFS$dPerms.permsToInt(opts.perms), + flags: (() => { + if (opts.flags.tag === "R") { return "r"; } + if (opts.flags.tag === "R_PLUS") { return "r+"; } + if (opts.flags.tag === "RS") { return "rs"; } + if (opts.flags.tag === "RS_PLUS") { return "rs+"; } + if (opts.flags.tag === "W") { return "w"; } + if (opts.flags.tag === "WX") { return "wx"; } + if (opts.flags.tag === "W_PLUS") { return "w+"; } + if (opts.flags.tag === "WX_PLUS") { return "wx+"; } + if (opts.flags.tag === "A") { return "a"; } + if (opts.flags.tag === "AX") { return "ax"; } + if (opts.flags.tag === "A_PLUS") { return "a+"; } + if (opts.flags.tag === "AX_PLUS") { return "ax+"; } + $runtime.fail(); + })() + }; + return () => createWriteStreamImpl(Data$dNullable.null, $2); +}; +const fdCreateReadStreamWith = opts => fd => { + const $2 = { + fd: fd, + mode: Node$dFS$dPerms.permsToInt(opts.perms), + flags: (() => { + if (opts.flags.tag === "R") { return "r"; } + if (opts.flags.tag === "R_PLUS") { return "r+"; } + if (opts.flags.tag === "RS") { return "rs"; } + if (opts.flags.tag === "RS_PLUS") { return "rs+"; } + if (opts.flags.tag === "W") { return "w"; } + if (opts.flags.tag === "WX") { return "wx"; } + if (opts.flags.tag === "W_PLUS") { return "w+"; } + if (opts.flags.tag === "WX_PLUS") { return "wx+"; } + if (opts.flags.tag === "A") { return "a"; } + if (opts.flags.tag === "AX") { return "ax"; } + if (opts.flags.tag === "A_PLUS") { return "a+"; } + if (opts.flags.tag === "AX_PLUS") { return "ax+"; } + $runtime.fail(); + })(), + autoClose: opts.autoClose + }; + return () => createReadStreamImpl(Data$dNullable.null, $2); +}; +const defaultWriteStreamOptions = {flags: Node$dFS.W, perms: readWrite}; +const fdCreateWriteStream = /* #__PURE__ */ fdCreateWriteStreamWith(defaultWriteStreamOptions); +const defaultReadStreamOptions = {flags: Node$dFS.R, perms: readWrite, autoClose: true}; +const fdCreateReadStream = /* #__PURE__ */ fdCreateReadStreamWith(defaultReadStreamOptions); +const createWriteStreamWith = opts => file => { + const $2 = Data$dNullable.notNull(file); + const $3 = { + mode: Node$dFS$dPerms.permsToInt(opts.perms), + flags: (() => { + if (opts.flags.tag === "R") { return "r"; } + if (opts.flags.tag === "R_PLUS") { return "r+"; } + if (opts.flags.tag === "RS") { return "rs"; } + if (opts.flags.tag === "RS_PLUS") { return "rs+"; } + if (opts.flags.tag === "W") { return "w"; } + if (opts.flags.tag === "WX") { return "wx"; } + if (opts.flags.tag === "W_PLUS") { return "w+"; } + if (opts.flags.tag === "WX_PLUS") { return "wx+"; } + if (opts.flags.tag === "A") { return "a"; } + if (opts.flags.tag === "AX") { return "ax"; } + if (opts.flags.tag === "A_PLUS") { return "a+"; } + if (opts.flags.tag === "AX_PLUS") { return "ax+"; } + $runtime.fail(); + })() + }; + return () => createWriteStreamImpl($2, $3); +}; +const createWriteStream = /* #__PURE__ */ createWriteStreamWith(defaultWriteStreamOptions); +const createReadStreamWith = opts => file => { + const $2 = Data$dNullable.notNull(file); + const $3 = { + mode: Node$dFS$dPerms.permsToInt(opts.perms), + flags: (() => { + if (opts.flags.tag === "R") { return "r"; } + if (opts.flags.tag === "R_PLUS") { return "r+"; } + if (opts.flags.tag === "RS") { return "rs"; } + if (opts.flags.tag === "RS_PLUS") { return "rs+"; } + if (opts.flags.tag === "W") { return "w"; } + if (opts.flags.tag === "WX") { return "wx"; } + if (opts.flags.tag === "W_PLUS") { return "w+"; } + if (opts.flags.tag === "WX_PLUS") { return "wx+"; } + if (opts.flags.tag === "A") { return "a"; } + if (opts.flags.tag === "AX") { return "ax"; } + if (opts.flags.tag === "A_PLUS") { return "a+"; } + if (opts.flags.tag === "AX_PLUS") { return "ax+"; } + $runtime.fail(); + })(), + autoClose: opts.autoClose + }; + return () => createReadStreamImpl($2, $3); +}; +const createReadStream = /* #__PURE__ */ createReadStreamWith(defaultReadStreamOptions); +export { + createReadStream, + createReadStreamWith, + createWriteStream, + createWriteStreamWith, + defaultReadStreamOptions, + defaultWriteStreamOptions, + fdCreateReadStream, + fdCreateReadStreamWith, + fdCreateWriteStream, + fdCreateWriteStreamWith, + readWrite +}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Node.FS.Sync/foreign.js b/.storybook/purescript-indexer/output-es/Node.FS.Sync/foreign.js new file mode 100644 index 0000000..dcebaaa --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Node.FS.Sync/foreign.js @@ -0,0 +1,27 @@ +export { + renameSync as renameSyncImpl, + truncateSync as truncateSyncImpl, + chownSync as chownSyncImpl, + chmodSync as chmodSyncImpl, + statSync as statSyncImpl, + lstatSync as lstatSyncImpl, + linkSync as linkSyncImpl, + symlinkSync as symlinkSyncImpl, + readlinkSync as readlinkSyncImpl, + realpathSync as realpathSyncImpl, + unlinkSync as unlinkSyncImpl, + rmdirSync as rmdirSyncImpl, + rmSync as rmSyncImpl, + mkdirSync as mkdirSyncImpl, + readdirSync as readdirSyncImpl, + utimesSync as utimesSyncImpl, + readFileSync as readFileSyncImpl, + writeFileSync as writeFileSyncImpl, + appendFileSync as appendFileSyncImpl, + existsSync as existsSyncImpl, + openSync as openSyncImpl, + readSync as readSyncImpl, + writeSync as writeSyncImpl, + fsyncSync as fsyncSyncImpl, + closeSync as closeSyncImpl +} from "fs"; diff --git a/.storybook/purescript-indexer/output-es/Node.FS.Sync/index.js b/.storybook/purescript-indexer/output-es/Node.FS.Sync/index.js new file mode 100644 index 0000000..c06d532 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Node.FS.Sync/index.js @@ -0,0 +1,231 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dDateTime$dInstant from "../Data.DateTime.Instant/index.js"; +import * as Data$dEuclideanRing from "../Data.EuclideanRing/index.js"; +import * as Data$dInt from "../Data.Int/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dNullable from "../Data.Nullable/index.js"; +import * as Data$dNumber from "../Data.Number/index.js"; +import * as Node$dBuffer from "../Node.Buffer/index.js"; +import * as Node$dFS$dPerms from "../Node.FS.Perms/index.js"; +import * as Node$dFS$dStats from "../Node.FS.Stats/index.js"; +import { + appendFileSyncImpl, + chmodSyncImpl, + chownSyncImpl, + closeSyncImpl, + existsSyncImpl, + fsyncSyncImpl, + linkSyncImpl, + lstatSyncImpl, + mkdirSyncImpl, + openSyncImpl, + readFileSyncImpl, + readSyncImpl, + readdirSyncImpl, + readlinkSyncImpl, + realpathSyncImpl, + renameSyncImpl, + rmSyncImpl, + rmdirSyncImpl, + statSyncImpl, + symlinkSyncImpl, + truncateSyncImpl, + unlinkSyncImpl, + utimesSyncImpl, + writeFileSyncImpl, + writeSyncImpl +} from "./foreign.js"; +const writeTextFile = encoding => file => text => { + const $3 = { + encoding: (() => { + if (encoding.tag === "ASCII") { return "ASCII"; } + if (encoding.tag === "UTF8") { return "UTF8"; } + if (encoding.tag === "UTF16LE") { return "UTF16LE"; } + if (encoding.tag === "UCS2") { return "UCS2"; } + if (encoding.tag === "Base64") { return "Base64"; } + if (encoding.tag === "Latin1") { return "Latin1"; } + if (encoding.tag === "Binary") { return "Binary"; } + if (encoding.tag === "Hex") { return "Hex"; } + $runtime.fail(); + })() + }; + return () => writeFileSyncImpl(file, text, $3); +}; +const writeFile = file => buff => () => writeFileSyncImpl(file, buff, {}); +const utimes = file => atime => mtime => { + const $3 = Data$dEuclideanRing.intDiv(Data$dInt.unsafeClamp(Data$dNumber.round(Data$dDateTime$dInstant.fromDateTime(atime))))(1000); + const $4 = Data$dEuclideanRing.intDiv(Data$dInt.unsafeClamp(Data$dNumber.round(Data$dDateTime$dInstant.fromDateTime(mtime))))(1000); + return () => utimesSyncImpl(file, $3, $4); +}; +const unlink = file => () => unlinkSyncImpl(file); +const truncate = file => len => () => truncateSyncImpl(file, len); +const symlink = src => dst => ty => { + const $3 = (() => { + if (ty.tag === "FileLink") { return "file"; } + if (ty.tag === "DirLink") { return "dir"; } + if (ty.tag === "JunctionLink") { return "junction"; } + $runtime.fail(); + })(); + return () => symlinkSyncImpl(src, dst, $3); +}; +const stat = file => () => { + const a$p = statSyncImpl(file); + return Node$dFS$dStats.$Stats(a$p); +}; +const rmdir$p = path => opts => () => rmdirSyncImpl(path, opts); +const rmdir = path => () => rmdirSyncImpl(path, {maxRetries: 0, retryDelay: 100}); +const rm$p = path => opts => () => rmSyncImpl(path, opts); +const rm = path => () => rmSyncImpl(path, {force: false, maxRetries: 100, recursive: false, retryDelay: 1000}); +const rename = oldFile => newFile => () => renameSyncImpl(oldFile, newFile); +const realpath$p = path => cache => () => realpathSyncImpl(path, cache); +const realpath = path => () => realpathSyncImpl(path, {}); +const readlink = path => () => readlinkSyncImpl(path); +const readdir = file => () => readdirSyncImpl(file); +const readTextFile = encoding => file => { + const $2 = { + encoding: (() => { + if (encoding.tag === "ASCII") { return "ASCII"; } + if (encoding.tag === "UTF8") { return "UTF8"; } + if (encoding.tag === "UTF16LE") { return "UTF16LE"; } + if (encoding.tag === "UCS2") { return "UCS2"; } + if (encoding.tag === "Base64") { return "Base64"; } + if (encoding.tag === "Latin1") { return "Latin1"; } + if (encoding.tag === "Binary") { return "Binary"; } + if (encoding.tag === "Hex") { return "Hex"; } + $runtime.fail(); + })() + }; + return () => readFileSyncImpl(file, $2); +}; +const readFile = file => () => readFileSyncImpl(file, {}); +const mkdir$p = file => v => { + const $2 = {recursive: v.recursive, mode: Node$dFS$dPerms.permsToString(v.mode)}; + return () => mkdirSyncImpl(file, $2); +}; +const mkdir = path => { + const $1 = { + recursive: false, + mode: Node$dFS$dPerms.permsToString({u: Node$dFS$dPerms.semiringPerm.one, g: Node$dFS$dPerms.semiringPerm.one, o: Node$dFS$dPerms.semiringPerm.one}) + }; + return () => mkdirSyncImpl(path, $1); +}; +const lstat = file => () => { + const a$p = lstatSyncImpl(file); + return Node$dFS$dStats.$Stats(a$p); +}; +const link = src => dst => () => linkSyncImpl(src, dst); +const fdWrite = fd => buff => off => len => pos => { + const $5 = (() => { + if (pos.tag === "Nothing") { return Data$dNullable.null; } + if (pos.tag === "Just") { return Data$dNullable.notNull(pos._1); } + $runtime.fail(); + })(); + return () => writeSyncImpl(fd, buff, off, len, $5); +}; +const fdRead = fd => buff => off => len => pos => { + const $5 = (() => { + if (pos.tag === "Nothing") { return Data$dNullable.null; } + if (pos.tag === "Just") { return Data$dNullable.notNull(pos._1); } + $runtime.fail(); + })(); + return () => readSyncImpl(fd, buff, off, len, $5); +}; +const fdOpen = file => flags => mode => { + const $3 = (() => { + if (flags.tag === "R") { return "r"; } + if (flags.tag === "R_PLUS") { return "r+"; } + if (flags.tag === "RS") { return "rs"; } + if (flags.tag === "RS_PLUS") { return "rs+"; } + if (flags.tag === "W") { return "w"; } + if (flags.tag === "WX") { return "wx"; } + if (flags.tag === "W_PLUS") { return "w+"; } + if (flags.tag === "WX_PLUS") { return "wx+"; } + if (flags.tag === "A") { return "a"; } + if (flags.tag === "AX") { return "ax"; } + if (flags.tag === "A_PLUS") { return "a+"; } + if (flags.tag === "AX_PLUS") { return "ax+"; } + $runtime.fail(); + })(); + const $4 = (() => { + if (mode.tag === "Nothing") { return Data$dNullable.null; } + if (mode.tag === "Just") { return Data$dNullable.notNull(mode._1); } + $runtime.fail(); + })(); + return () => openSyncImpl(file, $3, $4); +}; +const fdNext = fd => buff => { + const $2 = Node$dBuffer.mutableBufferEffect.size(buff); + return () => { + const sz = $2(); + return fdRead(fd)(buff)(0)(sz)(Data$dMaybe.Nothing)(); + }; +}; +const fdFlush = fd => () => fsyncSyncImpl(fd); +const fdClose = fd => () => closeSyncImpl(fd); +const fdAppend = fd => buff => { + const $2 = Node$dBuffer.mutableBufferEffect.size(buff); + return () => { + const sz = $2(); + return fdWrite(fd)(buff)(0)(sz)(Data$dMaybe.Nothing)(); + }; +}; +const exists = file => () => existsSyncImpl(file); +const chown = file => uid => gid => () => chownSyncImpl(file, uid, gid); +const chmod = file => perms => { + const $2 = Node$dFS$dPerms.permsToString(perms); + return () => chmodSyncImpl(file, $2); +}; +const appendTextFile = encoding => file => buff => { + const $3 = { + encoding: (() => { + if (encoding.tag === "ASCII") { return "ASCII"; } + if (encoding.tag === "UTF8") { return "UTF8"; } + if (encoding.tag === "UTF16LE") { return "UTF16LE"; } + if (encoding.tag === "UCS2") { return "UCS2"; } + if (encoding.tag === "Base64") { return "Base64"; } + if (encoding.tag === "Latin1") { return "Latin1"; } + if (encoding.tag === "Binary") { return "Binary"; } + if (encoding.tag === "Hex") { return "Hex"; } + $runtime.fail(); + })() + }; + return () => appendFileSyncImpl(file, buff, $3); +}; +const appendFile = file => buff => () => appendFileSyncImpl(file, buff, {}); +export { + appendFile, + appendTextFile, + chmod, + chown, + exists, + fdAppend, + fdClose, + fdFlush, + fdNext, + fdOpen, + fdRead, + fdWrite, + link, + lstat, + mkdir, + mkdir$p, + readFile, + readTextFile, + readdir, + readlink, + realpath, + realpath$p, + rename, + rm, + rm$p, + rmdir, + rmdir$p, + stat, + symlink, + truncate, + unlink, + utimes, + writeFile, + writeTextFile +}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Node.FS/index.js b/.storybook/purescript-indexer/output-es/Node.FS/index.js new file mode 100644 index 0000000..cc4f49a --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Node.FS/index.js @@ -0,0 +1,128 @@ +import * as $runtime from "../runtime.js"; +const $FileFlags = tag => ({tag}); +const $SymlinkType = tag => ({tag}); +const FileLink = /* #__PURE__ */ $SymlinkType("FileLink"); +const DirLink = /* #__PURE__ */ $SymlinkType("DirLink"); +const JunctionLink = /* #__PURE__ */ $SymlinkType("JunctionLink"); +const R = /* #__PURE__ */ $FileFlags("R"); +const R_PLUS = /* #__PURE__ */ $FileFlags("R_PLUS"); +const RS = /* #__PURE__ */ $FileFlags("RS"); +const RS_PLUS = /* #__PURE__ */ $FileFlags("RS_PLUS"); +const W = /* #__PURE__ */ $FileFlags("W"); +const WX = /* #__PURE__ */ $FileFlags("WX"); +const W_PLUS = /* #__PURE__ */ $FileFlags("W_PLUS"); +const WX_PLUS = /* #__PURE__ */ $FileFlags("WX_PLUS"); +const A = /* #__PURE__ */ $FileFlags("A"); +const AX = /* #__PURE__ */ $FileFlags("AX"); +const A_PLUS = /* #__PURE__ */ $FileFlags("A_PLUS"); +const AX_PLUS = /* #__PURE__ */ $FileFlags("AX_PLUS"); +const symlinkTypeToNode = ty => { + if (ty.tag === "FileLink") { return "file"; } + if (ty.tag === "DirLink") { return "dir"; } + if (ty.tag === "JunctionLink") { return "junction"; } + $runtime.fail(); +}; +const showSymlinkType = { + show: v => { + if (v.tag === "FileLink") { return "FileLink"; } + if (v.tag === "DirLink") { return "DirLink"; } + if (v.tag === "JunctionLink") { return "JunctionLink"; } + $runtime.fail(); + } +}; +const showFileFlags = { + show: v => { + if (v.tag === "R") { return "R"; } + if (v.tag === "R_PLUS") { return "R_PLUS"; } + if (v.tag === "RS") { return "RS"; } + if (v.tag === "RS_PLUS") { return "RS_PLUS"; } + if (v.tag === "W") { return "W"; } + if (v.tag === "WX") { return "WX"; } + if (v.tag === "W_PLUS") { return "W_PLUS"; } + if (v.tag === "WX_PLUS") { return "WX_PLUS"; } + if (v.tag === "A") { return "A"; } + if (v.tag === "AX") { return "AX"; } + if (v.tag === "A_PLUS") { return "A_PLUS"; } + if (v.tag === "AX_PLUS") { return "AX_PLUS"; } + $runtime.fail(); + } +}; +const fileFlagsToNode = ff => { + if (ff.tag === "R") { return "r"; } + if (ff.tag === "R_PLUS") { return "r+"; } + if (ff.tag === "RS") { return "rs"; } + if (ff.tag === "RS_PLUS") { return "rs+"; } + if (ff.tag === "W") { return "w"; } + if (ff.tag === "WX") { return "wx"; } + if (ff.tag === "W_PLUS") { return "w+"; } + if (ff.tag === "WX_PLUS") { return "wx+"; } + if (ff.tag === "A") { return "a"; } + if (ff.tag === "AX") { return "ax"; } + if (ff.tag === "A_PLUS") { return "a+"; } + if (ff.tag === "AX_PLUS") { return "ax+"; } + $runtime.fail(); +}; +const eqSymlinkType = { + eq: v => v1 => { + if (v.tag === "FileLink") { return v1.tag === "FileLink"; } + if (v.tag === "DirLink") { return v1.tag === "DirLink"; } + if (v.tag === "JunctionLink") { return v1.tag === "JunctionLink"; } + return false; + } +}; +const eqFileFlags = { + eq: x => y => (() => { + if (x.tag === "R") { return "R"; } + if (x.tag === "R_PLUS") { return "R_PLUS"; } + if (x.tag === "RS") { return "RS"; } + if (x.tag === "RS_PLUS") { return "RS_PLUS"; } + if (x.tag === "W") { return "W"; } + if (x.tag === "WX") { return "WX"; } + if (x.tag === "W_PLUS") { return "W_PLUS"; } + if (x.tag === "WX_PLUS") { return "WX_PLUS"; } + if (x.tag === "A") { return "A"; } + if (x.tag === "AX") { return "AX"; } + if (x.tag === "A_PLUS") { return "A_PLUS"; } + if (x.tag === "AX_PLUS") { return "AX_PLUS"; } + $runtime.fail(); + })() === (() => { + if (y.tag === "R") { return "R"; } + if (y.tag === "R_PLUS") { return "R_PLUS"; } + if (y.tag === "RS") { return "RS"; } + if (y.tag === "RS_PLUS") { return "RS_PLUS"; } + if (y.tag === "W") { return "W"; } + if (y.tag === "WX") { return "WX"; } + if (y.tag === "W_PLUS") { return "W_PLUS"; } + if (y.tag === "WX_PLUS") { return "WX_PLUS"; } + if (y.tag === "A") { return "A"; } + if (y.tag === "AX") { return "AX"; } + if (y.tag === "A_PLUS") { return "A_PLUS"; } + if (y.tag === "AX_PLUS") { return "AX_PLUS"; } + $runtime.fail(); + })() +}; +export { + $FileFlags, + $SymlinkType, + A, + AX, + AX_PLUS, + A_PLUS, + DirLink, + FileLink, + JunctionLink, + R, + RS, + RS_PLUS, + R_PLUS, + W, + WX, + WX_PLUS, + W_PLUS, + eqFileFlags, + eqSymlinkType, + fileFlagsToNode, + showFileFlags, + showSymlinkType, + symlinkTypeToNode +}; diff --git a/.storybook/purescript-indexer/output-es/Node.Path/foreign.js b/.storybook/purescript-indexer/output-es/Node.Path/foreign.js new file mode 100644 index 0000000..908c0d9 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Node.Path/foreign.js @@ -0,0 +1,30 @@ +import path from "path"; +export const normalize = path.normalize; + +export function concat(segments) { + return path.join.apply(this, segments); +} + +export function resolve(from) { + return to => () => path.resolve.apply(this, from.concat([to])); +} + +export function relative(from) { + return to => path.relative(from, to); +} + +export function dirname(p) { + return path.normalize(path.dirname(p)); +} + +export const basename = path.basename; + +export function basenameWithoutExt(p) { + return ext => path.basename(p, ext); +} + +export const extname = path.extname; +export const sep = path.sep; +export const delimiter = path.delimiter; +export const parse = path.parse; +export const isAbsolute = path.isAbsolute; diff --git a/.storybook/purescript-indexer/output-es/Node.Path/index.js b/.storybook/purescript-indexer/output-es/Node.Path/index.js new file mode 100644 index 0000000..25118b4 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Node.Path/index.js @@ -0,0 +1,4 @@ +import * as $runtime from "../runtime.js"; +import {basename, basenameWithoutExt, concat, delimiter, dirname, extname, isAbsolute, normalize, parse, relative, resolve, sep} from "./foreign.js"; +export {}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Node.Platform/index.js b/.storybook/purescript-indexer/output-es/Node.Platform/index.js new file mode 100644 index 0000000..411b043 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Node.Platform/index.js @@ -0,0 +1,108 @@ +// | This module defines data type for the different platforms supported by +// | Node.js +import * as $runtime from "../runtime.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dOrdering from "../Data.Ordering/index.js"; +const $Platform = tag => ({tag}); +const AIX = /* #__PURE__ */ $Platform("AIX"); +const Darwin = /* #__PURE__ */ $Platform("Darwin"); +const FreeBSD = /* #__PURE__ */ $Platform("FreeBSD"); +const Linux = /* #__PURE__ */ $Platform("Linux"); +const OpenBSD = /* #__PURE__ */ $Platform("OpenBSD"); +const SunOS = /* #__PURE__ */ $Platform("SunOS"); +const Win32 = /* #__PURE__ */ $Platform("Win32"); +const Android = /* #__PURE__ */ $Platform("Android"); +const toString = v => { + if (v.tag === "AIX") { return "aix"; } + if (v.tag === "Darwin") { return "darwin"; } + if (v.tag === "FreeBSD") { return "freebsd"; } + if (v.tag === "Linux") { return "linux"; } + if (v.tag === "OpenBSD") { return "openbsd"; } + if (v.tag === "SunOS") { return "sunos"; } + if (v.tag === "Win32") { return "win32"; } + if (v.tag === "Android") { return "android"; } + $runtime.fail(); +}; +const showPlatform = { + show: v => { + if (v.tag === "AIX") { return "AIX"; } + if (v.tag === "Darwin") { return "Darwin"; } + if (v.tag === "FreeBSD") { return "FreeBSD"; } + if (v.tag === "Linux") { return "Linux"; } + if (v.tag === "OpenBSD") { return "OpenBSD"; } + if (v.tag === "SunOS") { return "SunOS"; } + if (v.tag === "Win32") { return "Win32"; } + if (v.tag === "Android") { return "Android"; } + $runtime.fail(); + } +}; +const fromString = v => { + if (v === "aix") { return Data$dMaybe.$Maybe("Just", AIX); } + if (v === "darwin") { return Data$dMaybe.$Maybe("Just", Darwin); } + if (v === "freebsd") { return Data$dMaybe.$Maybe("Just", FreeBSD); } + if (v === "linux") { return Data$dMaybe.$Maybe("Just", Linux); } + if (v === "openbsd") { return Data$dMaybe.$Maybe("Just", OpenBSD); } + if (v === "sunos") { return Data$dMaybe.$Maybe("Just", SunOS); } + if (v === "win32") { return Data$dMaybe.$Maybe("Just", Win32); } + if (v === "android") { return Data$dMaybe.$Maybe("Just", Android); } + return Data$dMaybe.Nothing; +}; +const eqPlatform = { + eq: x => y => { + if (x.tag === "AIX") { return y.tag === "AIX"; } + if (x.tag === "Darwin") { return y.tag === "Darwin"; } + if (x.tag === "FreeBSD") { return y.tag === "FreeBSD"; } + if (x.tag === "Linux") { return y.tag === "Linux"; } + if (x.tag === "OpenBSD") { return y.tag === "OpenBSD"; } + if (x.tag === "SunOS") { return y.tag === "SunOS"; } + if (x.tag === "Win32") { return y.tag === "Win32"; } + if (x.tag === "Android") { return y.tag === "Android"; } + return false; + } +}; +const ordPlatform = { + compare: x => y => { + if (x.tag === "AIX") { + if (y.tag === "AIX") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "AIX") { return Data$dOrdering.GT; } + if (x.tag === "Darwin") { + if (y.tag === "Darwin") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "Darwin") { return Data$dOrdering.GT; } + if (x.tag === "FreeBSD") { + if (y.tag === "FreeBSD") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "FreeBSD") { return Data$dOrdering.GT; } + if (x.tag === "Linux") { + if (y.tag === "Linux") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "Linux") { return Data$dOrdering.GT; } + if (x.tag === "OpenBSD") { + if (y.tag === "OpenBSD") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "OpenBSD") { return Data$dOrdering.GT; } + if (x.tag === "SunOS") { + if (y.tag === "SunOS") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "SunOS") { return Data$dOrdering.GT; } + if (x.tag === "Win32") { + if (y.tag === "Win32") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "Win32") { return Data$dOrdering.GT; } + if (x.tag === "Android") { + if (y.tag === "Android") { return Data$dOrdering.EQ; } + $runtime.fail(); + } + $runtime.fail(); + }, + Eq0: () => eqPlatform +}; +export {$Platform, AIX, Android, Darwin, FreeBSD, Linux, OpenBSD, SunOS, Win32, eqPlatform, fromString, ordPlatform, showPlatform, toString}; diff --git a/.storybook/purescript-indexer/output-es/Node.Process/foreign.js b/.storybook/purescript-indexer/output-es/Node.Process/foreign.js new file mode 100644 index 0000000..11b9594 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Node.Process/foreign.js @@ -0,0 +1,70 @@ +import process from "process"; +export { process }; + +export function onBeforeExit(callback) { + return () => { + process.on("beforeExit", callback); + }; +} + +export function onExit(callback) { + return () => { + process.on("exit", code => { + callback(code)(); + }); + }; +} + +export function onUncaughtException(callback) { + return () => { + process.on("uncaughtException", error => { + callback(error)(); + }); + }; +} + +export function onUnhandledRejection(callback) { + return () => { + process.on("unhandledRejection", (error, promise) => { + callback(error)(promise)(); + }); + }; +} + +export function onSignalImpl(signal) { + return callback => () => { + process.on(signal, callback); + }; +} + +export function chdir(dir) { + return () => { + process.chdir(dir); + }; +} + +export function setEnv(var_) { + return val => () => { + process.env[var_] = val; + }; +} + +export function unsetEnv(var_) { + return () => { + delete process.env[var_]; + }; +} + +export function exit(code) { + return () => { + process.exit(code); + }; +} + +export function copyArray(xs) { + return () => xs.slice(); +} + +export function copyObject(o) { + return () => Object.assign({}, o); +} diff --git a/.storybook/purescript-indexer/output-es/Node.Process/index.js b/.storybook/purescript-indexer/output-es/Node.Process/index.js new file mode 100644 index 0000000..cf431c5 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Node.Process/index.js @@ -0,0 +1,46 @@ +// | Bindings to the global `process` object in Node.js. See also [the Node API documentation](https://nodejs.org/api/process.html) +import * as $runtime from "../runtime.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dPosix$dSignal from "../Data.Posix.Signal/index.js"; +import * as Foreign$dObject from "../Foreign.Object/index.js"; +import * as Node$dPlatform from "../Node.Platform/index.js"; +import {chdir, copyArray, copyObject, exit, onBeforeExit, onExit, onSignalImpl, onUncaughtException, onUnhandledRejection, process, setEnv, unsetEnv} from "./foreign.js"; +const version = /* #__PURE__ */ (() => process.version)(); +const stdoutIsTTY = /* #__PURE__ */ (() => process.stdout.isTTY)(); +const stdout = /* #__PURE__ */ (() => process.stdout)(); +const stdinIsTTY = /* #__PURE__ */ (() => process.stdin.isTTY)(); +const stdin = /* #__PURE__ */ (() => process.stdin)(); +const stderrIsTTY = /* #__PURE__ */ (() => process.stderr.isTTY)(); +const stderr = /* #__PURE__ */ (() => process.stderr)(); +const platform = /* #__PURE__ */ (() => Node$dPlatform.fromString(process.platform))(); +const pid = /* #__PURE__ */ (() => process.pid)(); +const onSignal = sig => onSignalImpl(Data$dPosix$dSignal.toString(sig)); +const nextTick = callback => v => process.nextTick(callback); +const lookupMutableObject = k => o => v => Foreign$dObject._lookup(Data$dMaybe.Nothing, Data$dMaybe.Just, k, o); +const lookupEnv = k => lookupMutableObject(k)(process.env); +const getEnv = /* #__PURE__ */ (() => copyObject(process.env))(); +const execPath = v => process.execPath; +const execArgv = /* #__PURE__ */ (() => copyArray(process.execArgv))(); +const cwd = /* #__PURE__ */ (() => process.cwd)(); +const argv = /* #__PURE__ */ (() => copyArray(process.argv))(); +export { + argv, + cwd, + execArgv, + execPath, + getEnv, + lookupEnv, + lookupMutableObject, + nextTick, + onSignal, + pid, + platform, + stderr, + stderrIsTTY, + stdin, + stdinIsTTY, + stdout, + stdoutIsTTY, + version +}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Node.Stream/foreign.js b/.storybook/purescript-indexer/output-es/Node.Stream/foreign.js new file mode 100644 index 0000000..cdd6748 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Node.Stream/foreign.js @@ -0,0 +1,143 @@ +const _undefined = undefined; +export { _undefined as undefined }; + +export function setEncodingImpl(s) { + return enc => () => { + s.setEncoding(enc); + }; +} + +export function readChunkImpl(Left) { + return Right => chunk => { + if (chunk instanceof Buffer) { + return Right(chunk); + } else if (typeof chunk === "string") { + return Left(chunk); + } else { + throw new Error( + "Node.Stream.readChunkImpl: Unrecognised " + + "chunk type; expected String or Buffer, got: " + + chunk + ); + } + }; +} + +export function onDataEitherImpl(readChunk) { + return r => f => () => { + r.on("data", data => { + f(readChunk(data))(); + }); + }; +} + +export function onEnd(s) { + return f => () => { + s.on("end", f); + }; +} + +export function onFinish(s) { + return f => () => { + s.on("finish", f); + }; +} + +export function onReadable(s) { + return f => () => { + s.on("readable", f); + }; +} + +export function onError(s) { + return f => () => { + s.on("error", e => { + f(e)(); + }); + }; +} + +export function onClose(s) { + return f => () => { + s.on("close", f); + }; +} + +export function resume(s) { + return () => { + s.resume(); + }; +} + +export function pause(s) { + return () => { + s.pause(); + }; +} + +export function isPaused(s) { + return () => s.isPaused(); +} + +export function pipe(r) { + return w => () => r.pipe(w); +} + +export function unpipe(r) { + return w => () => r.unpipe(w); +} + +export function unpipeAll(r) { + return () => r.unpipe(); +} + +export function readImpl(readChunk) { + return Nothing => Just => r => s => () => { + const v = r.read(s); + if (v === null) { + return Nothing; + } else { + return Just(readChunk(v)); + } + }; +} + +export function writeImpl(w) { + return chunk => done => () => w.write(chunk, null, done); +} + +export function writeStringImpl(w) { + return enc => s => done => () => w.write(s, enc, done); +} + +export function cork(w) { + return () => w.cork(); +} + +export function uncork(w) { + return () => w.uncork(); +} + +export function setDefaultEncodingImpl(w) { + return enc => () => { + w.setDefaultEncoding(enc); + }; +} + +export function endImpl(w) { + return done => () => { + w.end(null, null, done); + }; +} + +export function destroy(strm) { + return () => { + strm.destroy(null); + }; +} + +export function destroyWithError(strm) { + return e => () => { + strm.destroy(e); + }; +} diff --git a/.storybook/purescript-indexer/output-es/Node.Stream/index.js b/.storybook/purescript-indexer/output-es/Node.Stream/index.js new file mode 100644 index 0000000..32e0e25 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Node.Stream/index.js @@ -0,0 +1,116 @@ +// | This module provides a low-level wrapper for the [Node Stream API](https://nodejs.org/api/stream.html). +import * as $runtime from "../runtime.js"; +import * as Data$dEither from "../Data.Either/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dNullable from "../Data.Nullable/index.js"; +import * as Effect from "../Effect/index.js"; +import * as Effect$dException from "../Effect.Exception/index.js"; +import * as Node$dBuffer from "../Node.Buffer/index.js"; +import { + cork, + destroy, + destroyWithError, + endImpl, + isPaused, + onClose, + onDataEitherImpl, + onEnd, + onError, + onFinish, + onReadable, + pause, + pipe, + readChunkImpl, + readImpl, + resume, + setDefaultEncodingImpl, + setEncodingImpl, + uncork, + undefined as $$undefined, + unpipe, + unpipeAll, + writeImpl, + writeStringImpl +} from "./foreign.js"; +const writeString = w => enc => s => cb => writeStringImpl(w)((() => { + if (enc.tag === "ASCII") { return "ASCII"; } + if (enc.tag === "UTF8") { return "UTF8"; } + if (enc.tag === "UTF16LE") { return "UTF16LE"; } + if (enc.tag === "UCS2") { return "UCS2"; } + if (enc.tag === "Base64") { return "Base64"; } + if (enc.tag === "Latin1") { return "Latin1"; } + if (enc.tag === "Binary") { return "Binary"; } + if (enc.tag === "Hex") { return "Hex"; } + $runtime.fail(); +})())(s)(x => cb(Data$dNullable.nullable(x, Data$dMaybe.Nothing, Data$dMaybe.Just))()); +const write = w => b => cb => writeImpl(w)(b)(x => cb(Data$dNullable.nullable(x, Data$dMaybe.Nothing, Data$dMaybe.Just))()); +const setEncoding = r => enc => setEncodingImpl(r)((() => { + if (enc.tag === "ASCII") { return "ASCII"; } + if (enc.tag === "UTF8") { return "UTF8"; } + if (enc.tag === "UTF16LE") { return "UTF16LE"; } + if (enc.tag === "UCS2") { return "UCS2"; } + if (enc.tag === "Base64") { return "Base64"; } + if (enc.tag === "Latin1") { return "Latin1"; } + if (enc.tag === "Binary") { return "Binary"; } + if (enc.tag === "Hex") { return "Hex"; } + $runtime.fail(); +})()); +const setDefaultEncoding = r => enc => setDefaultEncodingImpl(r)((() => { + if (enc.tag === "ASCII") { return "ASCII"; } + if (enc.tag === "UTF8") { return "UTF8"; } + if (enc.tag === "UTF16LE") { return "UTF16LE"; } + if (enc.tag === "UCS2") { return "UCS2"; } + if (enc.tag === "Base64") { return "Base64"; } + if (enc.tag === "Latin1") { return "Latin1"; } + if (enc.tag === "Binary") { return "Binary"; } + if (enc.tag === "Hex") { return "Hex"; } + $runtime.fail(); +})()); +const readChunk = /* #__PURE__ */ readChunkImpl(Data$dEither.Left)(Data$dEither.Right); +const readEither = r => size => readImpl(readChunk)(Data$dMaybe.Nothing)(Data$dMaybe.Just)(r)((() => { + if (size.tag === "Nothing") { return $$undefined; } + if (size.tag === "Just") { return size._1; } + $runtime.fail(); +})()); +const readString = r => size => enc => { + const $3 = readEither(r)(size); + return () => { + const v = $3(); + if (v.tag === "Nothing") { return Data$dMaybe.Nothing; } + if (v.tag === "Just") { + if (v._1.tag === "Left") { return Effect$dException.throwException(Effect$dException.error("Stream encoding should not be set"))(); } + if (v._1.tag === "Right") { + const a$p = Node$dBuffer.mutableBufferEffect.toString(enc)(v._1._1)(); + return Data$dMaybe.$Maybe("Just", a$p); + } + $runtime.fail(); + } + $runtime.fail(); + }; +}; +const read = r => size => { + const $2 = readEither(r)(size); + return () => { + const v = $2(); + if (v.tag === "Nothing") { return Data$dMaybe.Nothing; } + if (v.tag === "Just") { + if (v._1.tag === "Left") { return Effect$dException.throwException(Effect$dException.error("Stream encoding should not be set"))(); } + if (v._1.tag === "Right") { return Data$dMaybe.$Maybe("Just", v._1._1); } + $runtime.fail(); + } + $runtime.fail(); + }; +}; +const onDataEither = r => cb => onDataEitherImpl(readChunk)(r)(cb); +const onData = r => cb => onDataEitherImpl(readChunk)(r)(a => Effect.bindE((() => { + if (a.tag === "Left") { return Effect$dException.throwException(Effect$dException.error("Stream encoding should not be set")); } + if (a.tag === "Right") { return () => a._1; } + $runtime.fail(); +})())(cb)); +const onDataString = r => enc => cb => onData(r)((() => { + const $3 = Node$dBuffer.mutableBufferEffect.toString(enc); + return a => Effect.bindE($3(a))(cb); +})()); +const end = w => cb => endImpl(w)(x => cb(Data$dNullable.nullable(x, Data$dMaybe.Nothing, Data$dMaybe.Just))()); +export {end, onData, onDataEither, onDataString, read, readChunk, readEither, readString, setDefaultEncoding, setEncoding, write, writeString}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Partial.Unsafe/foreign.js b/.storybook/purescript-indexer/output-es/Partial.Unsafe/foreign.js new file mode 100644 index 0000000..de0cb0e --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Partial.Unsafe/foreign.js @@ -0,0 +1,5 @@ +// module Partial.Unsafe + +export const _unsafePartial = function (f) { + return f(); +}; diff --git a/.storybook/purescript-indexer/output-es/Partial.Unsafe/index.js b/.storybook/purescript-indexer/output-es/Partial.Unsafe/index.js new file mode 100644 index 0000000..0c61acb --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Partial.Unsafe/index.js @@ -0,0 +1,9 @@ +// | Utilities for working with partial functions. +// | See the README for more documentation. +import * as $runtime from "../runtime.js"; +import * as Partial from "../Partial/index.js"; +import {_unsafePartial} from "./foreign.js"; +const unsafePartial = _unsafePartial; +const unsafeCrashWith = msg => Partial._crashWith(msg); +export {unsafeCrashWith, unsafePartial}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Partial/foreign.js b/.storybook/purescript-indexer/output-es/Partial/foreign.js new file mode 100644 index 0000000..1fea9b6 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Partial/foreign.js @@ -0,0 +1,5 @@ +// module Partial + +export const _crashWith = function (msg) { + throw new Error(msg); +}; diff --git a/.storybook/purescript-indexer/output-es/Partial/index.js b/.storybook/purescript-indexer/output-es/Partial/index.js new file mode 100644 index 0000000..c190996 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Partial/index.js @@ -0,0 +1,7 @@ +// | Some partial helper functions. See the README for more documentation. +import * as $runtime from "../runtime.js"; +import {_crashWith} from "./foreign.js"; +const crashWith = () => _crashWith; +const crash = () => _crashWith("Partial.crash: partial function"); +export {crash, crashWith}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Performance.Minibench/foreign.js b/.storybook/purescript-indexer/output-es/Performance.Minibench/foreign.js new file mode 100644 index 0000000..3f236ca --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Performance.Minibench/foreign.js @@ -0,0 +1,14 @@ +export function timeNs(k) { + const t1 = process.hrtime(); + k(); + const t2 = process.hrtime(t1); + return t2[0] * 1.0e9 + t2[1]; +} + +export function gc() { + global.gc && global.gc(); +} + +export function toFixed(n) { + return n.toFixed(2); +} diff --git a/.storybook/purescript-indexer/output-es/Performance.Minibench/index.js b/.storybook/purescript-indexer/output-es/Performance.Minibench/index.js new file mode 100644 index 0000000..f9934b4 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Performance.Minibench/index.js @@ -0,0 +1,57 @@ +// | This module provides the `bench` function, which prints a short summary +// | of the running times of a synchronous function to the console. +// | +// | For benchmarking tasks which require finer accuracy, or graphs as output, +// | consider using `purescript-benchotron` instead. +import * as $runtime from "../runtime.js"; +import * as Data$dInt from "../Data.Int/index.js"; +import * as Data$dNumber from "../Data.Number/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +import * as Effect from "../Effect/index.js"; +import * as Effect$dConsole from "../Effect.Console/index.js"; +import {gc, timeNs, toFixed} from "./foreign.js"; +const withUnits = t => { + if (t < 1000.0) { return toFixed(t) + " ns"; } + if (t < 1000000.0) { return toFixed(t / 1000.0) + " μs"; } + if (t < 1000000000.0) { return toFixed(t / 1000000.0) + " ms"; } + return toFixed(t / 1000000000.0) + " s"; +}; +const benchWith$p = n => f => () => { + const sumRef = {value: 0.0}; + const sum2Ref = {value: 0.0}; + const minRef = {value: Data$dNumber.infinity}; + const maxRef = {value: 0.0}; + gc(); + Effect.forE(0)(n)(v => () => { + const ns = timeNs(f); + const $9 = sumRef.value; + sumRef.value = $9 + ns; + const $11 = sum2Ref.value; + sum2Ref.value = $11 + ns * ns; + const $13 = minRef.value; + minRef.value = Data$dNumber.min($13)(ns); + const $15 = maxRef.value; + maxRef.value = Data$dNumber.max($15)(ns); + return Data$dUnit.unit; + })(); + const sum = sumRef.value; + const sum2 = sum2Ref.value; + const min$p = minRef.value; + const max$p = maxRef.value; + const n$p = Data$dInt.toNumber(n); + const mean = sum / n$p; + return {mean: mean, stdDev: Data$dNumber.sqrt((sum2 - n$p * mean * mean) / (n$p - 1.0)), min: min$p, max: max$p}; +}; +const benchWith = n => f => { + const $2 = benchWith$p(n)(f); + return () => { + const res = $2(); + Effect$dConsole.log("mean = " + withUnits(res.mean))(); + Effect$dConsole.log("stddev = " + withUnits(res.stdDev))(); + Effect$dConsole.log("min = " + withUnits(res.min))(); + return Effect$dConsole.log("max = " + withUnits(res.max))(); + }; +}; +const bench = /* #__PURE__ */ benchWith(1000); +export {bench, benchWith, benchWith$p, withUnits}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Prelude/index.js b/.storybook/purescript-indexer/output-es/Prelude/index.js new file mode 100644 index 0000000..161620b --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Prelude/index.js @@ -0,0 +1,14 @@ +// | `Prelude` is a module that re-exports many other foundational modules from the `purescript-prelude` library +// | (e.g. the Monad type class hierarchy, the Monoid type classes, Eq, Ord, etc.). +// | +// | Typically, this module will be imported in most other libraries and projects as an open import. +// | +// | ``` +// | module MyModule where +// | +// | import Prelude -- open import +// | +// | import Data.Maybe (Maybe(..)) -- closed import +// | ``` +import * as $runtime from "../runtime.js"; +export {}; diff --git a/.storybook/purescript-indexer/output-es/PureScript.CST.Errors/index.js b/.storybook/purescript-indexer/output-es/PureScript.CST.Errors/index.js new file mode 100644 index 0000000..fd079bc --- /dev/null +++ b/.storybook/purescript-indexer/output-es/PureScript.CST.Errors/index.js @@ -0,0 +1,121 @@ +import * as $runtime from "../runtime.js"; +const $ParseError = (tag, _1, _2) => ({tag, _1, _2}); +const UnexpectedEof = /* #__PURE__ */ $ParseError("UnexpectedEof"); +const ExpectedEof = value0 => $ParseError("ExpectedEof", value0); +const UnexpectedToken = value0 => $ParseError("UnexpectedToken", value0); +const ExpectedToken = value0 => value1 => $ParseError("ExpectedToken", value0, value1); +const ExpectedClass = value0 => value1 => $ParseError("ExpectedClass", value0, value1); +const LexExpected = value0 => value1 => $ParseError("LexExpected", value0, value1); +const LexInvalidCharEscape = value0 => $ParseError("LexInvalidCharEscape", value0); +const LexCharEscapeOutOfRange = value0 => $ParseError("LexCharEscapeOutOfRange", value0); +const LexHexOutOfRange = value0 => $ParseError("LexHexOutOfRange", value0); +const LexIntOutOfRange = value0 => $ParseError("LexIntOutOfRange", value0); +const LexNumberOutOfRange = value0 => $ParseError("LexNumberOutOfRange", value0); +const RecoveredError = x => x; +const printTokenError = v => { + if (v.tag === "TokLeftParen") { return "'('"; } + if (v.tag === "TokRightParen") { return "')'"; } + if (v.tag === "TokLeftBrace") { return "'{'"; } + if (v.tag === "TokRightBrace") { return "'}'"; } + if (v.tag === "TokLeftSquare") { return "'['"; } + if (v.tag === "TokRightSquare") { return "']'"; } + if (v.tag === "TokLeftArrow") { + if (v._1.tag === "ASCII") { return "'<-'"; } + if (v._1.tag === "Unicode") { return "'←'"; } + $runtime.fail(); + } + if (v.tag === "TokRightArrow") { + if (v._1.tag === "ASCII") { return "'->'"; } + if (v._1.tag === "Unicode") { return "'→'"; } + $runtime.fail(); + } + if (v.tag === "TokRightFatArrow") { + if (v._1.tag === "ASCII") { return "'=>'"; } + if (v._1.tag === "Unicode") { return "'⇒'"; } + $runtime.fail(); + } + if (v.tag === "TokDoubleColon") { + if (v._1.tag === "ASCII") { return "'::'"; } + if (v._1.tag === "Unicode") { return "'∷'"; } + $runtime.fail(); + } + if (v.tag === "TokForall") { + if (v._1.tag === "ASCII") { return "forall"; } + if (v._1.tag === "Unicode") { return "'∀'"; } + $runtime.fail(); + } + if (v.tag === "TokEquals") { return "'='"; } + if (v.tag === "TokPipe") { return "'|'"; } + if (v.tag === "TokTick") { return "`"; } + if (v.tag === "TokDot") { return "."; } + if (v.tag === "TokComma") { return "','"; } + if (v.tag === "TokUnderscore") { return "'_'"; } + if (v.tag === "TokBackslash") { return "'\\'"; } + if (v.tag === "TokAt") { return "'@'"; } + if (v.tag === "TokLowerName") { + if (v._1.tag === "Nothing") { return "identifier " + v._2; } + if (v._1.tag === "Just") { return "identifier " + (v._1._1 + ("." + v._2)); } + $runtime.fail(); + } + if (v.tag === "TokUpperName") { + if (v._1.tag === "Nothing") { return "proper identifier " + v._2; } + if (v._1.tag === "Just") { return "proper identifier " + (v._1._1 + ("." + v._2)); } + $runtime.fail(); + } + if (v.tag === "TokOperator") { + if (v._1.tag === "Nothing") { return "operator " + v._2; } + if (v._1.tag === "Just") { return "operator " + (v._1._1 + ("." + v._2)); } + $runtime.fail(); + } + if (v.tag === "TokSymbolName") { + if (v._1.tag === "Nothing") { return "symbol " + v._2; } + if (v._1.tag === "Just") { return "symbol " + (v._1._1 + ("." + v._2)); } + $runtime.fail(); + } + if (v.tag === "TokSymbolArrow") { + if (v._1.tag === "ASCII") { return "(->)"; } + if (v._1.tag === "Unicode") { return "(→)"; } + $runtime.fail(); + } + if (v.tag === "TokHole") { return "hole ?" + v._1; } + if (v.tag === "TokChar") { return "char literal '" + (v._1 + "'"); } + if (v.tag === "TokString") { return "string literal"; } + if (v.tag === "TokRawString") { return "raw string literal"; } + if (v.tag === "TokInt") { return "int literal " + v._1; } + if (v.tag === "TokNumber") { return "number literal " + v._1; } + if (v.tag === "TokLayoutStart") { return "start of indented block"; } + if (v.tag === "TokLayoutSep") { return "new indented block item"; } + if (v.tag === "TokLayoutEnd") { return "end of indented block"; } + $runtime.fail(); +}; +const printParseError = v => { + if (v.tag === "UnexpectedEof") { return "Unexpected end of file"; } + if (v.tag === "ExpectedEof") { return "Expected end of file, saw " + printTokenError(v._1); } + if (v.tag === "UnexpectedToken") { return "Unexpected " + printTokenError(v._1); } + if (v.tag === "ExpectedToken") { return "Expected " + (printTokenError(v._1) + (", saw " + printTokenError(v._2))); } + if (v.tag === "ExpectedClass") { return "Expected " + (v._1 + (", saw " + printTokenError(v._2))); } + if (v.tag === "LexExpected") { return "Expected " + (v._1 + (", saw " + v._2)); } + if (v.tag === "LexInvalidCharEscape") { return "Invalid character escape \\" + v._1; } + if (v.tag === "LexCharEscapeOutOfRange") { return "Character escape out of range \\" + v._1; } + if (v.tag === "LexHexOutOfRange") { return "Hex integer out of range 0x" + v._1; } + if (v.tag === "LexIntOutOfRange") { return "Int out of range " + v._1; } + if (v.tag === "LexNumberOutOfRange") { return "Number out of range " + v._1; } + $runtime.fail(); +}; +export { + $ParseError, + ExpectedClass, + ExpectedEof, + ExpectedToken, + LexCharEscapeOutOfRange, + LexExpected, + LexHexOutOfRange, + LexIntOutOfRange, + LexInvalidCharEscape, + LexNumberOutOfRange, + RecoveredError, + UnexpectedEof, + UnexpectedToken, + printParseError, + printTokenError +}; diff --git a/.storybook/purescript-indexer/output-es/PureScript.CST.Layout/index.js b/.storybook/purescript-indexer/output-es/PureScript.CST.Layout/index.js new file mode 100644 index 0000000..1215d54 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/PureScript.CST.Layout/index.js @@ -0,0 +1,971 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dST$dInternal from "../Control.Monad.ST.Internal/index.js"; +import * as Data$dArray$dST from "../Data.Array.ST/index.js"; +import * as Data$dFoldable from "../Data.Foldable/index.js"; +import * as Data$dList$dTypes from "../Data.List.Types/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dOrdering from "../Data.Ordering/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +import * as PureScript$dCST$dTypes from "../PureScript.CST.Types/index.js"; +const $LayoutDelim = tag => ({tag}); +const LytRoot = /* #__PURE__ */ $LayoutDelim("LytRoot"); +const LytTopDecl = /* #__PURE__ */ $LayoutDelim("LytTopDecl"); +const LytTopDeclHead = /* #__PURE__ */ $LayoutDelim("LytTopDeclHead"); +const LytDeclGuard = /* #__PURE__ */ $LayoutDelim("LytDeclGuard"); +const LytCase = /* #__PURE__ */ $LayoutDelim("LytCase"); +const LytCaseBinders = /* #__PURE__ */ $LayoutDelim("LytCaseBinders"); +const LytCaseGuard = /* #__PURE__ */ $LayoutDelim("LytCaseGuard"); +const LytLambdaBinders = /* #__PURE__ */ $LayoutDelim("LytLambdaBinders"); +const LytParen = /* #__PURE__ */ $LayoutDelim("LytParen"); +const LytBrace = /* #__PURE__ */ $LayoutDelim("LytBrace"); +const LytSquare = /* #__PURE__ */ $LayoutDelim("LytSquare"); +const LytIf = /* #__PURE__ */ $LayoutDelim("LytIf"); +const LytThen = /* #__PURE__ */ $LayoutDelim("LytThen"); +const LytProperty = /* #__PURE__ */ $LayoutDelim("LytProperty"); +const LytForall = /* #__PURE__ */ $LayoutDelim("LytForall"); +const LytTick = /* #__PURE__ */ $LayoutDelim("LytTick"); +const LytLet = /* #__PURE__ */ $LayoutDelim("LytLet"); +const LytLetStmt = /* #__PURE__ */ $LayoutDelim("LytLetStmt"); +const LytWhere = /* #__PURE__ */ $LayoutDelim("LytWhere"); +const LytOf = /* #__PURE__ */ $LayoutDelim("LytOf"); +const LytDo = /* #__PURE__ */ $LayoutDelim("LytDo"); +const LytAdo = /* #__PURE__ */ $LayoutDelim("LytAdo"); +const lytToken = pos => value => ({range: {start: pos, end: pos}, leadingComments: [], trailingComments: [], value: value}); +const isIndented = v => v.tag === "LytLet" || (v.tag === "LytLetStmt" || (v.tag === "LytWhere" || (v.tag === "LytOf" || (v.tag === "LytDo" || v.tag === "LytAdo")))); +const eqLayoutDelim = { + eq: x => y => { + if (x.tag === "LytRoot") { return y.tag === "LytRoot"; } + if (x.tag === "LytTopDecl") { return y.tag === "LytTopDecl"; } + if (x.tag === "LytTopDeclHead") { return y.tag === "LytTopDeclHead"; } + if (x.tag === "LytDeclGuard") { return y.tag === "LytDeclGuard"; } + if (x.tag === "LytCase") { return y.tag === "LytCase"; } + if (x.tag === "LytCaseBinders") { return y.tag === "LytCaseBinders"; } + if (x.tag === "LytCaseGuard") { return y.tag === "LytCaseGuard"; } + if (x.tag === "LytLambdaBinders") { return y.tag === "LytLambdaBinders"; } + if (x.tag === "LytParen") { return y.tag === "LytParen"; } + if (x.tag === "LytBrace") { return y.tag === "LytBrace"; } + if (x.tag === "LytSquare") { return y.tag === "LytSquare"; } + if (x.tag === "LytIf") { return y.tag === "LytIf"; } + if (x.tag === "LytThen") { return y.tag === "LytThen"; } + if (x.tag === "LytProperty") { return y.tag === "LytProperty"; } + if (x.tag === "LytForall") { return y.tag === "LytForall"; } + if (x.tag === "LytTick") { return y.tag === "LytTick"; } + if (x.tag === "LytLet") { return y.tag === "LytLet"; } + if (x.tag === "LytLetStmt") { return y.tag === "LytLetStmt"; } + if (x.tag === "LytWhere") { return y.tag === "LytWhere"; } + if (x.tag === "LytOf") { return y.tag === "LytOf"; } + if (x.tag === "LytDo") { return y.tag === "LytDo"; } + if (x.tag === "LytAdo") { return y.tag === "LytAdo"; } + return false; + } +}; +const insertLayout = v => nextPos => stack => { + const sepP = lytPos => v.range.start.column === lytPos.column && v.range.start.line !== lytPos.line; + const insertStart = lyt => v1 => { + const v2 = Data$dFoldable.find(Data$dList$dTypes.foldableList)(x => x._2.tag === "LytLet" || ( + x._2.tag === "LytLetStmt" || (x._2.tag === "LytWhere" || (x._2.tag === "LytOf" || (x._2.tag === "LytDo" || x._2.tag === "LytAdo"))) + ))(v1._1); + const $7 = () => Data$dTuple.$Tuple( + Data$dList$dTypes.$List("Cons", Data$dTuple.$Tuple(nextPos, lyt), v1._1), + Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([ + Data$dTuple.$Tuple( + {range: {start: nextPos, end: nextPos}, leadingComments: [], trailingComments: [], value: PureScript$dCST$dTypes.$Token("TokLayoutStart", nextPos.column)}, + Data$dList$dTypes.$List("Cons", Data$dTuple.$Tuple(nextPos, lyt), v1._1) + ) + ]))(v1._2)) + ); + if (v2.tag === "Just") { + if (nextPos.column <= v2._1._1.column) { return v1; } + return $7(); + } + return $7(); + }; + const insertSep = v1 => { + const sepTok = { + range: {start: v.range.start, end: v.range.start}, + leadingComments: [], + trailingComments: [], + value: PureScript$dCST$dTypes.$Token("TokLayoutSep", v.range.start.column) + }; + const $7 = (lyt, lytPos) => { + if (lyt.tag === "LytOf") { + return Data$dTuple.$Tuple( + Data$dList$dTypes.$List("Cons", Data$dTuple.$Tuple(v.range.start, LytCaseBinders), v1._1), + Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(sepTok, v1._1)]))(v1._2)) + ); + } + return Data$dTuple.$Tuple(v1._1, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(sepTok, v1._1)]))(v1._2))); + }; + if (v1._1.tag === "Cons") { + if (v1._1._1._2.tag === "LytTopDecl") { + if (sepP(v1._1._1._1)) { + return Data$dTuple.$Tuple(v1._1._2, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(sepTok, v1._1._2)]))(v1._2))); + } + if ( + ( + v1._1._1._2.tag === "LytLet" || ( + v1._1._1._2.tag === "LytLetStmt" || (v1._1._1._2.tag === "LytWhere" || (v1._1._1._2.tag === "LytOf" || (v1._1._1._2.tag === "LytDo" || v1._1._1._2.tag === "LytAdo"))) + ) + ) && sepP(v1._1._1._1) + ) { + return $7(v1._1._1._2, v1._1._1._1); + } + return v1; + } + if (v1._1._1._2.tag === "LytTopDeclHead") { + if (sepP(v1._1._1._1)) { + return Data$dTuple.$Tuple(v1._1._2, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(sepTok, v1._1._2)]))(v1._2))); + } + if ( + ( + v1._1._1._2.tag === "LytLet" || ( + v1._1._1._2.tag === "LytLetStmt" || (v1._1._1._2.tag === "LytWhere" || (v1._1._1._2.tag === "LytOf" || (v1._1._1._2.tag === "LytDo" || v1._1._1._2.tag === "LytAdo"))) + ) + ) && sepP(v1._1._1._1) + ) { + return $7(v1._1._1._2, v1._1._1._1); + } + return v1; + } + if ( + ( + v1._1._1._2.tag === "LytLet" || ( + v1._1._1._2.tag === "LytLetStmt" || (v1._1._1._2.tag === "LytWhere" || (v1._1._1._2.tag === "LytOf" || (v1._1._1._2.tag === "LytDo" || v1._1._1._2.tag === "LytAdo"))) + ) + ) && sepP(v1._1._1._1) + ) { + return $7(v1._1._1._2, v1._1._1._1); + } + return v1; + } + return v1; + }; + const collapse = p => { + 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 v1 = go$a0, v2 = go$a1; + if (v1.tag === "Cons") { + if (p(v1._1._1)(v1._1._2)) { + go$a0 = v1._2; + go$a1 = (() => { + if ( + v1._1._2.tag === "LytLet" || ( + v1._1._2.tag === "LytLetStmt" || (v1._1._2.tag === "LytWhere" || (v1._1._2.tag === "LytOf" || (v1._1._2.tag === "LytDo" || v1._1._2.tag === "LytAdo"))) + ) + ) { + return Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([ + Data$dTuple.$Tuple( + { + range: {start: v.range.start, end: v.range.start}, + leadingComments: [], + trailingComments: [], + value: PureScript$dCST$dTypes.$Token("TokLayoutEnd", v1._1._1.column) + }, + v1._2 + ) + ]))(v2)); + } + return v2; + })(); + continue; + } + go$c = false; + go$r = Data$dTuple.$Tuple(v1, v2); + continue; + } + go$c = false; + go$r = Data$dTuple.$Tuple(v1, v2); + continue; + }; + return go$r; + }; + return v$1 => go(v$1._1)(v$1._2); + }; + const insertKwProperty = (k, state) => { + const $9 = insertSep(collapse(lytPos => lyt => ( + lyt.tag === "LytLet" || (lyt.tag === "LytLetStmt" || (lyt.tag === "LytWhere" || (lyt.tag === "LytOf" || (lyt.tag === "LytDo" || lyt.tag === "LytAdo")))) + ) && v.range.start.column < lytPos.column)(state)); + const v1 = Data$dTuple.$Tuple($9._1, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $9._1)]))($9._2))); + if (v1._1.tag === "Cons") { + if (v1._1._1._2.tag === "LytProperty") { return Data$dTuple.$Tuple(v1._1._2, v1._2); } + return k(v1); + } + return k(v1); + }; + if (v.value.tag === "TokLowerName") { + if (v.value._1.tag === "Nothing") { + if (v.value._2 === "data") { + const $8 = insertSep(collapse(lytPos => lyt => ( + lyt.tag === "LytLet" || (lyt.tag === "LytLetStmt" || (lyt.tag === "LytWhere" || (lyt.tag === "LytOf" || (lyt.tag === "LytDo" || lyt.tag === "LytAdo")))) + ) && v.range.start.column < lytPos.column)(Data$dTuple.$Tuple(stack, []))); + const v2 = Data$dTuple.$Tuple($8._1, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $8._1)]))($8._2))); + if ( + (() => { + if (v2._1.tag === "Cons") { + if (v2._1._1._2.tag === "LytWhere") { + if (v2._1._2.tag === "Cons") { + if (v2._1._2._1._2.tag === "LytRoot") { + if (v2._1._2._2.tag === "Nil") { return v.range.start.column === v2._1._1._1.column; } + return false; + } + return false; + } + return false; + } + return false; + } + return false; + })() + ) { + return Data$dTuple.$Tuple(Data$dList$dTypes.$List("Cons", Data$dTuple.$Tuple(v.range.start, LytTopDecl), v2._1), v2._2); + } + if (v2._1.tag === "Cons") { + if (eqLayoutDelim.eq(v2._1._1._2)(LytProperty)) { return Data$dTuple.$Tuple(v2._1._2, v2._2); } + return v2; + } + return v2; + } + if (v.value._2 === "class") { + const $8 = insertSep(collapse(lytPos => lyt => ( + lyt.tag === "LytLet" || (lyt.tag === "LytLetStmt" || (lyt.tag === "LytWhere" || (lyt.tag === "LytOf" || (lyt.tag === "LytDo" || lyt.tag === "LytAdo")))) + ) && v.range.start.column < lytPos.column)(Data$dTuple.$Tuple(stack, []))); + const v2 = Data$dTuple.$Tuple($8._1, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $8._1)]))($8._2))); + if ( + (() => { + if (v2._1.tag === "Cons") { + if (v2._1._1._2.tag === "LytWhere") { + if (v2._1._2.tag === "Cons") { + if (v2._1._2._1._2.tag === "LytRoot") { + if (v2._1._2._2.tag === "Nil") { return v.range.start.column === v2._1._1._1.column; } + return false; + } + return false; + } + return false; + } + return false; + } + return false; + })() + ) { + return Data$dTuple.$Tuple(Data$dList$dTypes.$List("Cons", Data$dTuple.$Tuple(v.range.start, LytTopDeclHead), v2._1), v2._2); + } + if (v2._1.tag === "Cons") { + if (eqLayoutDelim.eq(v2._1._1._2)(LytProperty)) { return Data$dTuple.$Tuple(v2._1._2, v2._2); } + return v2; + } + return v2; + } + if (v.value._2 === "where") { + const whereP = v2 => v3 => v3.tag === "LytDo" || ( + v3.tag === "LytLet" || (v3.tag === "LytLetStmt" || (v3.tag === "LytWhere" || (v3.tag === "LytOf" || (v3.tag === "LytDo" || v3.tag === "LytAdo")))) + ) && v.range.start.column <= v2.column; + if (stack.tag === "Cons") { + if (stack._1._2.tag === "LytTopDeclHead") { + return insertStart(LytWhere)(Data$dTuple.$Tuple( + stack._2, + Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, stack._2)]))([])) + )); + } + if (stack._1._2.tag === "LytProperty") { + return Data$dTuple.$Tuple(stack._2, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, stack._2)]))([]))); + } + return insertStart(LytWhere)((() => { + const $9 = collapse(whereP)(Data$dTuple.$Tuple(stack, [])); + return Data$dTuple.$Tuple($9._1, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $9._1)]))($9._2))); + })()); + } + return insertStart(LytWhere)((() => { + const $9 = collapse(whereP)(Data$dTuple.$Tuple(stack, [])); + return Data$dTuple.$Tuple($9._1, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $9._1)]))($9._2))); + })()); + } + if (v.value._2 === "in") { + const v2 = collapse(v2 => v3 => { + if (v3.tag === "LytLet") { return false; } + if (v3.tag === "LytAdo") { return false; } + return v3.tag === "LytLet" || (v3.tag === "LytLetStmt" || (v3.tag === "LytWhere" || (v3.tag === "LytOf" || (v3.tag === "LytDo" || v3.tag === "LytAdo")))); + })(Data$dTuple.$Tuple(stack, [])); + if (v2._1.tag === "Cons") { + if (v2._1._1._2.tag === "LytLetStmt") { + if (v2._1._2.tag === "Cons") { + if (v2._1._2._1._2.tag === "LytAdo") { + return Data$dTuple.$Tuple( + v2._1._2._2, + Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, v2._1._2._2)]))(Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([ + Data$dTuple.$Tuple( + { + range: {start: v.range.start, end: v.range.start}, + leadingComments: [], + trailingComments: [], + value: PureScript$dCST$dTypes.$Token("TokLayoutEnd", v2._1._2._1._1.column) + }, + v2._1._2._2 + ) + ]))(Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([ + Data$dTuple.$Tuple( + { + range: {start: v.range.start, end: v.range.start}, + leadingComments: [], + trailingComments: [], + value: PureScript$dCST$dTypes.$Token("TokLayoutEnd", v2._1._1._1.column) + }, + v2._1._2._2 + ) + ]))(v2._2)))))) + ); + } + if ( + v2._1._1._2.tag === "LytLet" || ( + v2._1._1._2.tag === "LytLetStmt" || ( + v2._1._1._2.tag === "LytWhere" || (v2._1._1._2.tag === "LytOf" || (v2._1._1._2.tag === "LytDo" || v2._1._1._2.tag === "LytAdo")) + ) + ) + ) { + return Data$dTuple.$Tuple( + v2._1._2, + Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, v2._1._2)]))(Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([ + Data$dTuple.$Tuple( + { + range: {start: v.range.start, end: v.range.start}, + leadingComments: [], + trailingComments: [], + value: PureScript$dCST$dTypes.$Token("TokLayoutEnd", v2._1._1._1.column) + }, + v2._1._2 + ) + ]))(v2._2)))) + ); + } + const $9 = insertSep(collapse(lytPos => lyt => ( + lyt.tag === "LytLet" || (lyt.tag === "LytLetStmt" || (lyt.tag === "LytWhere" || (lyt.tag === "LytOf" || (lyt.tag === "LytDo" || lyt.tag === "LytAdo")))) + ) && v.range.start.column < lytPos.column)(Data$dTuple.$Tuple(stack, []))); + const $10 = Data$dTuple.$Tuple($9._1, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $9._1)]))($9._2))); + if ($10._1.tag === "Cons") { + if (eqLayoutDelim.eq($10._1._1._2)(LytProperty)) { return Data$dTuple.$Tuple($10._1._2, $10._2); } + return $10; + } + return $10; + } + if ( + v2._1._1._2.tag === "LytLet" || ( + v2._1._1._2.tag === "LytLetStmt" || ( + v2._1._1._2.tag === "LytWhere" || (v2._1._1._2.tag === "LytOf" || (v2._1._1._2.tag === "LytDo" || v2._1._1._2.tag === "LytAdo")) + ) + ) + ) { + return Data$dTuple.$Tuple( + v2._1._2, + Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, v2._1._2)]))(Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([ + Data$dTuple.$Tuple( + { + range: {start: v.range.start, end: v.range.start}, + leadingComments: [], + trailingComments: [], + value: PureScript$dCST$dTypes.$Token("TokLayoutEnd", v2._1._1._1.column) + }, + v2._1._2 + ) + ]))(v2._2)))) + ); + } + const $9 = insertSep(collapse(lytPos => lyt => ( + lyt.tag === "LytLet" || (lyt.tag === "LytLetStmt" || (lyt.tag === "LytWhere" || (lyt.tag === "LytOf" || (lyt.tag === "LytDo" || lyt.tag === "LytAdo")))) + ) && v.range.start.column < lytPos.column)(Data$dTuple.$Tuple(stack, []))); + const $10 = Data$dTuple.$Tuple($9._1, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $9._1)]))($9._2))); + if ($10._1.tag === "Cons") { + if (eqLayoutDelim.eq($10._1._1._2)(LytProperty)) { return Data$dTuple.$Tuple($10._1._2, $10._2); } + return $10; + } + return $10; + } + if ( + v2._1._1._2.tag === "LytLet" || ( + v2._1._1._2.tag === "LytLetStmt" || (v2._1._1._2.tag === "LytWhere" || (v2._1._1._2.tag === "LytOf" || (v2._1._1._2.tag === "LytDo" || v2._1._1._2.tag === "LytAdo"))) + ) + ) { + return Data$dTuple.$Tuple( + v2._1._2, + Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, v2._1._2)]))(Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([ + Data$dTuple.$Tuple( + { + range: {start: v.range.start, end: v.range.start}, + leadingComments: [], + trailingComments: [], + value: PureScript$dCST$dTypes.$Token("TokLayoutEnd", v2._1._1._1.column) + }, + v2._1._2 + ) + ]))(v2._2)))) + ); + } + const $9 = insertSep(collapse(lytPos => lyt => ( + lyt.tag === "LytLet" || (lyt.tag === "LytLetStmt" || (lyt.tag === "LytWhere" || (lyt.tag === "LytOf" || (lyt.tag === "LytDo" || lyt.tag === "LytAdo")))) + ) && v.range.start.column < lytPos.column)(Data$dTuple.$Tuple(stack, []))); + const $10 = Data$dTuple.$Tuple($9._1, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $9._1)]))($9._2))); + if ($10._1.tag === "Cons") { + if (eqLayoutDelim.eq($10._1._1._2)(LytProperty)) { return Data$dTuple.$Tuple($10._1._2, $10._2); } + return $10; + } + return $10; + } + const $9 = insertSep(collapse(lytPos => lyt => ( + lyt.tag === "LytLet" || (lyt.tag === "LytLetStmt" || (lyt.tag === "LytWhere" || (lyt.tag === "LytOf" || (lyt.tag === "LytDo" || lyt.tag === "LytAdo")))) + ) && v.range.start.column < lytPos.column)(Data$dTuple.$Tuple(stack, []))); + const $10 = Data$dTuple.$Tuple($9._1, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $9._1)]))($9._2))); + if ($10._1.tag === "Cons") { + if (eqLayoutDelim.eq($10._1._1._2)(LytProperty)) { return Data$dTuple.$Tuple($10._1._2, $10._2); } + return $10; + } + return $10; + } + if (v.value._2 === "let") { + return insertKwProperty( + v2 => { + if (v2._1.tag === "Cons") { + if (v2._1._1._2.tag === "LytDo") { + if (v2._1._1._1.column === v.range.start.column) { return insertStart(LytLetStmt)(v2); } + return insertStart(LytLet)(v2); + } + if (v2._1._1._2.tag === "LytAdo") { + if (v2._1._1._1.column === v.range.start.column) { return insertStart(LytLetStmt)(v2); } + return insertStart(LytLet)(v2); + } + return insertStart(LytLet)(v2); + } + return insertStart(LytLet)(v2); + }, + Data$dTuple.$Tuple(stack, []) + ); + } + if (v.value._2 === "do") { return insertKwProperty(insertStart(LytDo), Data$dTuple.$Tuple(stack, [])); } + if (v.value._2 === "ado") { return insertKwProperty(insertStart(LytAdo), Data$dTuple.$Tuple(stack, [])); } + if (v.value._2 === "case") { + return insertKwProperty(v1 => Data$dTuple.$Tuple(Data$dList$dTypes.$List("Cons", Data$dTuple.$Tuple(v.range.start, LytCase), v1._1), v1._2), Data$dTuple.$Tuple(stack, [])); + } + if (v.value._2 === "of") { + const v2 = collapse(v$1 => isIndented)(Data$dTuple.$Tuple(stack, [])); + if (v2._1.tag === "Cons") { + if (v2._1._1._2.tag === "LytCase") { + const $9 = insertStart(LytOf)(Data$dTuple.$Tuple( + v2._1._2, + Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, v2._1._2)]))(v2._2)) + )); + return Data$dTuple.$Tuple(Data$dList$dTypes.$List("Cons", Data$dTuple.$Tuple(nextPos, LytCaseBinders), $9._1), $9._2); + } + const $9 = insertSep(collapse(lytPos => lyt => ( + lyt.tag === "LytLet" || (lyt.tag === "LytLetStmt" || (lyt.tag === "LytWhere" || (lyt.tag === "LytOf" || (lyt.tag === "LytDo" || lyt.tag === "LytAdo")))) + ) && v.range.start.column < lytPos.column)(v2)); + const $10 = Data$dTuple.$Tuple($9._1, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $9._1)]))($9._2))); + if ($10._1.tag === "Cons") { + if (eqLayoutDelim.eq($10._1._1._2)(LytProperty)) { return Data$dTuple.$Tuple($10._1._2, $10._2); } + return $10; + } + return $10; + } + const $9 = insertSep(collapse(lytPos => lyt => ( + lyt.tag === "LytLet" || (lyt.tag === "LytLetStmt" || (lyt.tag === "LytWhere" || (lyt.tag === "LytOf" || (lyt.tag === "LytDo" || lyt.tag === "LytAdo")))) + ) && v.range.start.column < lytPos.column)(v2)); + const $10 = Data$dTuple.$Tuple($9._1, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $9._1)]))($9._2))); + if ($10._1.tag === "Cons") { + if (eqLayoutDelim.eq($10._1._1._2)(LytProperty)) { return Data$dTuple.$Tuple($10._1._2, $10._2); } + return $10; + } + return $10; + } + if (v.value._2 === "if") { + return insertKwProperty(v1 => Data$dTuple.$Tuple(Data$dList$dTypes.$List("Cons", Data$dTuple.$Tuple(v.range.start, LytIf), v1._1), v1._2), Data$dTuple.$Tuple(stack, [])); + } + if (v.value._2 === "then") { + const v2 = collapse(v$1 => isIndented)(Data$dTuple.$Tuple(stack, [])); + if (v2._1.tag === "Cons") { + if (v2._1._1._2.tag === "LytIf") { + return Data$dTuple.$Tuple( + Data$dList$dTypes.$List("Cons", Data$dTuple.$Tuple(v.range.start, LytThen), v2._1._2), + Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, v2._1._2)]))(v2._2)) + ); + } + const $9 = insertSep(collapse(lytPos => lyt => ( + lyt.tag === "LytLet" || (lyt.tag === "LytLetStmt" || (lyt.tag === "LytWhere" || (lyt.tag === "LytOf" || (lyt.tag === "LytDo" || lyt.tag === "LytAdo")))) + ) && v.range.start.column < lytPos.column)(Data$dTuple.$Tuple(stack, []))); + const $10 = Data$dTuple.$Tuple($9._1, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $9._1)]))($9._2))); + if ($10._1.tag === "Cons") { + if (eqLayoutDelim.eq($10._1._1._2)(LytProperty)) { return Data$dTuple.$Tuple($10._1._2, $10._2); } + return $10; + } + return $10; + } + const $9 = insertSep(collapse(lytPos => lyt => ( + lyt.tag === "LytLet" || (lyt.tag === "LytLetStmt" || (lyt.tag === "LytWhere" || (lyt.tag === "LytOf" || (lyt.tag === "LytDo" || lyt.tag === "LytAdo")))) + ) && v.range.start.column < lytPos.column)(Data$dTuple.$Tuple(stack, []))); + const $10 = Data$dTuple.$Tuple($9._1, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $9._1)]))($9._2))); + if ($10._1.tag === "Cons") { + if (eqLayoutDelim.eq($10._1._1._2)(LytProperty)) { return Data$dTuple.$Tuple($10._1._2, $10._2); } + return $10; + } + return $10; + } + if (v.value._2 === "else") { + const v2 = collapse(v$1 => isIndented)(Data$dTuple.$Tuple(stack, [])); + const $9 = () => { + const v3 = collapse(lytPos => lyt => ( + lyt.tag === "LytLet" || (lyt.tag === "LytLetStmt" || (lyt.tag === "LytWhere" || (lyt.tag === "LytOf" || (lyt.tag === "LytDo" || lyt.tag === "LytAdo")))) + ) && v.range.start.column < lytPos.column)(Data$dTuple.$Tuple(stack, [])); + if ( + (() => { + if (v3._1.tag === "Cons") { + if (v3._1._1._2.tag === "LytWhere") { + if (v3._1._2.tag === "Cons") { + if (v3._1._2._1._2.tag === "LytRoot") { + if (v3._1._2._2.tag === "Nil") { return v.range.start.column === v3._1._1._1.column; } + return false; + } + return false; + } + return false; + } + return false; + } + return false; + })() + ) { + return Data$dTuple.$Tuple(v3._1, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, v3._1)]))(v3._2))); + } + const $10 = insertSep(v3); + const $11 = Data$dTuple.$Tuple($10._1, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $10._1)]))($10._2))); + if ($11._1.tag === "Cons") { + if (eqLayoutDelim.eq($11._1._1._2)(LytProperty)) { return Data$dTuple.$Tuple($11._1._2, $11._2); } + return $11; + } + return $11; + }; + if (v2._1.tag === "Cons") { + if (v2._1._1._2.tag === "LytThen") { + return Data$dTuple.$Tuple(v2._1._2, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, v2._1._2)]))(v2._2))); + } + return $9(); + } + return $9(); + } + const $8 = insertSep(collapse(lytPos => lyt => ( + lyt.tag === "LytLet" || (lyt.tag === "LytLetStmt" || (lyt.tag === "LytWhere" || (lyt.tag === "LytOf" || (lyt.tag === "LytDo" || lyt.tag === "LytAdo")))) + ) && v.range.start.column < lytPos.column)(Data$dTuple.$Tuple(stack, []))); + const $9 = Data$dTuple.$Tuple($8._1, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $8._1)]))($8._2))); + if ($9._1.tag === "Cons") { + if (eqLayoutDelim.eq($9._1._1._2)(LytProperty)) { return Data$dTuple.$Tuple($9._1._2, $9._2); } + return $9; + } + return $9; + } + if (v.value._2 === "do") { return insertKwProperty(insertStart(LytDo), Data$dTuple.$Tuple(stack, [])); } + if (v.value._2 === "ado") { return insertKwProperty(insertStart(LytAdo), Data$dTuple.$Tuple(stack, [])); } + const $8 = insertSep(collapse(lytPos => lyt => ( + lyt.tag === "LytLet" || (lyt.tag === "LytLetStmt" || (lyt.tag === "LytWhere" || (lyt.tag === "LytOf" || (lyt.tag === "LytDo" || lyt.tag === "LytAdo")))) + ) && v.range.start.column < lytPos.column)(Data$dTuple.$Tuple(stack, []))); + return Data$dTuple.$Tuple($8._1, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $8._1)]))($8._2))); + } + if (v.value.tag === "TokForall") { + return insertKwProperty(v1 => Data$dTuple.$Tuple(Data$dList$dTypes.$List("Cons", Data$dTuple.$Tuple(v.range.start, LytForall), v1._1), v1._2), Data$dTuple.$Tuple(stack, [])); + } + if (v.value.tag === "TokBackslash") { + const $8 = insertSep(collapse(lytPos => lyt => ( + lyt.tag === "LytLet" || (lyt.tag === "LytLetStmt" || (lyt.tag === "LytWhere" || (lyt.tag === "LytOf" || (lyt.tag === "LytDo" || lyt.tag === "LytAdo")))) + ) && v.range.start.column < lytPos.column)(Data$dTuple.$Tuple(stack, []))); + return Data$dTuple.$Tuple( + Data$dList$dTypes.$List("Cons", Data$dTuple.$Tuple(v.range.start, LytLambdaBinders), $8._1), + Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $8._1)]))($8._2)) + ); + } + if (v.value.tag === "TokRightArrow") { + const $8 = collapse(v2 => v3 => { + if (v3.tag === "LytDo") { return true; } + if (v3.tag === "LytOf") { return false; } + return (v3.tag === "LytLet" || (v3.tag === "LytLetStmt" || (v3.tag === "LytWhere" || (v3.tag === "LytOf" || (v3.tag === "LytDo" || v3.tag === "LytAdo"))))) && v.range.start.column <= v2.column; + })(Data$dTuple.$Tuple(stack, [])); + if ($8._1.tag === "Cons") { + if ($8._1._1._2.tag === "LytCaseBinders" || ($8._1._1._2.tag === "LytCaseGuard" || $8._1._1._2.tag === "LytLambdaBinders")) { + return Data$dTuple.$Tuple($8._1._2, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $8._1._2)]))($8._2))); + } + return Data$dTuple.$Tuple($8._1, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $8._1)]))($8._2))); + } + return Data$dTuple.$Tuple($8._1, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $8._1)]))($8._2))); + } + if (v.value.tag === "TokEquals") { + const v2 = collapse(v2 => v3 => v3.tag === "LytWhere" || (v3.tag === "LytLet" || v3.tag === "LytLetStmt"))(Data$dTuple.$Tuple(stack, [])); + if (v2._1.tag === "Cons") { + if (v2._1._1._2.tag === "LytDeclGuard") { + return Data$dTuple.$Tuple(v2._1._2, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, v2._1._2)]))(v2._2))); + } + const $9 = insertSep(collapse(lytPos => lyt => ( + lyt.tag === "LytLet" || (lyt.tag === "LytLetStmt" || (lyt.tag === "LytWhere" || (lyt.tag === "LytOf" || (lyt.tag === "LytDo" || lyt.tag === "LytAdo")))) + ) && v.range.start.column < lytPos.column)(Data$dTuple.$Tuple(stack, []))); + return Data$dTuple.$Tuple($9._1, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $9._1)]))($9._2))); + } + const $9 = insertSep(collapse(lytPos => lyt => ( + lyt.tag === "LytLet" || (lyt.tag === "LytLetStmt" || (lyt.tag === "LytWhere" || (lyt.tag === "LytOf" || (lyt.tag === "LytDo" || lyt.tag === "LytAdo")))) + ) && v.range.start.column < lytPos.column)(Data$dTuple.$Tuple(stack, []))); + return Data$dTuple.$Tuple($9._1, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $9._1)]))($9._2))); + } + if (v.value.tag === "TokPipe") { + const v2 = collapse(lytPos => lyt => ( + lyt.tag === "LytLet" || (lyt.tag === "LytLetStmt" || (lyt.tag === "LytWhere" || (lyt.tag === "LytOf" || (lyt.tag === "LytDo" || lyt.tag === "LytAdo")))) + ) && v.range.start.column <= lytPos.column)(Data$dTuple.$Tuple(stack, [])); + if (v2._1.tag === "Cons") { + if (v2._1._1._2.tag === "LytOf") { + return Data$dTuple.$Tuple( + Data$dList$dTypes.$List("Cons", Data$dTuple.$Tuple(v.range.start, LytCaseGuard), v2._1), + Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([ + Data$dTuple.$Tuple(v, Data$dList$dTypes.$List("Cons", Data$dTuple.$Tuple(v.range.start, LytCaseGuard), v2._1)) + ]))(v2._2)) + ); + } + if (v2._1._1._2.tag === "LytLet") { + return Data$dTuple.$Tuple( + Data$dList$dTypes.$List("Cons", Data$dTuple.$Tuple(v.range.start, LytDeclGuard), v2._1), + Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([ + Data$dTuple.$Tuple(v, Data$dList$dTypes.$List("Cons", Data$dTuple.$Tuple(v.range.start, LytDeclGuard), v2._1)) + ]))(v2._2)) + ); + } + if (v2._1._1._2.tag === "LytLetStmt") { + return Data$dTuple.$Tuple( + Data$dList$dTypes.$List("Cons", Data$dTuple.$Tuple(v.range.start, LytDeclGuard), v2._1), + Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([ + Data$dTuple.$Tuple(v, Data$dList$dTypes.$List("Cons", Data$dTuple.$Tuple(v.range.start, LytDeclGuard), v2._1)) + ]))(v2._2)) + ); + } + if (v2._1._1._2.tag === "LytWhere") { + return Data$dTuple.$Tuple( + Data$dList$dTypes.$List("Cons", Data$dTuple.$Tuple(v.range.start, LytDeclGuard), v2._1), + Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([ + Data$dTuple.$Tuple(v, Data$dList$dTypes.$List("Cons", Data$dTuple.$Tuple(v.range.start, LytDeclGuard), v2._1)) + ]))(v2._2)) + ); + } + const $9 = insertSep(collapse(lytPos => lyt => ( + lyt.tag === "LytLet" || (lyt.tag === "LytLetStmt" || (lyt.tag === "LytWhere" || (lyt.tag === "LytOf" || (lyt.tag === "LytDo" || lyt.tag === "LytAdo")))) + ) && v.range.start.column < lytPos.column)(Data$dTuple.$Tuple(stack, []))); + return Data$dTuple.$Tuple($9._1, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $9._1)]))($9._2))); + } + const $9 = insertSep(collapse(lytPos => lyt => ( + lyt.tag === "LytLet" || (lyt.tag === "LytLetStmt" || (lyt.tag === "LytWhere" || (lyt.tag === "LytOf" || (lyt.tag === "LytDo" || lyt.tag === "LytAdo")))) + ) && v.range.start.column < lytPos.column)(Data$dTuple.$Tuple(stack, []))); + return Data$dTuple.$Tuple($9._1, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $9._1)]))($9._2))); + } + if (v.value.tag === "TokTick") { + const v2 = collapse(v$1 => isIndented)(Data$dTuple.$Tuple(stack, [])); + const $9 = () => { + const $9 = insertSep(collapse(lytPos => lyt => ( + lyt.tag === "LytLet" || (lyt.tag === "LytLetStmt" || (lyt.tag === "LytWhere" || (lyt.tag === "LytOf" || (lyt.tag === "LytDo" || lyt.tag === "LytAdo")))) + ) && v.range.start.column <= lytPos.column)(Data$dTuple.$Tuple(stack, []))); + return Data$dTuple.$Tuple( + Data$dList$dTypes.$List("Cons", Data$dTuple.$Tuple(v.range.start, LytTick), $9._1), + Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $9._1)]))($9._2)) + ); + }; + if (v2._1.tag === "Cons") { + if (v2._1._1._2.tag === "LytTick") { + return Data$dTuple.$Tuple(v2._1._2, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, v2._1._2)]))(v2._2))); + } + return $9(); + } + return $9(); + } + if (v.value.tag === "TokComma") { + const v2 = collapse(v$1 => isIndented)(Data$dTuple.$Tuple(stack, [])); + if (v2._1.tag === "Cons") { + if (v2._1._1._2.tag === "LytBrace") { + return Data$dTuple.$Tuple( + Data$dList$dTypes.$List("Cons", Data$dTuple.$Tuple(v.range.start, LytProperty), v2._1), + Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, v2._1)]))(v2._2)) + ); + } + return Data$dTuple.$Tuple(v2._1, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, v2._1)]))(v2._2))); + } + return Data$dTuple.$Tuple(v2._1, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, v2._1)]))(v2._2))); + } + if (v.value.tag === "TokDot") { + const $8 = insertSep(collapse(lytPos => lyt => ( + lyt.tag === "LytLet" || (lyt.tag === "LytLetStmt" || (lyt.tag === "LytWhere" || (lyt.tag === "LytOf" || (lyt.tag === "LytDo" || lyt.tag === "LytAdo")))) + ) && v.range.start.column < lytPos.column)(Data$dTuple.$Tuple(stack, []))); + const $9 = Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $8._1)]))($8._2)); + if ($8._1.tag === "Cons") { + if ($8._1._1._2.tag === "LytForall") { return Data$dTuple.$Tuple($8._1._2, $9); } + return Data$dTuple.$Tuple(Data$dList$dTypes.$List("Cons", Data$dTuple.$Tuple(v.range.start, LytProperty), $8._1), $9); + } + return Data$dTuple.$Tuple(Data$dList$dTypes.$List("Cons", Data$dTuple.$Tuple(v.range.start, LytProperty), $8._1), $9); + } + if (v.value.tag === "TokLeftParen") { + const $8 = insertSep(collapse(lytPos => lyt => ( + lyt.tag === "LytLet" || (lyt.tag === "LytLetStmt" || (lyt.tag === "LytWhere" || (lyt.tag === "LytOf" || (lyt.tag === "LytDo" || lyt.tag === "LytAdo")))) + ) && v.range.start.column < lytPos.column)(Data$dTuple.$Tuple(stack, []))); + return Data$dTuple.$Tuple( + Data$dList$dTypes.$List("Cons", Data$dTuple.$Tuple(v.range.start, LytParen), $8._1), + Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $8._1)]))($8._2)) + ); + } + if (v.value.tag === "TokLeftBrace") { + const $8 = insertSep(collapse(lytPos => lyt => ( + lyt.tag === "LytLet" || (lyt.tag === "LytLetStmt" || (lyt.tag === "LytWhere" || (lyt.tag === "LytOf" || (lyt.tag === "LytDo" || lyt.tag === "LytAdo")))) + ) && v.range.start.column < lytPos.column)(Data$dTuple.$Tuple(stack, []))); + return Data$dTuple.$Tuple( + Data$dList$dTypes.$List("Cons", Data$dTuple.$Tuple(v.range.start, LytProperty), Data$dList$dTypes.$List("Cons", Data$dTuple.$Tuple(v.range.start, LytBrace), $8._1)), + Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $8._1)]))($8._2)) + ); + } + if (v.value.tag === "TokLeftSquare") { + const $8 = insertSep(collapse(lytPos => lyt => ( + lyt.tag === "LytLet" || (lyt.tag === "LytLetStmt" || (lyt.tag === "LytWhere" || (lyt.tag === "LytOf" || (lyt.tag === "LytDo" || lyt.tag === "LytAdo")))) + ) && v.range.start.column < lytPos.column)(Data$dTuple.$Tuple(stack, []))); + return Data$dTuple.$Tuple( + Data$dList$dTypes.$List("Cons", Data$dTuple.$Tuple(v.range.start, LytSquare), $8._1), + Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $8._1)]))($8._2)) + ); + } + if (v.value.tag === "TokRightParen") { + const $8 = collapse(v$1 => isIndented)(Data$dTuple.$Tuple(stack, [])); + if ($8._1.tag === "Cons") { + if (eqLayoutDelim.eq($8._1._1._2)(LytParen)) { + return Data$dTuple.$Tuple($8._1._2, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $8._1._2)]))($8._2))); + } + return Data$dTuple.$Tuple($8._1, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $8._1)]))($8._2))); + } + return Data$dTuple.$Tuple($8._1, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $8._1)]))($8._2))); + } + if (v.value.tag === "TokRightBrace") { + const $8 = collapse(v$1 => isIndented)(Data$dTuple.$Tuple(stack, [])); + if ($8._1.tag === "Cons") { + if (eqLayoutDelim.eq($8._1._1._2)(LytProperty)) { + if ($8._1._2.tag === "Cons") { + if (eqLayoutDelim.eq($8._1._2._1._2)(LytBrace)) { + return Data$dTuple.$Tuple( + $8._1._2._2, + Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $8._1._2._2)]))($8._2)) + ); + } + return Data$dTuple.$Tuple($8._1._2, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $8._1._2)]))($8._2))); + } + return Data$dTuple.$Tuple($8._1._2, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $8._1._2)]))($8._2))); + } + if ($8._1.tag === "Cons") { + if (eqLayoutDelim.eq($8._1._1._2)(LytBrace)) { + return Data$dTuple.$Tuple($8._1._2, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $8._1._2)]))($8._2))); + } + return Data$dTuple.$Tuple($8._1, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $8._1)]))($8._2))); + } + return Data$dTuple.$Tuple($8._1, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $8._1)]))($8._2))); + } + if ($8._1.tag === "Cons") { + if (eqLayoutDelim.eq($8._1._1._2)(LytBrace)) { + return Data$dTuple.$Tuple($8._1._2, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $8._1._2)]))($8._2))); + } + return Data$dTuple.$Tuple($8._1, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $8._1)]))($8._2))); + } + return Data$dTuple.$Tuple($8._1, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $8._1)]))($8._2))); + } + if (v.value.tag === "TokRightSquare") { + const $8 = collapse(v$1 => isIndented)(Data$dTuple.$Tuple(stack, [])); + if ($8._1.tag === "Cons") { + if (eqLayoutDelim.eq($8._1._1._2)(LytSquare)) { + return Data$dTuple.$Tuple($8._1._2, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $8._1._2)]))($8._2))); + } + return Data$dTuple.$Tuple($8._1, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $8._1)]))($8._2))); + } + return Data$dTuple.$Tuple($8._1, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $8._1)]))($8._2))); + } + if (v.value.tag === "TokString") { + const $8 = insertSep(collapse(lytPos => lyt => ( + lyt.tag === "LytLet" || (lyt.tag === "LytLetStmt" || (lyt.tag === "LytWhere" || (lyt.tag === "LytOf" || (lyt.tag === "LytDo" || lyt.tag === "LytAdo")))) + ) && v.range.start.column < lytPos.column)(Data$dTuple.$Tuple(stack, []))); + const $9 = Data$dTuple.$Tuple($8._1, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $8._1)]))($8._2))); + if ($9._1.tag === "Cons") { + if (eqLayoutDelim.eq($9._1._1._2)(LytProperty)) { return Data$dTuple.$Tuple($9._1._2, $9._2); } + return $9; + } + return $9; + } + if (v.value.tag === "TokOperator") { + const $8 = insertSep(collapse(lytPos => lyt => ( + lyt.tag === "LytLet" || (lyt.tag === "LytLetStmt" || (lyt.tag === "LytWhere" || (lyt.tag === "LytOf" || (lyt.tag === "LytDo" || lyt.tag === "LytAdo")))) + ) && v.range.start.column <= lytPos.column)(Data$dTuple.$Tuple(stack, []))); + return Data$dTuple.$Tuple($8._1, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $8._1)]))($8._2))); + } + const $8 = insertSep(collapse(lytPos => lyt => ( + lyt.tag === "LytLet" || (lyt.tag === "LytLetStmt" || (lyt.tag === "LytWhere" || (lyt.tag === "LytOf" || (lyt.tag === "LytDo" || lyt.tag === "LytAdo")))) + ) && v.range.start.column < lytPos.column)(Data$dTuple.$Tuple(stack, []))); + return Data$dTuple.$Tuple($8._1, Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v, $8._1)]))($8._2))); +}; +const ordLayoutDelim = { + compare: x => y => { + if (x.tag === "LytRoot") { + if (y.tag === "LytRoot") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "LytRoot") { return Data$dOrdering.GT; } + if (x.tag === "LytTopDecl") { + if (y.tag === "LytTopDecl") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "LytTopDecl") { return Data$dOrdering.GT; } + if (x.tag === "LytTopDeclHead") { + if (y.tag === "LytTopDeclHead") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "LytTopDeclHead") { return Data$dOrdering.GT; } + if (x.tag === "LytDeclGuard") { + if (y.tag === "LytDeclGuard") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "LytDeclGuard") { return Data$dOrdering.GT; } + if (x.tag === "LytCase") { + if (y.tag === "LytCase") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "LytCase") { return Data$dOrdering.GT; } + if (x.tag === "LytCaseBinders") { + if (y.tag === "LytCaseBinders") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "LytCaseBinders") { return Data$dOrdering.GT; } + if (x.tag === "LytCaseGuard") { + if (y.tag === "LytCaseGuard") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "LytCaseGuard") { return Data$dOrdering.GT; } + if (x.tag === "LytLambdaBinders") { + if (y.tag === "LytLambdaBinders") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "LytLambdaBinders") { return Data$dOrdering.GT; } + if (x.tag === "LytParen") { + if (y.tag === "LytParen") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "LytParen") { return Data$dOrdering.GT; } + if (x.tag === "LytBrace") { + if (y.tag === "LytBrace") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "LytBrace") { return Data$dOrdering.GT; } + if (x.tag === "LytSquare") { + if (y.tag === "LytSquare") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "LytSquare") { return Data$dOrdering.GT; } + if (x.tag === "LytIf") { + if (y.tag === "LytIf") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "LytIf") { return Data$dOrdering.GT; } + if (x.tag === "LytThen") { + if (y.tag === "LytThen") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "LytThen") { return Data$dOrdering.GT; } + if (x.tag === "LytProperty") { + if (y.tag === "LytProperty") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "LytProperty") { return Data$dOrdering.GT; } + if (x.tag === "LytForall") { + if (y.tag === "LytForall") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "LytForall") { return Data$dOrdering.GT; } + if (x.tag === "LytTick") { + if (y.tag === "LytTick") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "LytTick") { return Data$dOrdering.GT; } + if (x.tag === "LytLet") { + if (y.tag === "LytLet") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "LytLet") { return Data$dOrdering.GT; } + if (x.tag === "LytLetStmt") { + if (y.tag === "LytLetStmt") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "LytLetStmt") { return Data$dOrdering.GT; } + if (x.tag === "LytWhere") { + if (y.tag === "LytWhere") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "LytWhere") { return Data$dOrdering.GT; } + if (x.tag === "LytOf") { + if (y.tag === "LytOf") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "LytOf") { return Data$dOrdering.GT; } + if (x.tag === "LytDo") { + if (y.tag === "LytDo") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "LytDo") { return Data$dOrdering.GT; } + if (x.tag === "LytAdo") { + if (y.tag === "LytAdo") { return Data$dOrdering.EQ; } + $runtime.fail(); + } + $runtime.fail(); + }, + Eq0: () => eqLayoutDelim +}; +const currentIndent = /* #__PURE__ */ (() => { + 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 === "Cons") { + if ( + v._1._2.tag === "LytLet" || ( + v._1._2.tag === "LytLetStmt" || (v._1._2.tag === "LytWhere" || (v._1._2.tag === "LytOf" || (v._1._2.tag === "LytDo" || v._1._2.tag === "LytAdo"))) + ) + ) { + go$c = false; + go$r = Data$dMaybe.$Maybe("Just", v._1._1); + continue; + } + go$a0 = v._2; + continue; + } + go$c = false; + go$r = Data$dMaybe.Nothing; + continue; + }; + return go$r; + }; + return go; +})(); +export { + $LayoutDelim, + LytAdo, + LytBrace, + LytCase, + LytCaseBinders, + LytCaseGuard, + LytDeclGuard, + LytDo, + LytForall, + LytIf, + LytLambdaBinders, + LytLet, + LytLetStmt, + LytOf, + LytParen, + LytProperty, + LytRoot, + LytSquare, + LytThen, + LytTick, + LytTopDecl, + LytTopDeclHead, + LytWhere, + currentIndent, + eqLayoutDelim, + insertLayout, + isIndented, + lytToken, + ordLayoutDelim +}; diff --git a/.storybook/purescript-indexer/output-es/PureScript.CST.Lexer/index.js b/.storybook/purescript-indexer/output-es/PureScript.CST.Lexer/index.js new file mode 100644 index 0000000..a701e9b --- /dev/null +++ b/.storybook/purescript-indexer/output-es/PureScript.CST.Lexer/index.js @@ -0,0 +1,523 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dApply from "../Control.Apply/index.js"; +import * as Control$dMonad$dST$dInternal from "../Control.Monad.ST.Internal/index.js"; +import * as Data$dArray from "../Data.Array/index.js"; +import * as Data$dArray$dST from "../Data.Array.ST/index.js"; +import * as Data$dEither from "../Data.Either/index.js"; +import * as Data$dEnum from "../Data.Enum/index.js"; +import * as Data$dEuclideanRing from "../Data.EuclideanRing/index.js"; +import * as Data$dFoldable from "../Data.Foldable/index.js"; +import * as Data$dFunction from "../Data.Function/index.js"; +import * as Data$dInt from "../Data.Int/index.js"; +import * as Data$dLazy from "../Data.Lazy/index.js"; +import * as Data$dList$dTypes from "../Data.List.Types/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dMonoid from "../Data.Monoid/index.js"; +import * as Data$dNumber from "../Data.Number/index.js"; +import * as Data$dString$dCodePoints from "../Data.String.CodePoints/index.js"; +import * as Data$dString$dCodeUnits from "../Data.String.CodeUnits/index.js"; +import * as Data$dString$dCommon from "../Data.String.Common/index.js"; +import * as Data$dString$dRegex from "../Data.String.Regex/index.js"; +import * as Data$dString$dRegex$dFlags from "../Data.String.Regex.Flags/index.js"; +import * as Data$dString$dRegex$dUnsafe from "../Data.String.Regex.Unsafe/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +import * as Partial from "../Partial/index.js"; +import * as PureScript$dCST$dErrors from "../PureScript.CST.Errors/index.js"; +import * as PureScript$dCST$dLayout from "../PureScript.CST.Layout/index.js"; +import * as PureScript$dCST$dTokenStream from "../PureScript.CST.TokenStream/index.js"; +import * as PureScript$dCST$dTypes from "../PureScript.CST.Types/index.js"; +const $LexResult = (tag, _1, _2) => ({tag, _1, _2}); +const fold1 = /* #__PURE__ */ (() => Data$dFoldable.foldableArray.foldMap(Data$dMonoid.monoidRecord()((() => { + const semigroupRecordCons1 = {appendRecord: v => ra => rb => ({raw: ra.raw + rb.raw, string: ra.string + rb.string})}; + return {memptyRecord: v => ({raw: "", string: ""}), SemigroupRecord0: () => semigroupRecordCons1}; +})()))(Data$dFoldable.identity))(); +const consTokens = /* #__PURE__ */ PureScript$dCST$dTokenStream.consTokens(Data$dFoldable.foldableArray); +const LexFail = value0 => value1 => $LexResult("LexFail", value0, value1); +const LexSucc = value0 => value1 => $LexResult("LexSucc", value0, value1); +const $$try = v => str => { + const v1 = v(str); + if (v1.tag === "LexFail") { return $LexResult("LexFail", v1._1, str); } + if (v1.tag === "LexSucc") { return $LexResult("LexSucc", v1._1, v1._2); } + $runtime.fail(); +}; +const toModuleName = v => { + if (v === "") { return Data$dMaybe.Nothing; } + return Data$dMaybe.$Maybe("Just", Data$dString$dCodeUnits.take(Data$dString$dCodeUnits.length(v) - 1 | 0)(v)); +}; +const optional = v => str => { + const v1 = v(str); + if (v1.tag === "LexFail") { + if (Data$dString$dCodeUnits.length(str) === Data$dString$dCodeUnits.length(v1._2)) { return $LexResult("LexSucc", Data$dMaybe.Nothing, str); } + return $LexResult("LexFail", v1._1, v1._2); + } + if (v1.tag === "LexSucc") { return $LexResult("LexSucc", Data$dMaybe.$Maybe("Just", v1._1), v1._2); } + $runtime.fail(); +}; +const mkUnexpected = str => { + const start = Data$dString$dCodePoints.take(6)(str); + const len = Data$dString$dCodePoints.toCodePointArray(start).length; + if (len === 0) { return "end of file"; } + if (len < 6) { return start; } + return start + "..."; +}; +const regex = mkErr => regexStr => { + const matchRegex = Data$dString$dRegex$dUnsafe.unsafeRegex("^(?:" + (regexStr + ")"))(Data$dString$dRegex$dFlags.unicode); + return str => { + const v = Data$dString$dRegex.match(matchRegex)(str); + if (v.tag === "Just") { + const $5 = Data$dArray.index(v._1)(0); + const $6 = (() => { + if ($5.tag === "Just") { return $5._1; } + $runtime.fail(); + })(); + if ($6.tag === "Just") { return $LexResult("LexSucc", $6._1, Data$dString$dCodeUnits.drop(Data$dString$dCodeUnits.length($6._1))(str)); } + return $LexResult("LexFail", v3 => mkErr(mkUnexpected(str)), str); + } + return $LexResult("LexFail", v3 => mkErr(mkUnexpected(str)), str); + }; +}; +const satisfy = mkErr => p => str => { + const v = Data$dString$dCodeUnits.charAt(0)(str); + if (v.tag === "Just") { + if (p(v._1)) { return $LexResult("LexSucc", v._1, Data$dString$dCodeUnits.drop(1)(str)); } + return $LexResult("LexFail", v1 => mkErr(mkUnexpected(str)), str); + } + return $LexResult("LexFail", v1 => mkErr(mkUnexpected(str)), str); +}; +const string = mkErr => match => str => { + if (Data$dString$dCodeUnits.take(Data$dString$dCodeUnits.length(match))(str) === match) { + return $LexResult("LexSucc", match, Data$dString$dCodeUnits.drop(Data$dString$dCodeUnits.length(match))(str)); + } + return $LexResult("LexFail", v => mkErr(mkUnexpected(str)), str); +}; +const many = v => str => Control$dMonad$dST$dInternal.run(() => { + const valuesRef = Data$dArray$dST.new(); + const strRef = {value: str}; + const contRef = {value: true}; + const resRef = {value: $LexResult("LexSucc", [], str)}; + Control$dMonad$dST$dInternal.while(() => contRef.value)(() => { + const str$p = strRef.value; + const v1 = v(str$p); + if (v1.tag === "LexFail") { + if (Data$dString$dCodeUnits.length(str$p) === Data$dString$dCodeUnits.length(v1._2)) { + const values = Data$dArray$dST.unsafeFreeze(valuesRef)(); + resRef.value = $LexResult("LexSucc", values, v1._2); + contRef.value = false; + return Data$dUnit.unit; + } + resRef.value = $LexResult("LexFail", v1._1, v1._2); + contRef.value = false; + return Data$dUnit.unit; + } + if (v1.tag === "LexSucc") { + Data$dArray$dST.pushAll([v1._1])(valuesRef)(); + strRef.value = v1._2; + return Data$dUnit.unit; + } + $runtime.fail(); + })(); + return resRef.value; +}); +const functorLex = { + map: f => v => str => { + const v1 = v(str); + if (v1.tag === "LexFail") { return $LexResult("LexFail", v1._1, v1._2); } + if (v1.tag === "LexSucc") { return $LexResult("LexSucc", f(v1._1), v1._2); } + $runtime.fail(); + } +}; +const spaceComment = /* #__PURE__ */ (() => functorLex.map(Data$dString$dCodeUnits.length)(regex(PureScript$dCST$dErrors.LexExpected("spaces"))(" +")))(); +const char$p = mkErr => res => match => str => { + if (Data$dString$dCodeUnits.singleton(match) === Data$dString$dCodeUnits.take(1)(str)) { return $LexResult("LexSucc", res, Data$dString$dCodeUnits.drop(1)(str)); } + return $LexResult("LexFail", v => mkErr(mkUnexpected(str)), str); +}; +const $$char = mkErr => match => str => { + if (Data$dString$dCodeUnits.singleton(match) === Data$dString$dCodeUnits.take(1)(str)) { return $LexResult("LexSucc", match, Data$dString$dCodeUnits.drop(1)(str)); } + return $LexResult("LexFail", v => mkErr(mkUnexpected(str)), str); +}; +const bumpText = v => colOffset => str => { + 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 n = go$a0, ix = go$a1; + const v1 = Data$dString$dCodeUnits.indexOf$p("\n")(ix)(str); + if (v1.tag === "Just") { + go$a0 = n + 1 | 0; + go$a1 = v1._1 + 1 | 0; + continue; + } + if (v1.tag === "Nothing") { + if (n === 0) { + go$c = false; + go$r = {line: v.line, column: (v.column + Data$dString$dCodePoints.toCodePointArray(str).length | 0) + (colOffset * 2 | 0) | 0}; + continue; + } + go$c = false; + go$r = {line: v.line + n | 0, column: Data$dString$dCodePoints.toCodePointArray(Data$dString$dCodeUnits.drop(ix)(str)).length + colOffset | 0}; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go(0)(0); +}; +const bumpToken = v => v1 => { + if (v1.tag === "TokLeftParen") { return {line: v.line, column: v.column + 1 | 0}; } + if (v1.tag === "TokRightParen") { return {line: v.line, column: v.column + 1 | 0}; } + if (v1.tag === "TokLeftBrace") { return {line: v.line, column: v.column + 1 | 0}; } + if (v1.tag === "TokRightBrace") { return {line: v.line, column: v.column + 1 | 0}; } + if (v1.tag === "TokLeftSquare") { return {line: v.line, column: v.column + 1 | 0}; } + if (v1.tag === "TokRightSquare") { return {line: v.line, column: v.column + 1 | 0}; } + if (v1.tag === "TokLeftArrow") { + if (v1._1.tag === "ASCII") { return {line: v.line, column: v.column + 2 | 0}; } + if (v1._1.tag === "Unicode") { return {line: v.line, column: v.column + 1 | 0}; } + $runtime.fail(); + } + if (v1.tag === "TokRightArrow") { + if (v1._1.tag === "ASCII") { return {line: v.line, column: v.column + 2 | 0}; } + if (v1._1.tag === "Unicode") { return {line: v.line, column: v.column + 1 | 0}; } + $runtime.fail(); + } + if (v1.tag === "TokRightFatArrow") { + if (v1._1.tag === "ASCII") { return {line: v.line, column: v.column + 2 | 0}; } + if (v1._1.tag === "Unicode") { return {line: v.line, column: v.column + 1 | 0}; } + $runtime.fail(); + } + if (v1.tag === "TokDoubleColon") { + if (v1._1.tag === "ASCII") { return {line: v.line, column: v.column + 2 | 0}; } + if (v1._1.tag === "Unicode") { return {line: v.line, column: v.column + 1 | 0}; } + $runtime.fail(); + } + if (v1.tag === "TokForall") { + if (v1._1.tag === "ASCII") { return {line: v.line, column: v.column + 6 | 0}; } + if (v1._1.tag === "Unicode") { return {line: v.line, column: v.column + 1 | 0}; } + $runtime.fail(); + } + if (v1.tag === "TokEquals") { return {line: v.line, column: v.column + 1 | 0}; } + if (v1.tag === "TokPipe") { return {line: v.line, column: v.column + 1 | 0}; } + if (v1.tag === "TokTick") { return {line: v.line, column: v.column + 1 | 0}; } + if (v1.tag === "TokDot") { return {line: v.line, column: v.column + 1 | 0}; } + if (v1.tag === "TokComma") { return {line: v.line, column: v.column + 1 | 0}; } + if (v1.tag === "TokUnderscore") { return {line: v.line, column: v.column + 1 | 0}; } + if (v1.tag === "TokBackslash") { return {line: v.line, column: v.column + 1 | 0}; } + if (v1.tag === "TokAt") { return {line: v.line, column: v.column + 1 | 0}; } + if (v1.tag === "TokLowerName") { + return { + line: v.line, + column: (() => { + if (v1._1.tag === "Nothing") { return v.column + 0 | 0; } + if (v1._1.tag === "Just") { return v.column + (1 + Data$dString$dCodePoints.toCodePointArray(v1._1._1).length | 0) | 0; } + $runtime.fail(); + })() + Data$dString$dCodePoints.toCodePointArray(v1._2).length | 0 + }; + } + if (v1.tag === "TokUpperName") { + return { + line: v.line, + column: (() => { + if (v1._1.tag === "Nothing") { return v.column + 0 | 0; } + if (v1._1.tag === "Just") { return v.column + (1 + Data$dString$dCodePoints.toCodePointArray(v1._1._1).length | 0) | 0; } + $runtime.fail(); + })() + Data$dString$dCodePoints.toCodePointArray(v1._2).length | 0 + }; + } + if (v1.tag === "TokOperator") { + return { + line: v.line, + column: (() => { + if (v1._1.tag === "Nothing") { return v.column + 0 | 0; } + if (v1._1.tag === "Just") { return v.column + (1 + Data$dString$dCodePoints.toCodePointArray(v1._1._1).length | 0) | 0; } + $runtime.fail(); + })() + Data$dString$dCodePoints.toCodePointArray(v1._2).length | 0 + }; + } + if (v1.tag === "TokSymbolName") { + return { + line: v.line, + column: ( + (() => { + if (v1._1.tag === "Nothing") { return v.column + 0 | 0; } + if (v1._1.tag === "Just") { return v.column + (1 + Data$dString$dCodePoints.toCodePointArray(v1._1._1).length | 0) | 0; } + $runtime.fail(); + })() + Data$dString$dCodePoints.toCodePointArray(v1._2).length | 0 + ) + 2 | 0 + }; + } + if (v1.tag === "TokSymbolArrow") { + if (v1._1.tag === "Unicode") { return {line: v.line, column: v.column + 3 | 0}; } + if (v1._1.tag === "ASCII") { return {line: v.line, column: v.column + 4 | 0}; } + $runtime.fail(); + } + if (v1.tag === "TokHole") { return {line: v.line, column: (v.column + Data$dString$dCodePoints.toCodePointArray(v1._1).length | 0) + 1 | 0}; } + if (v1.tag === "TokChar") { return {line: v.line, column: (v.column + Data$dString$dCodePoints.toCodePointArray(v1._1).length | 0) + 2 | 0}; } + if (v1.tag === "TokInt") { return {line: v.line, column: v.column + Data$dString$dCodePoints.toCodePointArray(v1._1).length | 0}; } + if (v1.tag === "TokNumber") { return {line: v.line, column: v.column + Data$dString$dCodePoints.toCodePointArray(v1._1).length | 0}; } + if (v1.tag === "TokString") { return bumpText(v)(1)(v1._1); } + if (v1.tag === "TokRawString") { return bumpText(v)(3)(v1._1); } + if (v1.tag === "TokLayoutStart") { return v; } + if (v1.tag === "TokLayoutSep") { return v; } + if (v1.tag === "TokLayoutEnd") { return v; } + $runtime.fail(); +}; +const bumpComment = v => v1 => { + if (v1.tag === "Comment") { return bumpText(v)(0)(v1._1); } + if (v1.tag === "Space") { return {line: v.line, column: v.column + v1._1 | 0}; } + if (v1.tag === "Line") { return {line: v.line + v1._2 | 0, column: 0}; } + $runtime.fail(); +}; +const applyLex = { + apply: v => v1 => str => { + const v2 = v(str); + if (v2.tag === "LexFail") { return $LexResult("LexFail", v2._1, v2._2); } + if (v2.tag === "LexSucc") { + const v3 = v1(v2._2); + if (v3.tag === "LexFail") { return $LexResult("LexFail", v3._1, v3._2); } + if (v3.tag === "LexSucc") { return $LexResult("LexSucc", v2._1(v3._1), v3._2); } + $runtime.fail(); + } + $runtime.fail(); + }, + Functor0: () => functorLex +}; +const bindLex = { + bind: v => k => str => { + const v1 = v(str); + if (v1.tag === "LexFail") { return $LexResult("LexFail", v1._1, v1._2); } + if (v1.tag === "LexSucc") { return k(v1._1)(v1._2); } + $runtime.fail(); + }, + Apply0: () => applyLex +}; +const altLex = { + alt: v => v1 => str => { + const v2 = v(str); + if (v2.tag === "LexFail") { + if (Data$dString$dCodeUnits.length(str) === Data$dString$dCodeUnits.length(v2._2)) { return v1(str); } + return $LexResult("LexFail", v2._1, v2._2); + } + if (v2.tag === "LexSucc") { return $LexResult("LexSucc", v2._1, v2._2); } + $runtime.fail(); + }, + Functor0: () => functorLex +}; +const comment = /* #__PURE__ */ (() => altLex.alt(regex(PureScript$dCST$dErrors.LexExpected("block comment"))("\\{-(-(?!\\})|[^-]+)*(-\\}|$)"))(regex(PureScript$dCST$dErrors.LexExpected("line comment"))("--[^\\r\\n]*")))(); +const lineComment = /* #__PURE__ */ (() => altLex.alt(functorLex.map((() => { + const $0 = PureScript$dCST$dTypes.Line(PureScript$dCST$dTypes.LF); + return x => $0(Data$dString$dCodePoints.toCodePointArray(x).length); +})())(regex(PureScript$dCST$dErrors.LexExpected("newline"))("\n+")))(functorLex.map((() => { + const $0 = PureScript$dCST$dTypes.Line(PureScript$dCST$dTypes.CRLF); + return x => $0(Data$dEuclideanRing.intDiv(Data$dString$dCodePoints.toCodePointArray(x).length)(2)); +})())(regex(PureScript$dCST$dErrors.LexExpected("newline"))("(?:\r\n)+"))))(); +const leadingComments = /* #__PURE__ */ (() => many(altLex.alt(functorLex.map(PureScript$dCST$dTypes.Comment)(comment))(altLex.alt(functorLex.map(PureScript$dCST$dTypes.Space)(spaceComment))(lineComment))))(); +const token = /* #__PURE__ */ (() => { + const tokenRightParen = char$p(PureScript$dCST$dErrors.LexExpected("right paren"))(PureScript$dCST$dTypes.TokRightParen)(")"); + const tokenLeftParen = char$p(PureScript$dCST$dErrors.LexExpected("left paren"))(PureScript$dCST$dTypes.TokLeftParen)("("); + const stripUnderscores = Data$dString$dCommon.replaceAll("_")(""); + const parseSymbolIdent = regex(PureScript$dCST$dErrors.LexExpected("symbol"))("(?:[:!#$%&*+./<=>?@\\\\^|~-]|(?!\\p{P})\\p{S})+"); + const parseProper = regex(PureScript$dCST$dErrors.LexExpected("proper name"))("\\p{Lu}[\\p{L}0-9_']*"); + const parseIdent = regex(PureScript$dCST$dErrors.LexExpected("ident"))("[\\p{Ll}_][\\p{L}0-9_']*"); + const intPartRegex = regex(PureScript$dCST$dErrors.LexExpected("int part"))("(0|[1-9][0-9_]*)"); + const parseHexEscape = bindLex.bind(regex(PureScript$dCST$dErrors.LexExpected("hex"))("[a-fA-F0-9]{1,6}"))(esc => { + const $8 = Data$dInt.fromStringAs(16)(esc); + if ($8.tag === "Just") { + if ($8._1 >= 0 && $8._1 <= 65535) { return LexSucc({raw: "\\x" + esc, char: Data$dEnum.fromCharCode($8._1)}); } + return LexFail(v => PureScript$dCST$dErrors.$ParseError("LexCharEscapeOutOfRange", esc)); + } + if ($8.tag === "Nothing") { return LexFail(v => PureScript$dCST$dErrors.$ParseError("LexCharEscapeOutOfRange", esc)); } + $runtime.fail(); + }); + const charSingleQuote = $$char(PureScript$dCST$dErrors.LexExpected("single quote"))("'"); + const charQuote = $$char(PureScript$dCST$dErrors.LexExpected("quote"))("\""); + const charAny = satisfy(PureScript$dCST$dErrors.LexExpected("char"))(v => true); + const parseEscape = bindLex.bind(charAny)(ch => { + if (ch === "t") { return LexSucc({raw: "\\t", char: "\t"}); } + if (ch === "r") { return LexSucc({raw: "\\r", char: "\r"}); } + if (ch === "n") { return LexSucc({raw: "\\n", char: "\n"}); } + if (ch === "\"") { return LexSucc({raw: "\\\"", char: "\""}); } + if (ch === "'") { return LexSucc({raw: "\\'", char: "'"}); } + if (ch === "\\") { return LexSucc({raw: "\\\\", char: "\\"}); } + if (ch === "x") { return parseHexEscape; } + const $12 = PureScript$dCST$dErrors.$ParseError("LexInvalidCharEscape", Data$dString$dCodeUnits.singleton(ch)); + return LexFail(v => $12); + }); + return altLex.alt(functorLex.map(v => PureScript$dCST$dTypes.$Token("TokHole", v))($$try(applyLex.apply(functorLex.map(v => Control$dApply.identity)($$char(PureScript$dCST$dErrors.LexExpected("question mark"))("?")))(altLex.alt(parseIdent)(parseProper)))))(altLex.alt(applyLex.apply(functorLex.map(v => v1 => v1(toModuleName(v)))(regex(PureScript$dCST$dErrors.LexExpected("module name"))("(?:(?:\\p{Lu}[\\p{L}0-9_']*)\\.)*")))(altLex.alt(functorLex.map(v => v1 => { + if (v1.tag === "Nothing") { + if (v === "forall") { return PureScript$dCST$dTypes.$Token("TokForall", PureScript$dCST$dTypes.ASCII); } + if (v === "_") { return PureScript$dCST$dTypes.TokUnderscore; } + return PureScript$dCST$dTypes.$Token("TokLowerName", Data$dMaybe.Nothing, v); + } + return PureScript$dCST$dTypes.$Token("TokLowerName", v1, v); + })(parseIdent))(altLex.alt(functorLex.map(b => a => PureScript$dCST$dTypes.$Token("TokUpperName", a, b))(parseProper))(altLex.alt(functorLex.map(v => v1 => { + if (v1.tag === "Nothing") { + if (v === "<-") { return PureScript$dCST$dTypes.$Token("TokLeftArrow", PureScript$dCST$dTypes.ASCII); } + if (v === "←") { return PureScript$dCST$dTypes.$Token("TokLeftArrow", PureScript$dCST$dTypes.Unicode); } + if (v === "->") { return PureScript$dCST$dTypes.$Token("TokRightArrow", PureScript$dCST$dTypes.ASCII); } + if (v === "→") { return PureScript$dCST$dTypes.$Token("TokRightArrow", PureScript$dCST$dTypes.Unicode); } + if (v === "=>") { return PureScript$dCST$dTypes.$Token("TokRightFatArrow", PureScript$dCST$dTypes.ASCII); } + if (v === "⇒") { return PureScript$dCST$dTypes.$Token("TokRightFatArrow", PureScript$dCST$dTypes.Unicode); } + if (v === "::") { return PureScript$dCST$dTypes.$Token("TokDoubleColon", PureScript$dCST$dTypes.ASCII); } + if (v === "∷") { return PureScript$dCST$dTypes.$Token("TokDoubleColon", PureScript$dCST$dTypes.Unicode); } + if (v === "∀") { return PureScript$dCST$dTypes.$Token("TokForall", PureScript$dCST$dTypes.Unicode); } + if (v === "=") { return PureScript$dCST$dTypes.TokEquals; } + if (v === ".") { return PureScript$dCST$dTypes.TokDot; } + if (v === "\\") { return PureScript$dCST$dTypes.TokBackslash; } + if (v === "|") { return PureScript$dCST$dTypes.TokPipe; } + if (v === "@") { return PureScript$dCST$dTypes.TokAt; } + if (v === "`") { return PureScript$dCST$dTypes.TokTick; } + return PureScript$dCST$dTypes.$Token("TokOperator", Data$dMaybe.Nothing, v); + } + return PureScript$dCST$dTypes.$Token("TokOperator", v1, v); + })(parseSymbolIdent))(functorLex.map(v => v1 => { + if (v1.tag === "Nothing") { + if (v === "->") { return PureScript$dCST$dTypes.$Token("TokSymbolArrow", PureScript$dCST$dTypes.ASCII); } + if (v === "→") { return PureScript$dCST$dTypes.$Token("TokSymbolArrow", PureScript$dCST$dTypes.Unicode); } + return PureScript$dCST$dTypes.$Token("TokSymbolName", Data$dMaybe.Nothing, v); + } + return PureScript$dCST$dTypes.$Token("TokSymbolName", v1, v); + })($$try(applyLex.apply(functorLex.map(Data$dFunction.const)(applyLex.apply(functorLex.map(v => Control$dApply.identity)(tokenLeftParen))(parseSymbolIdent)))(tokenRightParen))))))))(altLex.alt(functorLex.map(v => PureScript$dCST$dTypes.$Token( + "TokChar", + v.raw, + v.char + ))(applyLex.apply(functorLex.map(Data$dFunction.const)(applyLex.apply(functorLex.map(v => Control$dApply.identity)(charSingleQuote))(bindLex.bind(charAny)(ch => { + if (ch === "\\") { return parseEscape; } + if (ch === "'") { return LexFail(v => PureScript$dCST$dErrors.$ParseError("LexExpected", "character", "empty character literal")); } + return LexSucc({raw: Data$dString$dCodeUnits.singleton(ch), char: ch}); + }))))(charSingleQuote)))(altLex.alt(altLex.alt(functorLex.map(v => PureScript$dCST$dTypes.$Token( + "TokRawString", + (() => { + const $13 = Data$dString$dCodeUnits.drop(3)(v); + return Data$dString$dCodeUnits.take(Data$dString$dCodeUnits.length($13) - 3 | 0)($13); + })() + ))(regex(PureScript$dCST$dErrors.LexExpected("raw string characters"))("\"\"\"\"{0,2}([^\"]+\"{1,2})*[^\"]*\"\"\"")))(functorLex.map(v => { + const v1 = fold1(v); + return PureScript$dCST$dTypes.$Token("TokString", v1.raw, v1.string); + })(applyLex.apply(functorLex.map(Data$dFunction.const)(applyLex.apply(functorLex.map(v => Control$dApply.identity)(charQuote))(many(altLex.alt(functorLex.map(v => ( + {raw: v, string: v} + ))(regex(PureScript$dCST$dErrors.LexExpected("string characters"))("[^\"\\\\]+")))(altLex.alt(functorLex.map(v => ({raw: v, string: ""}))(regex(PureScript$dCST$dErrors.LexExpected("whitespace escape"))("\\\\[ \\r\\n]+\\\\")))(functorLex.map(v => ( + {raw: v.raw, string: Data$dString$dCodeUnits.singleton(v.char)} + ))(applyLex.apply(functorLex.map(v => Control$dApply.identity)($$char(PureScript$dCST$dErrors.LexExpected("backslash"))("\\")))(parseEscape))))))))(charQuote))))(altLex.alt(altLex.alt(bindLex.bind(applyLex.apply(functorLex.map(v => Control$dApply.identity)(string(PureScript$dCST$dErrors.LexExpected("hex int prefix"))("0x")))(regex(PureScript$dCST$dErrors.LexExpected("hex int"))("[a-fA-F0-9]+")))(raw => { + const v = Data$dInt.fromStringAs(16)(raw); + if (v.tag === "Just") { return LexSucc(PureScript$dCST$dTypes.$Token("TokInt", "0x" + raw, PureScript$dCST$dTypes.$IntValue("SmallInt", v._1))); } + if (v.tag === "Nothing") { return LexSucc(PureScript$dCST$dTypes.$Token("TokInt", "0x" + raw, PureScript$dCST$dTypes.$IntValue("BigHex", raw))); } + $runtime.fail(); + }))(bindLex.bind(intPartRegex)(intPart => bindLex.bind(optional($$try(applyLex.apply(functorLex.map(v => Control$dApply.identity)($$char(PureScript$dCST$dErrors.LexExpected("dot"))(".")))(regex(PureScript$dCST$dErrors.LexExpected("fraction part"))("[0-9_]+")))))(fractionPart => bindLex.bind(optional(applyLex.apply(functorLex.map(v => Control$dApply.identity)($$char(PureScript$dCST$dErrors.LexExpected("exponent"))("e")))(applyLex.apply(functorLex.map(v => v1 => ( + {sign: v, exponent: v1} + ))(optional(altLex.alt(string(PureScript$dCST$dErrors.LexExpected("negative"))("-"))(string(PureScript$dCST$dErrors.LexExpected("positive"))("+")))))(intPartRegex))))(exponentPart => { + if ( + (() => { + if (fractionPart.tag === "Nothing") { return true; } + if (fractionPart.tag === "Just") { return false; } + $runtime.fail(); + })() && (() => { + if (exponentPart.tag === "Nothing") { return true; } + if (exponentPart.tag === "Just") { return false; } + $runtime.fail(); + })() + ) { + const intVal = stripUnderscores(intPart); + const v = Data$dInt.fromString(intVal); + if (v.tag === "Just") { return LexSucc(PureScript$dCST$dTypes.$Token("TokInt", intPart, PureScript$dCST$dTypes.$IntValue("SmallInt", v._1))); } + if (v.tag === "Nothing") { return LexSucc(PureScript$dCST$dTypes.$Token("TokInt", intPart, PureScript$dCST$dTypes.$IntValue("BigInt", intVal))); } + $runtime.fail(); + } + const raw = intPart + ( + (() => { + if (fractionPart.tag === "Nothing") { return ""; } + if (fractionPart.tag === "Just") { return "." + fractionPart._1; } + $runtime.fail(); + })() + (() => { + if (exponentPart.tag === "Nothing") { return ""; } + if (exponentPart.tag === "Just") { + if (exponentPart._1.sign.tag === "Nothing") { return "e" + exponentPart._1.exponent; } + if (exponentPart._1.sign.tag === "Just") { return "e" + (exponentPart._1.sign._1 + exponentPart._1.exponent); } + $runtime.fail(); + } + $runtime.fail(); + })() + ); + const v = Data$dNumber.fromStringImpl(stripUnderscores(raw), Data$dNumber.isFinite, Data$dMaybe.Just, Data$dMaybe.Nothing); + if (v.tag === "Just") { return LexSucc(PureScript$dCST$dTypes.$Token("TokNumber", raw, v._1)); } + if (v.tag === "Nothing") { return LexFail(v$1 => PureScript$dCST$dErrors.$ParseError("LexNumberOutOfRange", raw)); } + $runtime.fail(); + })))))(altLex.alt(tokenLeftParen)(altLex.alt(tokenRightParen)(altLex.alt(char$p(PureScript$dCST$dErrors.LexExpected("left brace"))(PureScript$dCST$dTypes.TokLeftBrace)("{"))(altLex.alt(char$p(PureScript$dCST$dErrors.LexExpected("right brace"))(PureScript$dCST$dTypes.TokRightBrace)("}"))(altLex.alt(char$p(PureScript$dCST$dErrors.LexExpected("left square"))(PureScript$dCST$dTypes.TokLeftSquare)("["))(altLex.alt(char$p(PureScript$dCST$dErrors.LexExpected("right square"))(PureScript$dCST$dTypes.TokRightSquare)("]"))(altLex.alt(char$p(PureScript$dCST$dErrors.LexExpected("backtick"))(PureScript$dCST$dTypes.TokTick)("`"))(char$p(PureScript$dCST$dErrors.LexExpected("comma"))(PureScript$dCST$dTypes.TokComma)(","))))))))))))); +})(); +const lexToken = x => { + const $1 = token(x); + if ($1.tag === "LexSucc") { + if ($1._2 === "") { return Data$dEither.$Either("Right", $1._1); } + return Data$dEither.$Either("Left", v1 => PureScript$dCST$dErrors.$ParseError("ExpectedEof", $1._1)); + } + if ($1.tag === "LexFail") { return Data$dEither.$Either("Left", $1._1); } + $runtime.fail(); +}; +const trailingComments = /* #__PURE__ */ (() => many(altLex.alt(functorLex.map(PureScript$dCST$dTypes.Comment)(comment))(functorLex.map(PureScript$dCST$dTypes.Space)(spaceComment))))(); +const lexWithState = /* #__PURE__ */ (() => { + const go = stack => startPos => leading => str => Data$dLazy.defer(v => { + if (str === "") { + return Data$dLazy.force(PureScript$dCST$dTokenStream.unwindLayout(startPos)(Data$dLazy.defer(v1 => PureScript$dCST$dTokenStream.$TokenStep("TokenEOF", startPos, leading)))(stack)); + } + const v1 = applyLex.apply(applyLex.apply(functorLex.map(v$1 => v1 => v2 => ({token: v$1, trailing: v1, nextLeading: v2}))(token))(trailingComments))(leadingComments)(str); + if (v1.tag === "LexFail") { + return PureScript$dCST$dTokenStream.$TokenStep( + "TokenError", + bumpText(startPos)(0)(Data$dString$dCodeUnits.take(Data$dString$dCodeUnits.length(str) - Data$dString$dCodeUnits.length(v1._2) | 0)(str)), + v1._1(Data$dUnit.unit), + Data$dMaybe.Nothing, + stack + ); + } + if (v1.tag === "LexSucc") { + const endPos = bumpToken(startPos)(v1._1.token); + const nextStart = Data$dFoldable.foldlArray(bumpComment)(Data$dFoldable.foldlArray(bumpComment)(endPos)(v1._1.trailing))(v1._1.nextLeading); + const v2 = PureScript$dCST$dLayout.insertLayout({range: {start: startPos, end: endPos}, leadingComments: leading, trailingComments: v1._1.trailing, value: v1._1.token})(nextStart)(stack); + return Data$dLazy.force(consTokens(v2._2)(Data$dTuple.$Tuple(nextStart, go(v2._1)(nextStart)(v1._1.nextLeading)(v1._2)))._2); + } + $runtime.fail(); + }); + return initStack => initPos => str => Data$dLazy.defer(v => { + const v1 = leadingComments(str); + if (v1.tag === "LexFail") { return Partial._crashWith("Leading comments can't fail."); } + if (v1.tag === "LexSucc") { return Data$dLazy.force(go(initStack)(Data$dFoldable.foldlArray(bumpComment)(initPos)(v1._1))(v1._1)(v1._2)); } + $runtime.fail(); + }); +})(); +const lex = /* #__PURE__ */ lexWithState(/* #__PURE__ */ Data$dList$dTypes.$List( + "Cons", + /* #__PURE__ */ Data$dTuple.$Tuple({line: 0, column: 0}, PureScript$dCST$dLayout.LytRoot), + Data$dList$dTypes.Nil +))({line: 0, column: 0}); +export { + $LexResult, + LexFail, + LexSucc, + altLex, + applyLex, + bindLex, + bumpComment, + bumpText, + bumpToken, + $$char as char, + char$p, + comment, + consTokens, + fold1, + functorLex, + leadingComments, + lex, + lexToken, + lexWithState, + lineComment, + many, + mkUnexpected, + optional, + regex, + satisfy, + spaceComment, + string, + toModuleName, + token, + trailingComments, + $$try as try +}; diff --git a/.storybook/purescript-indexer/output-es/PureScript.CST.ModuleGraph/index.js b/.storybook/purescript-indexer/output-es/PureScript.CST.ModuleGraph/index.js new file mode 100644 index 0000000..f722411 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/PureScript.CST.ModuleGraph/index.js @@ -0,0 +1,174 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dBind from "../Control.Bind/index.js"; +import * as Data$dArray from "../Data.Array/index.js"; +import * as Data$dEither from "../Data.Either/index.js"; +import * as Data$dFoldable from "../Data.Foldable/index.js"; +import * as Data$dFunctor from "../Data.Functor/index.js"; +import * as Data$dList from "../Data.List/index.js"; +import * as Data$dList$dTypes from "../Data.List.Types/index.js"; +import * as Data$dMap$dInternal from "../Data.Map.Internal/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dOrd from "../Data.Ord/index.js"; +import * as Data$dSemigroup from "../Data.Semigroup/index.js"; +import * as Data$dSemiring from "../Data.Semiring/index.js"; +import * as Data$dSet from "../Data.Set/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +import * as Data$dUnfoldable from "../Data.Unfoldable/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +const $ModuleSort = (tag, _1) => ({tag, _1}); +const toUnfoldable1 = /* #__PURE__ */ Data$dSet.toUnfoldable(Data$dUnfoldable.unfoldableArray); +const all = /* #__PURE__ */ (() => Data$dMap$dInternal.foldableMap.foldMap((() => { + const semigroupConj1 = {append: v => v1 => v && v1}; + return {mempty: true, Semigroup0: () => semigroupConj1}; +})()))(); +const fromFoldable = /* #__PURE__ */ Data$dFoldable.foldlArray(m => a => Data$dMap$dInternal.insert(Data$dOrd.ordString)(a)(Data$dUnit.unit)(m))(Data$dMap$dInternal.Leaf); +const fromFoldable1 = /* #__PURE__ */ Data$dMap$dInternal.fromFoldable(Data$dOrd.ordString)(Data$dFoldable.foldableArray); +const toUnfoldable2 = /* #__PURE__ */ Data$dList.toUnfoldable(Data$dUnfoldable.unfoldableArray); +const Sorted = value0 => $ModuleSort("Sorted", value0); +const CycleDetected = value0 => $ModuleSort("CycleDetected", value0); +const topoSort = dictOrd => { + const filterWithKey = Data$dMap$dInternal.filterWithKey(dictOrd); + return graph => { + const importCounts = Data$dMap$dInternal.fromFoldableWith(dictOrd)(Data$dFoldable.foldableArray)(Data$dSemiring.intAdd)(Control$dBind.arrayBind(Data$dMap$dInternal.toUnfoldable(Data$dUnfoldable.unfoldableArray)(graph))(v => Data$dSemigroup.concatArray([ + Data$dTuple.$Tuple(v._1, 0) + ])(Data$dFunctor.arrayMap(a => Data$dTuple.$Tuple(a, 1))(toUnfoldable1(v._2))))); + const depthFirst = v => { + if ( + (() => { + const $6 = Data$dMap$dInternal.lookup(dictOrd)(v.curr)(v.visited); + if ($6.tag === "Nothing") { return false; } + if ($6.tag === "Just") { return true; } + $runtime.fail(); + })() + ) { + return Data$dMaybe.$Maybe("Just", Data$dList$dTypes.$List("Cons", v.curr, v.path)); + } + if ( + (() => { + const $6 = Data$dMap$dInternal.lookup(dictOrd)(v.curr)(graph); + if ($6.tag === "Nothing") { return true; } + if ($6.tag === "Just") { return $6._1.tag === "Leaf"; } + $runtime.fail(); + })() + ) { + return Data$dMaybe.Nothing; + } + const $6 = Data$dMap$dInternal.lookup(dictOrd)(v.curr)(graph); + if ($6.tag === "Just") { + return Data$dSet.foldableSet.foldl(b => a => { + if ( + (() => { + if (b.tag === "Nothing") { return false; } + if (b.tag === "Just") { return true; } + $runtime.fail(); + })() + ) { + return b; + } + return depthFirst({path: Data$dList$dTypes.$List("Cons", v.curr, v.path), visited: Data$dMap$dInternal.insert(dictOrd)(v.curr)(Data$dUnit.unit)(v.visited), curr: a}); + })(Data$dMaybe.Nothing)($6._1); + } + if ($6.tag === "Nothing") { return Data$dMaybe.Nothing; } + $runtime.fail(); + }; + const go = go$a0$copy => { + let go$a0 = go$a0$copy, go$c = true, go$r; + while (go$c) { + const v = go$a0; + const $7 = Data$dMap$dInternal.findMin(v.roots); + const v1 = (() => { + if ($7.tag === "Just") { return Data$dMaybe.$Maybe("Just", $7._1.key); } + return Data$dMaybe.Nothing; + })(); + if (v1.tag === "Nothing") { + if (all($9 => 0 === $9)(v.usages)) { + go$c = false; + go$r = Data$dEither.$Either("Right", {roots: v.roots, sorted: v.sorted, usages: v.usages}); + continue; + } + const detectCycles = Data$dSet.foldableSet.foldl(b => a => { + if ( + (() => { + if (b.tag === "Nothing") { return false; } + if (b.tag === "Just") { return true; } + $runtime.fail(); + })() + ) { + return b; + } + return depthFirst({path: Data$dList$dTypes.Nil, visited: Data$dMap$dInternal.Leaf, curr: a}); + })(Data$dMaybe.Nothing)(Data$dMap$dInternal.functorMap.map(v$1 => Data$dUnit.unit)(filterWithKey(a => count => { + const $11 = Data$dMap$dInternal.lookup(dictOrd)(a)(graph); + return count > 0 && (() => { + if ($11.tag === "Nothing") { return false; } + if ($11.tag === "Just") { return !($11._1.tag === "Leaf"); } + $runtime.fail(); + })(); + })(v.usages))); + if (detectCycles.tag === "Just") { + go$c = false; + go$r = Data$dEither.$Either("Left", detectCycles._1); + continue; + } + if (detectCycles.tag === "Nothing") { + go$c = false; + go$r = Data$dEither.$Either("Left", Data$dList$dTypes.Nil); + continue; + } + $runtime.fail(); + } + if (v1.tag === "Just") { + const $9 = Data$dMap$dInternal.lookup(dictOrd)(v1._1)(graph); + const reachable = (() => { + if ($9.tag === "Nothing") { return Data$dMap$dInternal.Leaf; } + if ($9.tag === "Just") { return $9._1; } + $runtime.fail(); + })(); + const usages$p = Data$dSet.foldableSet.foldl(usages => k => Data$dMap$dInternal.insertWith(dictOrd)(Data$dSemiring.intAdd)(k)(-1)(usages))(v.usages)(reachable); + go$a0 = { + roots: Data$dSet.foldableSet.foldl(roots => curr => { + const $14 = Data$dMap$dInternal.lookup(dictOrd)(curr)(usages$p); + if ($14.tag === "Just") { + if ($14._1 === 0) { return Data$dMap$dInternal.insert(dictOrd)(curr)(Data$dUnit.unit)(roots); } + return roots; + } + if ($14.tag === "Nothing") { return roots; } + $runtime.fail(); + })(Data$dMap$dInternal.delete(dictOrd)(v1._1)(v.roots))(reachable), + sorted: Data$dList$dTypes.$List("Cons", v1._1, v.sorted), + usages: usages$p + }; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + const $6 = go({ + roots: Data$dMap$dInternal.functorMap.map(v => Data$dUnit.unit)(filterWithKey(k => v => v === 0)(importCounts)), + sorted: Data$dList$dTypes.Nil, + usages: importCounts + }); + if ($6.tag === "Left") { return Data$dEither.$Either("Left", $6._1); } + if ($6.tag === "Right") { return Data$dEither.$Either("Right", $6._1.sorted); } + $runtime.fail(); + }; +}; +const topoSort1 = /* #__PURE__ */ topoSort(Data$dOrd.ordString); +const moduleGraph = k => { + const $1 = Data$dFunctor.arrayMap(x => { + const $2 = k(x); + return Data$dTuple.$Tuple($2.name.name, fromFoldable(Data$dFunctor.arrayMap(v => v.module.name)($2.imports))); + }); + return x => fromFoldable1($1(x)); +}; +const sortModules = k => moduleHeaders => { + const knownModuleHeaders = fromFoldable1(Data$dFunctor.arrayMap(a => Data$dTuple.$Tuple(k(a).name.name, a))(moduleHeaders)); + const v = topoSort1(moduleGraph(k)(moduleHeaders)); + if (v.tag === "Left") { + return $ModuleSort("CycleDetected", Data$dArray.mapMaybe(a => Data$dMap$dInternal.lookup(Data$dOrd.ordString)(a)(knownModuleHeaders))(toUnfoldable2(v._1))); + } + if (v.tag === "Right") { return $ModuleSort("Sorted", Data$dArray.mapMaybe(a => Data$dMap$dInternal.lookup(Data$dOrd.ordString)(a)(knownModuleHeaders))(toUnfoldable2(v._1))); } + $runtime.fail(); +}; +export {$ModuleSort, CycleDetected, Sorted, all, fromFoldable, fromFoldable1, moduleGraph, sortModules, toUnfoldable1, toUnfoldable2, topoSort, topoSort1}; diff --git a/.storybook/purescript-indexer/output-es/PureScript.CST.Parser.Monad/index.js b/.storybook/purescript-indexer/output-es/PureScript.CST.Parser.Monad/index.js new file mode 100644 index 0000000..c0a799f --- /dev/null +++ b/.storybook/purescript-indexer/output-es/PureScript.CST.Parser.Monad/index.js @@ -0,0 +1,179 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dST$dInternal from "../Control.Monad.ST.Internal/index.js"; +import * as Data$dArray from "../Data.Array/index.js"; +import * as Data$dArray$dST from "../Data.Array.ST/index.js"; +import * as Data$dEither from "../Data.Either/index.js"; +import * as Data$dLazy from "../Data.Lazy/index.js"; +import * as Data$dList from "../Data.List/index.js"; +import * as Data$dList$dTypes from "../Data.List.Types/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +import * as Data$dUnfoldable from "../Data.Unfoldable/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +import * as PureScript$dCST$dErrors from "../PureScript.CST.Errors/index.js"; +const $ParserResult = (tag, _1, _2) => ({tag, _1, _2}); +const $Trampoline = (tag, _1) => ({tag, _1}); +const toUnfoldable = /* #__PURE__ */ Data$dList.toUnfoldable(Data$dUnfoldable.unfoldableArray); +const More = value0 => $Trampoline("More", value0); +const Done = value0 => $Trampoline("Done", value0); +const ParseFail = value0 => value1 => $ParserResult("ParseFail", value0, value1); +const ParseSucc = value0 => value1 => $ParserResult("ParseSucc", value0, value1); +const lazyParser = { + defer: k => { + const parser = Data$dLazy.defer(k); + return (state, more, resume, done) => Data$dLazy.force(parser)(state, more, resume, done); + } +}; +const functorParser = {map: f => v => (state1, more, resume, done) => v(state1, more, resume, (state2, a) => done(state2, f(a)))}; +const applyParser = { + apply: v => v1 => (state1, more, resume, done) => v(state1, more, resume, (state2, f) => more(v2 => v1(state2, more, resume, (state3, a) => done(state3, f(a))))), + Functor0: () => functorParser +}; +const bindParser = {bind: v => k => (state1, more, resume, done) => v(state1, more, resume, (state2, a) => more(v1 => k(a)(state2, more, resume, done))), Apply0: () => applyParser}; +const applicativeParser = {pure: a => (state1, v, v1, done) => done(state1, a), Apply0: () => applyParser}; +const monadParser = {Applicative0: () => applicativeParser, Bind1: () => bindParser}; +const altParser = { + alt: v => v1 => (state1, more, resume, done) => v( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return v1(state1, more, resume, done); + }, + done + ), + Functor0: () => functorParser +}; +const $$try = v => (state1, more, resume, done) => v( + state1, + more, + (state2, error) => resume({consumed: state1.consumed, errors: state2.errors, stream: state2.stream}, error), + done +); +const take = k => (state, v, resume, done) => { + const v1 = Data$dLazy.force(state.stream); + if (v1.tag === "TokenError") { return resume(state, {error: v1._2, position: v1._1}); } + if (v1.tag === "TokenEOF") { return resume(state, {error: PureScript$dCST$dErrors.UnexpectedEof, position: v1._1}); } + if (v1.tag === "TokenCons") { + const v2 = k(v1._1); + if (v2.tag === "Left") { return resume(state, {error: v2._1, position: v1._1.range.start}); } + if (v2.tag === "Right") { return done({consumed: true, stream: v1._3, errors: state.errors}, v2._1); } + $runtime.fail(); + } + $runtime.fail(); +}; +const runParser$p = state1 => v => { + const run = run$a0$copy => { + let run$a0 = run$a0$copy, run$c = true, run$r; + while (run$c) { + const v1 = run$a0; + if (v1.tag === "More") { + run$a0 = v1._1(Data$dUnit.unit); + continue; + } + if (v1.tag === "Done") { + run$c = false; + run$r = v1._1; + continue; + } + $runtime.fail(); + }; + return run$r; + }; + return run(v( + state1, + More, + (state2, error) => $Trampoline("Done", $ParserResult("ParseFail", error, state2)), + (state2, value) => $Trampoline("Done", $ParserResult("ParseSucc", value, state2)) + )); +}; +const recover = k => v => (state1, more, resume, done) => v( + {consumed: false, errors: state1.errors, stream: state1.stream}, + more, + (state2, error) => { + const v1 = k(error)(state1.stream); + if (v1.tag === "Nothing") { return resume({consumed: state1.consumed, errors: state2.errors, stream: state2.stream}, error); } + if (v1.tag === "Just") { + return done( + {consumed: true, errors: Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([error]))(state2.errors)), stream: v1._1._2}, + v1._1._1 + ); + } + $runtime.fail(); + }, + done +); +const optional = p => (state1, more, resume, done) => p( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return done(state1, Data$dMaybe.Nothing); + }, + (state2, a) => done(state2, Data$dMaybe.$Maybe("Just", a)) +); +const many = v => (state1, more, resume, done) => { + const go = (acc, state2) => v( + (() => { + if (state2.consumed) { return {consumed: false, errors: state2.errors, stream: state2.stream}; } + return state2; + })(), + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return done(state2, Data$dArray.reverse(toUnfoldable(acc))); + }, + (state3, value) => go(Data$dList$dTypes.$List("Cons", value, acc), state3) + ); + return go(Data$dList$dTypes.Nil, state1); +}; +const lookAhead = v => (state1, more, resume, done) => v(state1, more, (v1, error) => resume(state1, error), (v1, value) => done(state1, value)); +const initialParserState = stream => ({consumed: false, errors: [], stream: stream}); +const fromParserResult = v => { + if (v.tag === "ParseFail") { return Data$dEither.$Either("Left", v._1); } + if (v.tag === "ParseSucc") { return Data$dEither.$Either("Right", Data$dTuple.$Tuple(v._1, v._2.errors)); } + $runtime.fail(); +}; +const runParser = stream => x => fromParserResult(runParser$p({consumed: false, errors: [], stream: stream})(x)); +const fail = error => (state, v, resume, v1) => resume(state, error); +const eof = (state, v, resume, done) => { + const v1 = Data$dLazy.force(state.stream); + if (v1.tag === "TokenError") { return resume(state, {error: v1._2, position: v1._1}); } + if (v1.tag === "TokenEOF") { return done({consumed: true, stream: state.stream, errors: state.errors}, Data$dTuple.$Tuple(v1._1, v1._2)); } + if (v1.tag === "TokenCons") { return resume(state, {error: PureScript$dCST$dErrors.$ParseError("ExpectedEof", v1._1.value), position: v1._1.range.start}); } + $runtime.fail(); +}; +export { + $ParserResult, + $Trampoline, + Done, + More, + ParseFail, + ParseSucc, + altParser, + applicativeParser, + applyParser, + bindParser, + eof, + fail, + fromParserResult, + functorParser, + initialParserState, + lazyParser, + lookAhead, + many, + monadParser, + optional, + recover, + runParser, + runParser$p, + take, + toUnfoldable, + $$try as try +}; diff --git a/.storybook/purescript-indexer/output-es/PureScript.CST.Parser/index.js b/.storybook/purescript-indexer/output-es/PureScript.CST.Parser/index.js new file mode 100644 index 0000000..11e7704 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/PureScript.CST.Parser/index.js @@ -0,0 +1,3863 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dST$dInternal from "../Control.Monad.ST.Internal/index.js"; +import * as Data$dArray$dST from "../Data.Array.ST/index.js"; +import * as Data$dEither from "../Data.Either/index.js"; +import * as Data$dFoldable from "../Data.Foldable/index.js"; +import * as Data$dLazy from "../Data.Lazy/index.js"; +import * as Data$dMap$dInternal from "../Data.Map.Internal/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dOrd from "../Data.Ord/index.js"; +import * as Data$dSemigroup from "../Data.Semigroup/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +import * as PureScript$dCST$dErrors from "../PureScript.CST.Errors/index.js"; +import * as PureScript$dCST$dLayout from "../PureScript.CST.Layout/index.js"; +import * as PureScript$dCST$dParser$dMonad from "../PureScript.CST.Parser.Monad/index.js"; +import * as PureScript$dCST$dTokenStream from "../PureScript.CST.TokenStream/index.js"; +import * as PureScript$dCST$dTypes from "../PureScript.CST.Types/index.js"; +const separated = sepParser => valueParser => { + const $2 = PureScript$dCST$dParser$dMonad.many((state1, more, resume, done) => sepParser( + state1, + more, + resume, + (state2, a) => { + const $8 = Data$dTuple.Tuple(a); + return more(v2 => valueParser(state2, more, resume, (state3, a$1) => done(state3, $8(a$1)))); + } + )); + return (state1, more, resume, done) => valueParser(state1, more, resume, (state2, a) => more(v2 => $2(state2, more, resume, (state3, a$1) => done(state3, {head: a, tail: a$1})))); +}; +const reservedKeywords = /* #__PURE__ */ Data$dFoldable.foldlArray(m => a => Data$dMap$dInternal.insert(Data$dOrd.ordString)(a)(Data$dUnit.unit)(m))(Data$dMap$dInternal.Leaf)([ + "ado", + "case", + "class", + "data", + "derive", + "do", + "else", + "false", + "foreign", + "if", + "import", + "in", + "infix", + "infixl", + "infixr", + "instance", + "let", + "module", + "newtype", + "of", + "then", + "true", + "type", + "where" +]); +const recoverTokensWhile = p => initStream => { + const $2 = PureScript$dCST$dLayout.currentIndent(PureScript$dCST$dTokenStream.layoutStack(initStream)); + const indent = (() => { + if ($2.tag === "Nothing") { return 0; } + if ($2.tag === "Just") { return $2._1.column; } + $runtime.fail(); + })(); + 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 acc = go$a0, stream = go$a1; + const v = Data$dLazy.force(stream); + if (v.tag === "TokenError") { + go$c = false; + go$r = Data$dTuple.$Tuple(acc, stream); + continue; + } + if (v.tag === "TokenEOF") { + go$c = false; + go$r = Data$dTuple.$Tuple(acc, stream); + continue; + } + if (v.tag === "TokenCons") { + if (p(v._1)(indent)) { + go$a0 = Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([v._1]))(acc)); + go$a1 = v._3; + continue; + } + go$c = false; + go$r = Data$dTuple.$Tuple(acc, stream); + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go([])(initStream); +}; +const recoverIndent = mkNode => PureScript$dCST$dParser$dMonad.recover(v => stream => { + const v1 = recoverTokensWhile(tok => indent => { + if (tok.value.tag === "TokLayoutEnd") { return tok.value._1 > indent; } + if (tok.value.tag === "TokLayoutSep") { return tok.value._1 > indent; } + return true; + })(stream); + if (v1._1.length === 0) { return Data$dMaybe.Nothing; } + return Data$dMaybe.$Maybe("Just", Data$dTuple.$Tuple(mkNode({position: v.position, error: v.error, tokens: v1._1}), v1._2)); +}); +const parseSmallInt = /* #__PURE__ */ PureScript$dCST$dParser$dMonad.take(v => { + if (v.value.tag === "TokInt") { + if (v.value._2.tag === "SmallInt") { return Data$dEither.$Either("Right", Data$dTuple.$Tuple(v, v.value._2._1)); } + return Data$dEither.$Either("Left", PureScript$dCST$dErrors.$ParseError("LexIntOutOfRange", v.value._1)); + } + return Data$dEither.$Either("Left", PureScript$dCST$dErrors.$ParseError("UnexpectedToken", v.value)); +}); +const many1 = parser => (state1, more, resume, done) => parser( + state1, + more, + resume, + (state2, a) => more(v2 => PureScript$dCST$dParser$dMonad.many(parser)(state2, more, resume, (state3, a$1) => done(state3, Data$dSemigroup.concatArray([a])(a$1)))) +); +const expectMap = k => PureScript$dCST$dParser$dMonad.take(tok => { + const v = k(tok); + if (v.tag === "Just") { return Data$dEither.$Either("Right", v._1); } + if (v.tag === "Nothing") { return Data$dEither.$Either("Left", PureScript$dCST$dErrors.$ParseError("UnexpectedToken", tok.value)); } + $runtime.fail(); +}); +const parseBoolean = /* #__PURE__ */ expectMap(v => { + if (v.value.tag === "TokLowerName") { + if (v.value._1.tag === "Nothing") { + if (v.value._2 === "true") { return Data$dMaybe.$Maybe("Just", Data$dTuple.$Tuple(v, true)); } + if (v.value._2 === "false") { return Data$dMaybe.$Maybe("Just", Data$dTuple.$Tuple(v, false)); } + return Data$dMaybe.Nothing; + } + return Data$dMaybe.Nothing; + } + return Data$dMaybe.Nothing; +}); +const parseChar = /* #__PURE__ */ expectMap(v => { + if (v.value.tag === "TokChar") { return Data$dMaybe.$Maybe("Just", Data$dTuple.$Tuple(v, v.value._2)); } + return Data$dMaybe.Nothing; +}); +const parseHole = /* #__PURE__ */ expectMap(v => { + if (v.value.tag === "TokHole") { return Data$dMaybe.$Maybe("Just", {token: v, name: v.value._1}); } + return Data$dMaybe.Nothing; +}); +const parseIdent = /* #__PURE__ */ expectMap(v => { + if (v.value.tag === "TokLowerName") { + if (v.value._1.tag === "Nothing") { + if ( + (() => { + const $1 = Data$dMap$dInternal.lookup(Data$dOrd.ordString)(v.value._2)(reservedKeywords); + if ($1.tag === "Nothing") { return true; } + if ($1.tag === "Just") { return false; } + $runtime.fail(); + })() + ) { + return Data$dMaybe.$Maybe("Just", {token: v, name: v.value._2}); + } + return Data$dMaybe.Nothing; + } + return Data$dMaybe.Nothing; + } + return Data$dMaybe.Nothing; +}); +const parseInt = /* #__PURE__ */ expectMap(v => { + if (v.value.tag === "TokInt") { return Data$dMaybe.$Maybe("Just", Data$dTuple.$Tuple(v, v.value._2)); } + return Data$dMaybe.Nothing; +}); +const parseLabel = /* #__PURE__ */ expectMap(v => { + if (v.value.tag === "TokRawString") { return Data$dMaybe.$Maybe("Just", {token: v, name: v.value._1}); } + if (v.value.tag === "TokString") { return Data$dMaybe.$Maybe("Just", {token: v, name: v.value._2}); } + if (v.value.tag === "TokLowerName") { + if (v.value._1.tag === "Nothing") { return Data$dMaybe.$Maybe("Just", {token: v, name: v.value._2}); } + return Data$dMaybe.Nothing; + } + return Data$dMaybe.Nothing; +}); +const parseModuleName = /* #__PURE__ */ expectMap(v => { + if (v.value.tag === "TokUpperName") { + if (v.value._1.tag === "Just") { return Data$dMaybe.$Maybe("Just", {token: v, name: v.value._1._1 + ("." + v.value._2)}); } + if (v.value._1.tag === "Nothing") { return Data$dMaybe.$Maybe("Just", {token: v, name: v.value._2}); } + return Data$dMaybe.Nothing; + } + return Data$dMaybe.Nothing; +}); +const parseNumber = /* #__PURE__ */ expectMap(v => { + if (v.value.tag === "TokNumber") { return Data$dMaybe.$Maybe("Just", Data$dTuple.$Tuple(v, v.value._2)); } + return Data$dMaybe.Nothing; +}); +const parseOperator = /* #__PURE__ */ expectMap(v => { + if (v.value.tag === "TokOperator") { + if (v.value._1.tag === "Nothing") { return Data$dMaybe.$Maybe("Just", {token: v, name: v.value._2}); } + return Data$dMaybe.Nothing; + } + return Data$dMaybe.Nothing; +}); +const parseProper = /* #__PURE__ */ expectMap(v => { + if (v.value.tag === "TokUpperName") { + if (v.value._1.tag === "Nothing") { return Data$dMaybe.$Maybe("Just", {token: v, name: v.value._2}); } + return Data$dMaybe.Nothing; + } + return Data$dMaybe.Nothing; +}); +const parseQualifiedIdent = /* #__PURE__ */ expectMap(v => { + if (v.value.tag === "TokLowerName") { + if ( + (() => { + const $1 = Data$dMap$dInternal.lookup(Data$dOrd.ordString)(v.value._2)(reservedKeywords); + if ($1.tag === "Nothing") { return true; } + if ($1.tag === "Just") { return false; } + $runtime.fail(); + })() + ) { + return Data$dMaybe.$Maybe("Just", {token: v, module: v.value._1, name: v.value._2}); + } + return Data$dMaybe.Nothing; + } + return Data$dMaybe.Nothing; +}); +const parseQualifiedIdentOrProper = /* #__PURE__ */ expectMap(v => { + if (v.value.tag === "TokLowerName") { return Data$dMaybe.$Maybe("Just", {token: v, module: v.value._1, name: Data$dEither.$Either("Left", v.value._2)}); } + if (v.value.tag === "TokUpperName") { return Data$dMaybe.$Maybe("Just", {token: v, module: v.value._1, name: Data$dEither.$Either("Right", v.value._2)}); } + return Data$dMaybe.Nothing; +}); +const parseQualifiedOperator = /* #__PURE__ */ expectMap(v => { + if (v.value.tag === "TokOperator") { return Data$dMaybe.$Maybe("Just", {token: v, module: v.value._1, name: v.value._2}); } + return Data$dMaybe.Nothing; +}); +const parseQualifiedProper = /* #__PURE__ */ expectMap(v => { + if (v.value.tag === "TokUpperName") { return Data$dMaybe.$Maybe("Just", {token: v, module: v.value._1, name: v.value._2}); } + return Data$dMaybe.Nothing; +}); +const parseQualifiedSymbol = /* #__PURE__ */ expectMap(v => { + if (v.value.tag === "TokSymbolName") { return Data$dMaybe.$Maybe("Just", {token: v, module: v.value._1, name: v.value._2}); } + return Data$dMaybe.Nothing; +}); +const parseString = /* #__PURE__ */ expectMap(v => { + if (v.value.tag === "TokString") { return Data$dMaybe.$Maybe("Just", Data$dTuple.$Tuple(v, v.value._2)); } + if (v.value.tag === "TokRawString") { return Data$dMaybe.$Maybe("Just", Data$dTuple.$Tuple(v, v.value._1)); } + return Data$dMaybe.Nothing; +}); +const parseSymbol = /* #__PURE__ */ expectMap(v => { + if (v.value.tag === "TokSymbolName") { + if (v.value._1.tag === "Nothing") { return Data$dMaybe.$Maybe("Just", {token: v, name: v.value._2}); } + return Data$dMaybe.Nothing; + } + return Data$dMaybe.Nothing; +}); +const expect = pred => expectMap(tok => { + if (pred(tok.value)) { return Data$dMaybe.$Maybe("Just", tok); } + return Data$dMaybe.Nothing; +}); +const tokAt = /* #__PURE__ */ expect(v => v.tag === "TokAt"); +const tokBackslash = /* #__PURE__ */ expect(v => v.tag === "TokBackslash"); +const tokComma = /* #__PURE__ */ expect(v => v.tag === "TokComma"); +const tokDot = /* #__PURE__ */ expect(v => v.tag === "TokDot"); +const parseRecordAccessor = expr => (state1, more, resume, done) => tokDot( + state1, + more, + resume, + (state2, a) => more(v1 => separated(tokDot)(parseLabel)( + state2, + more, + resume, + (state2$1, a$1) => more(v1$1 => done(state2$1, PureScript$dCST$dTypes.$Expr("ExprRecordAccessor", {expr: expr, dot: a, path: a$1}))) + )) +); +const tokDoubleColon = /* #__PURE__ */ expect(v => v.tag === "TokDoubleColon"); +const parseInstanceName = (state1, more, resume, done) => parseIdent( + state1, + more, + resume, + (state2, a) => { + const $6 = Data$dTuple.Tuple(a); + return more(v2 => tokDoubleColon(state2, more, resume, (state3, a$1) => done(state3, $6(a$1)))); + } +); +const tokEquals = /* #__PURE__ */ expect(v => v.tag === "TokEquals"); +const tokForall = /* #__PURE__ */ expect(v => v.tag === "TokForall"); +const tokKeyOperator = sym => expect(v => { + if (v.tag === "TokOperator") { + if (v._1.tag === "Nothing") { return sym === v._2; } + return false; + } + return false; +}); +const parseBinderNegative = (state1, more, resume, done) => tokKeyOperator("-")( + state1, + more, + resume, + (state2, a) => more(v1 => { + const $7 = PureScript$dCST$dTypes.BinderInt(Data$dMaybe.$Maybe("Just", a)); + const $8 = PureScript$dCST$dTypes.BinderNumber(Data$dMaybe.$Maybe("Just", a)); + return parseInt( + (() => { + if (state2.consumed) { return {consumed: false, errors: state2.errors, stream: state2.stream}; } + return state2; + })(), + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return parseNumber(state2, more, resume, (state2$1, a$1) => done(state2$1, $8(a$1._1)(a$1._2))); + }, + (state2$1, a$1) => done(state2$1, $7(a$1._1)(a$1._2)) + ); + }) +); +const parseRecordLabeled = valueParser => (state1, more, resume, done) => { + const $5 = (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return parseIdent(state1, more, resume, (state2, a) => done(state2, PureScript$dCST$dTypes.$RecordLabeled("RecordPun", a))); + }; + const $6 = (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(); + return parseLabel( + $6, + more, + (state2, error) => $5({consumed: $6.consumed, errors: state2.errors, stream: state2.stream}, error), + (state2, a) => { + const $9 = Data$dTuple.Tuple(a); + return more(v2 => tokKeyOperator(":")( + state2, + more, + (state2$1, error) => $5({consumed: $6.consumed, errors: state2$1.errors, stream: state2$1.stream}, error), + (state3, a$1) => { + const $13 = $9(a$1); + const $14 = PureScript$dCST$dTypes.RecordField($13._1)($13._2); + return more(v2$1 => valueParser(state3, more, $5, (state3$1, a$2) => done(state3$1, $14(a$2)))); + } + )); + } + ); +}; +const parseTypeNegative = (state1, more, resume, done) => tokKeyOperator("-")( + state1, + more, + resume, + (state2, a) => more(v1 => { + const $7 = PureScript$dCST$dTypes.TypeInt(Data$dMaybe.$Maybe("Just", a)); + return parseInt(state2, more, resume, (state2$1, a$1) => done(state2$1, $7(a$1._1)(a$1._2))); + }) +); +const tokKeySymbol = sym => expect(v => { + if (v.tag === "TokSymbolName") { + if (v._1.tag === "Nothing") { return sym === v._2; } + return false; + } + return false; +}); +const tokKeyword = kw => expect(v => { + if (v.tag === "TokLowerName") { + if (v._1.tag === "Nothing") { return kw === v._2; } + return false; + } + return false; +}); +const parseFixityKeyword = (state1, more, resume, done) => tokKeyword("infix")( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return tokKeyword("infixl")( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$1, error$1) => { + if (state3$1.consumed) { return resume(state3$1, error$1); } + return tokKeyword("infixr")(state1, more, resume, (state2, a) => done(state2, Data$dTuple.$Tuple(a, PureScript$dCST$dTypes.Infixr))); + }, + (state2, a) => done(state2, Data$dTuple.$Tuple(a, PureScript$dCST$dTypes.Infixl)) + ); + }, + (state2, a) => done(state2, Data$dTuple.$Tuple(a, PureScript$dCST$dTypes.Infix)) +); +const parseFixityOp = (state1, more, resume, done) => tokKeyword("type")( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return parseQualifiedIdentOrProper( + state1, + more, + resume, + (state2, a) => { + const $8 = PureScript$dCST$dTypes.FixityValue(a); + return more(v2 => tokKeyword("as")( + state2, + more, + resume, + (state3$1, a$1) => { + const $12 = $8(a$1); + return more(v2$1 => parseOperator(state3$1, more, resume, (state3$2, a$2) => done(state3$2, $12(a$2)))); + } + )); + } + ); + }, + (state2, a) => { + const $6 = PureScript$dCST$dTypes.FixityType(a); + return more(v2 => parseQualifiedProper( + state2, + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return parseQualifiedIdentOrProper( + state1, + more, + resume, + (state2$1, a$1) => { + const $12 = PureScript$dCST$dTypes.FixityValue(a$1); + return more(v2$1 => tokKeyword("as")( + state2$1, + more, + resume, + (state3$1, a$2) => { + const $16 = $12(a$2); + return more(v2$2 => parseOperator(state3$1, more, resume, (state3$2, a$3) => done(state3$2, $16(a$3)))); + } + )); + } + ); + }, + (state3, a$1) => { + const $10 = $6(a$1); + return more(v2$1 => tokKeyword("as")( + state3, + more, + (state3$1, error) => { + if (state3$1.consumed) { return resume(state3$1, error); } + return parseQualifiedIdentOrProper( + state1, + more, + resume, + (state2$1, a$2) => { + const $16 = PureScript$dCST$dTypes.FixityValue(a$2); + return more(v2$2 => tokKeyword("as")( + state2$1, + more, + resume, + (state3$2, a$3) => { + const $20 = $16(a$3); + return more(v2$3 => parseOperator(state3$2, more, resume, (state3$3, a$4) => done(state3$3, $20(a$4)))); + } + )); + } + ); + }, + (state3$1, a$2) => { + const $14 = $10(a$2); + return more(v2$2 => parseOperator( + state3$1, + more, + (state3$2, error) => { + if (state3$2.consumed) { return resume(state3$2, error); } + return parseQualifiedIdentOrProper( + state1, + more, + resume, + (state2$1, a$3) => { + const $20 = PureScript$dCST$dTypes.FixityValue(a$3); + return more(v2$3 => tokKeyword("as")( + state2$1, + more, + resume, + (state3$3, a$4) => { + const $24 = $20(a$4); + return more(v2$4 => parseOperator(state3$3, more, resume, (state3$4, a$5) => done(state3$4, $24(a$5)))); + } + )); + } + ); + }, + (state3$2, a$3) => done(state3$2, $14(a$3)) + )); + } + )); + } + )); + } +); +const parseDeclFixity = (state1, more, resume, done) => parseFixityKeyword( + state1, + more, + resume, + (state2, a) => more(v1 => parseSmallInt( + state2, + more, + resume, + (state2$1, a$1) => more(v1$1 => parseFixityOp( + state2$1, + more, + resume, + (state2$2, a$2) => more(v1$2 => done(state2$2, PureScript$dCST$dTypes.$Declaration("DeclFixity", {keyword: a, prec: a$1, operator: a$2}))) + )) + )) +); +const parseForeignKind = (state1, more, resume, done) => tokKeyword("kind")( + state1, + more, + (state2, error) => resume({consumed: state1.consumed, errors: state2.errors, stream: state2.stream}, error), + (state2, a) => { + const $6 = PureScript$dCST$dTypes.ForeignKind(a); + return more(v2 => parseProper( + state2, + more, + (state2$1, error) => resume({consumed: state1.consumed, errors: state2$1.errors, stream: state2$1.stream}, error), + (state3, a$1) => done(state3, $6(a$1)) + )); + } +); +const parseRole = (state1, more, resume, done) => tokKeyword("representational")( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return tokKeyword("nominal")( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$1, error$1) => { + if (state3$1.consumed) { return resume(state3$1, error$1); } + return tokKeyword("phantom")(state1, more, resume, (state2, a) => done(state2, Data$dTuple.$Tuple(a, PureScript$dCST$dTypes.Phantom))); + }, + (state2, a) => done(state2, Data$dTuple.$Tuple(a, PureScript$dCST$dTypes.Nominal)) + ); + }, + (state2, a) => done(state2, Data$dTuple.$Tuple(a, PureScript$dCST$dTypes.Representational)) +); +const parseDeclRole = keyword1 => (state1, more, resume, done) => tokKeyword("role")( + state1, + more, + resume, + (state2, a) => more(v1 => parseProper( + state2, + more, + resume, + (state2$1, a$1) => more(v1$1 => many1(parseRole)( + state2$1, + more, + resume, + (state2$2, a$2) => more(v1$2 => done(state2$2, PureScript$dCST$dTypes.$Declaration("DeclRole", keyword1, a, a$1, a$2))) + )) + )) +); +const tokLayoutEnd = /* #__PURE__ */ expect(v => v.tag === "TokLayoutEnd"); +const tokLayoutSep = /* #__PURE__ */ expect(v => v.tag === "TokLayoutSep"); +const parseInstanceChainSeparator = (state1, more, resume, done) => tokKeyword("else")( + state1, + more, + resume, + (state2, a) => more(v2 => PureScript$dCST$dParser$dMonad.optional(tokLayoutSep)(state2, more, resume, (state3, a$1) => done(state3, a))) +); +const tokLayoutStart = /* #__PURE__ */ expect(v => v.tag === "TokLayoutStart"); +const layout = valueParser => (state1, more, resume, done) => tokLayoutStart( + state1, + more, + resume, + (state2, a) => more(v2 => valueParser( + (() => { + if (state2.consumed) { return {consumed: false, errors: state2.errors, stream: state2.stream}; } + return state2; + })(), + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return more(v2$1 => tokLayoutEnd(state2, more, resume, (state3$1, a$1) => done(state3$1, []))); + }, + (state2$1, a$1) => more(v1 => PureScript$dCST$dParser$dMonad.many((state1$1, more$1, resume$1, done$1) => tokLayoutSep( + state1$1, + more$1, + resume$1, + (state2$2, a$2) => more$1(v2$1 => valueParser(state2$2, more$1, resume$1, (state3, a$3) => done$1(state3, a$3))) + ))( + state2$1, + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return more(v2$1 => tokLayoutEnd(state2, more, resume, (state3$1, a$2) => done(state3$1, []))); + }, + (state2$2, a$2) => { + const $13 = Data$dSemigroup.concatArray([a$1])(a$2); + return more(v2$1 => tokLayoutEnd(state2$2, more, resume, (state3, a$3) => done(state3, $13))); + } + )) + )) +); +const layoutNonEmpty = valueParser => { + const $1 = PureScript$dCST$dParser$dMonad.many((state1, more, resume, done) => tokLayoutSep( + state1, + more, + resume, + (state2, a) => more(v2 => valueParser(state2, more, resume, (state3, a$1) => done(state3, a$1))) + )); + return (state1, more, resume, done) => tokLayoutStart( + state1, + more, + resume, + (state2, a) => more(v2 => valueParser( + state2, + more, + resume, + (state3, a$1) => more(v2$1 => $1( + state3, + more, + resume, + (state2$1, a$2) => more(v2$2 => tokLayoutEnd(state2$1, more, resume, (state3$1, a$3) => done(state3$1, Data$dSemigroup.concatArray([a$1])(a$2)))) + )) + )) + ); +}; +const tokLeftArrow = /* #__PURE__ */ expect(v => v.tag === "TokLeftArrow"); +const tokLeftBrace = /* #__PURE__ */ expect(v => v.tag === "TokLeftBrace"); +const tokLeftFatArrow = /* #__PURE__ */ expect(v => { + if (v.tag === "TokOperator") { + if (v._1.tag === "Nothing") { return v._2 === "<=" || v._2 === "⇐"; } + return false; + } + return false; +}); +const tokLeftParen = /* #__PURE__ */ expect(v => v.tag === "TokLeftParen"); +const tokLeftSquare = /* #__PURE__ */ expect(v => v.tag === "TokLeftSquare"); +const tokPipe = /* #__PURE__ */ expect(v => v.tag === "TokPipe"); +const tokQualifiedKeyword = kw => expect(v => { + if (v.tag === "TokLowerName") { return kw === v._2; } + return false; +}); +const tokRightArrow = /* #__PURE__ */ expect(v => v.tag === "TokRightArrow"); +const parseFundep = (state1, more, resume, done) => { + const $4 = (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return many1(parseIdent)( + state1, + more, + resume, + (state2, a) => { + const $8 = PureScript$dCST$dTypes.FundepDetermines(a); + return more(v2 => tokRightArrow( + state2, + more, + resume, + (state3$1, a$1) => { + const $12 = $8(a$1); + return more(v2$1 => many1(parseIdent)(state3$1, more, resume, (state3$2, a$2) => done(state3$2, $12(a$2)))); + } + )); + } + ); + }; + return tokRightArrow( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + $4, + (state2, a) => { + const $7 = PureScript$dCST$dTypes.FundepDetermined(a); + return more(v2 => many1(parseIdent)(state2, more, $4, (state3, a$1) => done(state3, $7(a$1)))); + } + ); +}; +const tokRightBrace = /* #__PURE__ */ expect(v => v.tag === "TokRightBrace"); +const tokRightFatArrow = /* #__PURE__ */ expect(v => v.tag === "TokRightFatArrow"); +const tokRightParen = /* #__PURE__ */ expect(v => v.tag === "TokRightParen"); +const parens = valueParser => (state1, more, resume, done) => tokLeftParen( + state1, + more, + resume, + (state2, a) => more(v1 => valueParser( + state2, + more, + resume, + (state2$1, a$1) => more(v1$1 => tokRightParen(state2$1, more, resume, (state2$2, a$2) => more(v1$2 => done(state2$2, {open: a, value: a$1, close: a$2})))) + )) +); +const parseEmptyRow = open => (state1, more, resume, done) => tokRightParen( + state1, + more, + resume, + (state2, a) => more(v1 => done(state2, PureScript$dCST$dTypes.$Type("TypeRow", {open: open, value: {labels: Data$dMaybe.Nothing, tail: Data$dMaybe.Nothing}, close: a}))) +); +const tokRightSquare = /* #__PURE__ */ expect(v => v.tag === "TokRightSquare"); +const tokSymbolArrow = /* #__PURE__ */ expect(v => v.tag === "TokSymbolArrow"); +const tokTick = /* #__PURE__ */ expect(v => v.tag === "TokTick"); +const tokUnderscore = /* #__PURE__ */ expect(v => v.tag === "TokUnderscore"); +const delimited = openTok => closeTok => sepTok => valueParser => (state1, more, resume, done) => openTok( + state1, + more, + resume, + (state2, a) => more(v1 => { + const $11 = separated(sepTok)(valueParser); + return closeTok( + (() => { + if (state2.consumed) { return {consumed: false, errors: state2.errors, stream: state2.stream}; } + return state2; + })(), + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return $11( + state2, + more, + resume, + (state2$1, a$1) => more(v2 => closeTok(state2$1, more, resume, (state3$1, a$2) => done(state3$1, {open: a, value: Data$dMaybe.$Maybe("Just", a$1), close: a$2}))) + ); + }, + (state2$1, a$1) => done(state2$1, {open: a, value: Data$dMaybe.Nothing, close: a$1}) + ); + }) +); +const parseDataMembers = (state1, more, resume, done) => tokKeySymbol("..")( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return delimited(tokLeftParen)(tokRightParen)(tokComma)(parseProper)( + state1, + more, + resume, + (state2, a) => done(state2, PureScript$dCST$dTypes.$DataMembers("DataEnumerated", a)) + ); + }, + (state2, a) => done(state2, PureScript$dCST$dTypes.$DataMembers("DataAll", a)) +); +const parseExport = (state1, more, resume, done) => tokKeyword("type")( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return tokKeyword("class")( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$1, error$1) => { + if (state3$1.consumed) { return resume(state3$1, error$1); } + return tokKeyword("module")( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$2, error$2) => { + if (state3$2.consumed) { return resume(state3$2, error$2); } + return parseSymbol( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$3, error$3) => { + if (state3$3.consumed) { return resume(state3$3, error$3); } + return parseIdent( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$4, error$4) => { + if (state3$4.consumed) { return resume(state3$4, error$4); } + return parseProper( + state1, + more, + resume, + (state2, a) => { + const $16 = PureScript$dCST$dTypes.ExportType(a); + return more(v2 => PureScript$dCST$dParser$dMonad.optional(parseDataMembers)(state2, more, resume, (state3$5, a$1) => done(state3$5, $16(a$1)))); + } + ); + }, + (state2, a) => done(state2, PureScript$dCST$dTypes.$Export("ExportValue", a)) + ); + }, + (state2, a) => done(state2, PureScript$dCST$dTypes.$Export("ExportOp", a)) + ); + }, + (state2, a) => { + const $10 = PureScript$dCST$dTypes.ExportModule(a); + return more(v2 => parseModuleName( + state2, + more, + (state3$2, error$2) => { + if (state3$2.consumed) { return resume(state3$2, error$2); } + return parseSymbol( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$3, error$3) => { + if (state3$3.consumed) { return resume(state3$3, error$3); } + return parseIdent( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$4, error$4) => { + if (state3$4.consumed) { return resume(state3$4, error$4); } + return parseProper( + state1, + more, + resume, + (state2$1, a$1) => { + const $20 = PureScript$dCST$dTypes.ExportType(a$1); + return more(v2$1 => PureScript$dCST$dParser$dMonad.optional(parseDataMembers)(state2$1, more, resume, (state3$5, a$2) => done(state3$5, $20(a$2)))); + } + ); + }, + (state2$1, a$1) => done(state2$1, PureScript$dCST$dTypes.$Export("ExportValue", a$1)) + ); + }, + (state2$1, a$1) => done(state2$1, PureScript$dCST$dTypes.$Export("ExportOp", a$1)) + ); + }, + (state3$2, a$1) => done(state3$2, $10(a$1)) + )); + } + ); + }, + (state2, a) => { + const $8 = PureScript$dCST$dTypes.ExportClass(a); + return more(v2 => parseProper( + state2, + more, + (state3$1, error$1) => { + if (state3$1.consumed) { return resume(state3$1, error$1); } + return tokKeyword("module")( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$2, error$2) => { + if (state3$2.consumed) { return resume(state3$2, error$2); } + return parseSymbol( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$3, error$3) => { + if (state3$3.consumed) { return resume(state3$3, error$3); } + return parseIdent( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$4, error$4) => { + if (state3$4.consumed) { return resume(state3$4, error$4); } + return parseProper( + state1, + more, + resume, + (state2$1, a$1) => { + const $20 = PureScript$dCST$dTypes.ExportType(a$1); + return more(v2$1 => PureScript$dCST$dParser$dMonad.optional(parseDataMembers)(state2$1, more, resume, (state3$5, a$2) => done(state3$5, $20(a$2)))); + } + ); + }, + (state2$1, a$1) => done(state2$1, PureScript$dCST$dTypes.$Export("ExportValue", a$1)) + ); + }, + (state2$1, a$1) => done(state2$1, PureScript$dCST$dTypes.$Export("ExportOp", a$1)) + ); + }, + (state2$1, a$1) => { + const $14 = PureScript$dCST$dTypes.ExportModule(a$1); + return more(v2$1 => parseModuleName( + state2$1, + more, + (state3$2, error$2) => { + if (state3$2.consumed) { return resume(state3$2, error$2); } + return parseSymbol( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$3, error$3) => { + if (state3$3.consumed) { return resume(state3$3, error$3); } + return parseIdent( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$4, error$4) => { + if (state3$4.consumed) { return resume(state3$4, error$4); } + return parseProper( + state1, + more, + resume, + (state2$2, a$2) => { + const $24 = PureScript$dCST$dTypes.ExportType(a$2); + return more(v2$2 => PureScript$dCST$dParser$dMonad.optional(parseDataMembers)(state2$2, more, resume, (state3$5, a$3) => done(state3$5, $24(a$3)))); + } + ); + }, + (state2$2, a$2) => done(state2$2, PureScript$dCST$dTypes.$Export("ExportValue", a$2)) + ); + }, + (state2$2, a$2) => done(state2$2, PureScript$dCST$dTypes.$Export("ExportOp", a$2)) + ); + }, + (state3$2, a$2) => done(state3$2, $14(a$2)) + )); + } + ); + }, + (state3$1, a$1) => done(state3$1, $8(a$1)) + )); + } + ); + }, + (state2, a) => { + const $6 = PureScript$dCST$dTypes.ExportTypeOp(a); + return more(v2 => parseSymbol( + state2, + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return tokKeyword("class")( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$1, error$1) => { + if (state3$1.consumed) { return resume(state3$1, error$1); } + return tokKeyword("module")( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$2, error$2) => { + if (state3$2.consumed) { return resume(state3$2, error$2); } + return parseSymbol( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$3, error$3) => { + if (state3$3.consumed) { return resume(state3$3, error$3); } + return parseIdent( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$4, error$4) => { + if (state3$4.consumed) { return resume(state3$4, error$4); } + return parseProper( + state1, + more, + resume, + (state2$1, a$1) => { + const $20 = PureScript$dCST$dTypes.ExportType(a$1); + return more(v2$1 => PureScript$dCST$dParser$dMonad.optional(parseDataMembers)(state2$1, more, resume, (state3$5, a$2) => done(state3$5, $20(a$2)))); + } + ); + }, + (state2$1, a$1) => done(state2$1, PureScript$dCST$dTypes.$Export("ExportValue", a$1)) + ); + }, + (state2$1, a$1) => done(state2$1, PureScript$dCST$dTypes.$Export("ExportOp", a$1)) + ); + }, + (state2$1, a$1) => { + const $14 = PureScript$dCST$dTypes.ExportModule(a$1); + return more(v2$1 => parseModuleName( + state2$1, + more, + (state3$2, error$2) => { + if (state3$2.consumed) { return resume(state3$2, error$2); } + return parseSymbol( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$3, error$3) => { + if (state3$3.consumed) { return resume(state3$3, error$3); } + return parseIdent( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$4, error$4) => { + if (state3$4.consumed) { return resume(state3$4, error$4); } + return parseProper( + state1, + more, + resume, + (state2$2, a$2) => { + const $24 = PureScript$dCST$dTypes.ExportType(a$2); + return more(v2$2 => PureScript$dCST$dParser$dMonad.optional(parseDataMembers)(state2$2, more, resume, (state3$5, a$3) => done(state3$5, $24(a$3)))); + } + ); + }, + (state2$2, a$2) => done(state2$2, PureScript$dCST$dTypes.$Export("ExportValue", a$2)) + ); + }, + (state2$2, a$2) => done(state2$2, PureScript$dCST$dTypes.$Export("ExportOp", a$2)) + ); + }, + (state3$2, a$2) => done(state3$2, $14(a$2)) + )); + } + ); + }, + (state2$1, a$1) => { + const $12 = PureScript$dCST$dTypes.ExportClass(a$1); + return more(v2$1 => parseProper( + state2$1, + more, + (state3$1, error$1) => { + if (state3$1.consumed) { return resume(state3$1, error$1); } + return tokKeyword("module")( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$2, error$2) => { + if (state3$2.consumed) { return resume(state3$2, error$2); } + return parseSymbol( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$3, error$3) => { + if (state3$3.consumed) { return resume(state3$3, error$3); } + return parseIdent( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$4, error$4) => { + if (state3$4.consumed) { return resume(state3$4, error$4); } + return parseProper( + state1, + more, + resume, + (state2$2, a$2) => { + const $24 = PureScript$dCST$dTypes.ExportType(a$2); + return more(v2$2 => PureScript$dCST$dParser$dMonad.optional(parseDataMembers)(state2$2, more, resume, (state3$5, a$3) => done(state3$5, $24(a$3)))); + } + ); + }, + (state2$2, a$2) => done(state2$2, PureScript$dCST$dTypes.$Export("ExportValue", a$2)) + ); + }, + (state2$2, a$2) => done(state2$2, PureScript$dCST$dTypes.$Export("ExportOp", a$2)) + ); + }, + (state2$2, a$2) => { + const $18 = PureScript$dCST$dTypes.ExportModule(a$2); + return more(v2$2 => parseModuleName( + state2$2, + more, + (state3$2, error$2) => { + if (state3$2.consumed) { return resume(state3$2, error$2); } + return parseSymbol( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$3, error$3) => { + if (state3$3.consumed) { return resume(state3$3, error$3); } + return parseIdent( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$4, error$4) => { + if (state3$4.consumed) { return resume(state3$4, error$4); } + return parseProper( + state1, + more, + resume, + (state2$3, a$3) => { + const $28 = PureScript$dCST$dTypes.ExportType(a$3); + return more(v2$3 => PureScript$dCST$dParser$dMonad.optional(parseDataMembers)( + state2$3, + more, + resume, + (state3$5, a$4) => done(state3$5, $28(a$4)) + )); + } + ); + }, + (state2$3, a$3) => done(state2$3, PureScript$dCST$dTypes.$Export("ExportValue", a$3)) + ); + }, + (state2$3, a$3) => done(state2$3, PureScript$dCST$dTypes.$Export("ExportOp", a$3)) + ); + }, + (state3$2, a$3) => done(state3$2, $18(a$3)) + )); + } + ); + }, + (state3$1, a$2) => done(state3$1, $12(a$2)) + )); + } + ); + }, + (state3, a$1) => done(state3, $6(a$1)) + )); + } +); +const parseImport = (state1, more, resume, done) => parseSymbol( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return parseProper( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$1, error$1) => { + if (state3$1.consumed) { return resume(state3$1, error$1); } + return tokKeyword("type")( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$2, error$2) => { + if (state3$2.consumed) { return resume(state3$2, error$2); } + const $10 = (state3$3, error$3) => { + if (state3$3.consumed) { return resume(state3$3, error$3); } + return parseIdent(state1, more, resume, (state2, a) => done(state2, PureScript$dCST$dTypes.$Import("ImportValue", a))); + }; + return tokKeyword("class")( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + $10, + (state2, a) => { + const $13 = PureScript$dCST$dTypes.ImportClass(a); + return more(v2 => parseProper(state2, more, $10, (state3$3, a$1) => done(state3$3, $13(a$1)))); + } + ); + }, + (state2, a) => { + const $10 = PureScript$dCST$dTypes.ImportTypeOp(a); + return more(v2 => parseSymbol( + state2, + more, + (state3$2, error$2) => { + if (state3$2.consumed) { return resume(state3$2, error$2); } + const $14 = (state3$3, error$3) => { + if (state3$3.consumed) { return resume(state3$3, error$3); } + return parseIdent(state1, more, resume, (state2$1, a$1) => done(state2$1, PureScript$dCST$dTypes.$Import("ImportValue", a$1))); + }; + return tokKeyword("class")( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + $14, + (state2$1, a$1) => { + const $17 = PureScript$dCST$dTypes.ImportClass(a$1); + return more(v2$1 => parseProper(state2$1, more, $14, (state3$3, a$2) => done(state3$3, $17(a$2)))); + } + ); + }, + (state3$2, a$1) => done(state3$2, $10(a$1)) + )); + } + ); + }, + (state2, a) => { + const $8 = PureScript$dCST$dTypes.ImportType(a); + return more(v2 => PureScript$dCST$dParser$dMonad.optional(parseDataMembers)( + state2, + more, + (state3$1, error$1) => { + if (state3$1.consumed) { return resume(state3$1, error$1); } + return tokKeyword("type")( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$2, error$2) => { + if (state3$2.consumed) { return resume(state3$2, error$2); } + const $14 = (state3$3, error$3) => { + if (state3$3.consumed) { return resume(state3$3, error$3); } + return parseIdent(state1, more, resume, (state2$1, a$1) => done(state2$1, PureScript$dCST$dTypes.$Import("ImportValue", a$1))); + }; + return tokKeyword("class")( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + $14, + (state2$1, a$1) => { + const $17 = PureScript$dCST$dTypes.ImportClass(a$1); + return more(v2$1 => parseProper(state2$1, more, $14, (state3$3, a$2) => done(state3$3, $17(a$2)))); + } + ); + }, + (state2$1, a$1) => { + const $14 = PureScript$dCST$dTypes.ImportTypeOp(a$1); + return more(v2$1 => parseSymbol( + state2$1, + more, + (state3$2, error$2) => { + if (state3$2.consumed) { return resume(state3$2, error$2); } + const $18 = (state3$3, error$3) => { + if (state3$3.consumed) { return resume(state3$3, error$3); } + return parseIdent(state1, more, resume, (state2$2, a$2) => done(state2$2, PureScript$dCST$dTypes.$Import("ImportValue", a$2))); + }; + return tokKeyword("class")( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + $18, + (state2$2, a$2) => { + const $21 = PureScript$dCST$dTypes.ImportClass(a$2); + return more(v2$2 => parseProper(state2$2, more, $18, (state3$3, a$3) => done(state3$3, $21(a$3)))); + } + ); + }, + (state3$2, a$2) => done(state3$2, $14(a$2)) + )); + } + ); + }, + (state3$1, a$1) => done(state3$1, $8(a$1)) + )); + } + ); + }, + (state2, a) => done(state2, PureScript$dCST$dTypes.$Import("ImportOp", a)) +); +const parseImportDecl = (state1, more, resume, done) => tokKeyword("import")( + state1, + more, + resume, + (state2, a) => more(v1 => parseModuleName( + state2, + more, + resume, + (state2$1, a$1) => more(v1$1 => PureScript$dCST$dParser$dMonad.optional((() => { + const $10 = parens(separated(tokComma)(parseImport)); + return (state1$1, more$1, resume$1, done$1) => PureScript$dCST$dParser$dMonad.optional(tokKeyword("hiding"))( + state1$1, + more$1, + resume$1, + (state2$2, a$2) => { + const $17 = Data$dTuple.Tuple(a$2); + return more$1(v2 => $10(state2$2, more$1, resume$1, (state3, a$3) => done$1(state3, $17(a$3)))); + } + ); + })())( + state2$1, + more, + resume, + (state2$2, a$2) => more(v1$2 => PureScript$dCST$dParser$dMonad.optional((state1$1, more$1, resume$1, done$1) => tokKeyword("as")( + state1$1, + more$1, + resume$1, + (state2$3, a$3) => { + const $19 = Data$dTuple.Tuple(a$3); + return more$1(v2 => parseModuleName(state2$3, more$1, resume$1, (state3, a$4) => done$1(state3, $19(a$4)))); + } + ))(state2$2, more, resume, (state2$3, a$3) => more(v1$3 => done(state2$3, {keyword: a, module: a$1, names: a$2, qualified: a$3})))) + )) + )) +); +const parseModuleImportDecls = /* #__PURE__ */ PureScript$dCST$dParser$dMonad.many((state1, more, resume, done) => parseImportDecl( + state1, + more, + resume, + (state2, a) => more(v2 => tokLayoutSep( + (() => { + if (state2.consumed) { return {consumed: false, errors: state2.errors, stream: state2.stream}; } + return state2; + })(), + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return tokLayoutEnd(state2, more, (v1, error$1) => resume(state2, error$1), (v1, value) => done(state2, a)); + }, + (state3, a$1) => done(state3, a) + )) +)); +const parseModuleHeader = (state1, more, resume, done) => tokKeyword("module")( + state1, + more, + resume, + (state2, a) => more(v1 => parseModuleName( + state2, + more, + resume, + (state2$1, a$1) => more(v1$1 => PureScript$dCST$dParser$dMonad.optional(parens(separated(tokComma)(parseExport)))( + state2$1, + more, + resume, + (state2$2, a$2) => more(v1$2 => tokKeyword("where")( + state2$2, + more, + resume, + (state2$3, a$3) => more(v1$3 => tokLayoutStart( + state2$3, + more, + resume, + (state2$4, a$4) => more(v2 => parseModuleImportDecls( + state2$4, + more, + resume, + (state3, a$5) => more(v1$4 => done(state3, {keyword: a, name: a$1, exports: a$2, where: a$3, imports: a$5})) + )) + )) + )) + )) + )) +); +const braces = valueParser => (state1, more, resume, done) => tokLeftBrace( + state1, + more, + resume, + (state2, a) => more(v1 => valueParser( + state2, + more, + resume, + (state2$1, a$1) => more(v1$1 => tokRightBrace(state2$1, more, resume, (state2$2, a$2) => more(v1$2 => done(state2$2, {open: a, value: a$1, close: a$2})))) + )) +); +const parseTypeParens = (state1, more, resume, done) => tokLeftParen( + state1, + more, + resume, + (state2, a) => more(v1 => { + const $7 = parseRowTailParen(a); + const $8 = parseKindedVar(a); + const $9 = parseTypeParen(a); + return parseRowParen(a)( + (() => { + if (state2.consumed) { return {consumed: false, errors: state2.errors, stream: state2.stream}; } + return state2; + })(), + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return $7( + (() => { + if (state2.consumed) { return {consumed: false, errors: state2.errors, stream: state2.stream}; } + return state2; + })(), + more, + (state3$1, error$1) => { + if (state3$1.consumed) { return resume(state3$1, error$1); } + return $8( + (() => { + if (state2.consumed) { return {consumed: false, errors: state2.errors, stream: state2.stream}; } + return state2; + })(), + more, + (state3$2, error$2) => { + if (state3$2.consumed) { return resume(state3$2, error$2); } + return $9( + (() => { + if (state2.consumed) { return {consumed: false, errors: state2.errors, stream: state2.stream}; } + return state2; + })(), + more, + (state3$3, error$3) => { + if (state3$3.consumed) { return resume(state3$3, error$3); } + return parseEmptyRow(a)(state2, more, resume, done); + }, + done + ); + }, + done + ); + }, + done + ); + }, + done + ); + }) +); +const parseTypeParen = open => (state1, more, resume, done) => parseType$lazy()( + state1, + more, + resume, + (state2, a) => more(v1 => tokRightParen( + state2, + more, + resume, + (state2$1, a$1) => more(v1$1 => done(state2$1, PureScript$dCST$dTypes.$Type("TypeParens", {open: open, value: a, close: a$1}))) + )) +); +const parseRowTailParen = open => (state1, more, resume, done) => tokPipe( + state1, + more, + resume, + (state2, a) => { + const $7 = Data$dTuple.Tuple(a); + return more(v2 => parseType$lazy()( + state2, + more, + resume, + (state3, a$1) => { + const $11 = $7(a$1); + return more(v1 => tokRightParen( + state3, + more, + resume, + (state2$1, a$2) => more(v1$1 => done( + state2$1, + PureScript$dCST$dTypes.$Type("TypeRow", {open: open, value: {labels: Data$dMaybe.Nothing, tail: Data$dMaybe.$Maybe("Just", $11)}, close: a$2}) + )) + )); + } + )); + } +); +const parseRowParen = open => (state1, more, resume, done) => parseLabel( + state1, + more, + (state2, error) => resume({consumed: state1.consumed, errors: state2.errors, stream: state2.stream}, error), + (state2, a) => { + const $7 = Data$dTuple.Tuple(a); + return more(v2 => tokDoubleColon( + state2, + more, + (state2$1, error) => resume({consumed: state1.consumed, errors: state2$1.errors, stream: state2$1.stream}, error), + (state3, a$1) => { + const $11 = $7(a$1); + return more(v1 => parseType$lazy()( + state3, + more, + resume, + (state2$1, a$2) => more(v1$1 => PureScript$dCST$dParser$dMonad.many((state1$1, more$1, resume$1, done$1) => tokComma( + state1$1, + more$1, + resume$1, + (state2$2, a$3) => { + const $22 = Data$dTuple.Tuple(a$3); + return more$1(v2$1 => parseRowLabel(state2$2, more$1, resume$1, (state3$1, a$4) => done$1(state3$1, $22(a$4)))); + } + ))( + state2$1, + more, + resume, + (state2$2, a$3) => more(v1$2 => PureScript$dCST$dParser$dMonad.optional((state1$1, more$1, resume$1, done$1) => tokPipe( + state1$1, + more$1, + resume$1, + (state2$3, a$4) => { + const $25 = Data$dTuple.Tuple(a$4); + return more$1(v2$1 => parseType$lazy()(state2$3, more$1, resume$1, (state3$1, a$5) => done$1(state3$1, $25(a$5)))); + } + ))( + state2$2, + more, + resume, + (state2$3, a$4) => more(v1$3 => tokRightParen( + state2$3, + more, + resume, + (state2$4, a$5) => more(v1$4 => done( + state2$4, + PureScript$dCST$dTypes.$Type( + "TypeRow", + {open: open, value: {labels: Data$dMaybe.$Maybe("Just", {head: {label: $11._1, separator: $11._2, value: a$2}, tail: a$3}), tail: a$4}, close: a$5} + ) + )) + )) + )) + )) + )); + } + )); + } +); +const parseRowLabel = (state1, more, resume, done) => parseLabel( + state1, + more, + resume, + (state2, a) => more(v1 => tokDoubleColon( + state2, + more, + resume, + (state2$1, a$1) => more(v1$1 => parseType$lazy()(state2$1, more, resume, (state2$2, a$2) => more(v1$2 => done(state2$2, {label: a, separator: a$1, value: a$2})))) + )) +); +const parseKindedVar = open => { + const $1 = parens((state1, more, resume, done) => parseIdent(state1, more, resume, (state2, a) => done(state2, PureScript$dCST$dTypes.$Type("TypeVar", a)))); + return (state1, more, resume, done) => $1( + state1, + more, + (state2, error) => resume({consumed: state1.consumed, errors: state2.errors, stream: state2.stream}, error), + (state2, a) => { + const $8 = Data$dTuple.Tuple(a); + return more(v2 => tokDoubleColon( + state2, + more, + (state2$1, error) => resume({consumed: state1.consumed, errors: state2$1.errors, stream: state2$1.stream}, error), + (state3, a$1) => { + const $12 = $8(a$1); + return more(v1 => parseType$lazy()( + state3, + more, + resume, + (state2$1, a$2) => more(v1$1 => tokRightParen( + state2$1, + more, + resume, + (state2$2, a$3) => more(v1$2 => done( + state2$2, + PureScript$dCST$dTypes.$Type( + "TypeParens", + {open: open, value: PureScript$dCST$dTypes.$Type("TypeKinded", PureScript$dCST$dTypes.$Type("TypeParens", $12._1), $12._2, a$2), close: a$3} + ) + )) + )) + )); + } + )); + } + ); +}; +const parseTypeVarKinded$lazy = /* #__PURE__ */ $runtime.binding(() => { + const $0 = parens((state1, more, resume, done) => parseIdent( + state1, + more, + resume, + (state2, a) => more(v1 => tokDoubleColon( + state2, + more, + resume, + (state2$1, a$1) => more(v1$1 => parseType$lazy()(state2$1, more, resume, (state2$2, a$2) => more(v1$2 => done(state2$2, {label: a, separator: a$1, value: a$2})))) + )) + )); + return (state1, more, resume, done) => $0(state1, more, resume, (state2, a) => done(state2, PureScript$dCST$dTypes.$TypeVarBinding("TypeVarKinded", a))); +}); +const parseTypeVarBinding$lazy = /* #__PURE__ */ $runtime.binding(() => PureScript$dCST$dParser$dMonad.lazyParser.defer(v => (state1, more, resume, done) => parseTypeVarKinded$lazy()( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return parseIdent(state1, more, resume, (state2, a) => done(state2, PureScript$dCST$dTypes.$TypeVarBinding("TypeVarName", a))); + }, + done +))); +const parseTypeAtom$lazy = /* #__PURE__ */ $runtime.binding(() => PureScript$dCST$dParser$dMonad.lazyParser.defer(v => { + const $1 = PureScript$dCST$dTypes.TypeInt(Data$dMaybe.Nothing); + return (state1, more, resume, done) => parseIdent( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return parseQualifiedProper( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$1, error$1) => { + if (state3$1.consumed) { return resume(state3$1, error$1); } + return parseString( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$2, error$2) => { + if (state3$2.consumed) { return resume(state3$2, error$2); } + return parseInt( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$3, error$3) => { + if (state3$3.consumed) { return resume(state3$3, error$3); } + return parseTypeParens( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$4, error$4) => { + if (state3$4.consumed) { return resume(state3$4, error$4); } + return braces(parseRow$lazy())( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$5, error$5) => { + if (state3$5.consumed) { return resume(state3$5, error$5); } + return parseQualifiedSymbol( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$6, error$6) => { + if (state3$6.consumed) { return resume(state3$6, error$6); } + return parseHole( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$7, error$7) => { + if (state3$7.consumed) { return resume(state3$7, error$7); } + return tokUnderscore( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$8, error$8) => { + if (state3$8.consumed) { return resume(state3$8, error$8); } + return tokSymbolArrow(state1, more, resume, (state2, a) => done(state2, PureScript$dCST$dTypes.$Type("TypeArrowName", a))); + }, + (state2, a) => done(state2, PureScript$dCST$dTypes.$Type("TypeWildcard", a)) + ); + }, + (state2, a) => done(state2, PureScript$dCST$dTypes.$Type("TypeHole", a)) + ); + }, + (state2, a) => done(state2, PureScript$dCST$dTypes.$Type("TypeOpName", a)) + ); + }, + (state2, a) => done(state2, PureScript$dCST$dTypes.$Type("TypeRecord", a)) + ); + }, + done + ); + }, + (state2, a) => done(state2, $1(a._1)(a._2)) + ); + }, + (state2, a) => done(state2, PureScript$dCST$dTypes.$Type("TypeString", a._1, a._2)) + ); + }, + (state2, a) => done(state2, PureScript$dCST$dTypes.$Type("TypeConstructor", a)) + ); + }, + (state2, a) => done(state2, PureScript$dCST$dTypes.$Type("TypeVar", a)) + ); +})); +const parseType5$lazy = /* #__PURE__ */ $runtime.binding(() => PureScript$dCST$dParser$dMonad.lazyParser.defer(v => (state1, more, resume, done) => parseTypeAtom$lazy()( + state1, + more, + resume, + (state2, a) => more(v1 => PureScript$dCST$dParser$dMonad.many(parseTypeAtom$lazy())( + state2, + more, + resume, + (state2$1, a$1) => more(v1$1 => done( + state2$1, + (() => { + if (a$1.length > 0) { return PureScript$dCST$dTypes.$Type("TypeApp", a, a$1); } + return a; + })() + )) + )) +))); +const parseType4$lazy = /* #__PURE__ */ $runtime.binding(() => PureScript$dCST$dParser$dMonad.lazyParser.defer(v => (state1, more, resume, done) => parseTypeNegative( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return parseType5$lazy()(state1, more, resume, done); + }, + done +))); +const parseType3$lazy = /* #__PURE__ */ $runtime.binding(() => PureScript$dCST$dParser$dMonad.lazyParser.defer(v => (state1, more, resume, done) => parseType4$lazy()( + state1, + more, + resume, + (state2, a) => more(v1 => PureScript$dCST$dParser$dMonad.many((state1$1, more$1, resume$1, done$1) => parseQualifiedOperator( + state1$1, + more$1, + resume$1, + (state2$1, a$1) => { + const $14 = Data$dTuple.Tuple(a$1); + return more$1(v2 => parseType4$lazy()(state2$1, more$1, resume$1, (state3, a$2) => done$1(state3, $14(a$2)))); + } + ))( + state2, + more, + resume, + (state2$1, a$1) => more(v1$1 => done( + state2$1, + (() => { + if (a$1.length > 0) { return PureScript$dCST$dTypes.$Type("TypeOp", a, a$1); } + return a; + })() + )) + )) +))); +const parseType2$lazy = /* #__PURE__ */ $runtime.binding(() => PureScript$dCST$dParser$dMonad.lazyParser.defer(v => (state1, more, resume, done) => parseType3$lazy()( + state1, + more, + resume, + (state2, a) => more(v1 => { + const $8 = PureScript$dCST$dTypes.TypeArrow(a); + const $9 = PureScript$dCST$dTypes.TypeConstrained(a); + const $10 = (state1$1, more$1, resume$1, done$1) => tokRightFatArrow( + (() => { + if (state1$1.consumed) { return {consumed: false, errors: state1$1.errors, stream: state1$1.stream}; } + return state1$1; + })(), + more$1, + (state3, error) => { + if (state3.consumed) { return resume$1(state3, error); } + return done$1(state1$1, a); + }, + (state2$1, a$1) => { + const $16 = $9(a$1); + return more$1(v2 => parseType1$lazy()( + state2$1, + more$1, + (state3, error) => { + if (state3.consumed) { return resume$1(state3, error); } + return done$1(state1$1, a); + }, + (state3, a$2) => done$1(state3, $16(a$2)) + )); + } + ); + return tokRightArrow( + (() => { + if (state2.consumed) { return {consumed: false, errors: state2.errors, stream: state2.stream}; } + return state2; + })(), + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return $10(state2, more, resume, done); + }, + (state2$1, a$1) => { + const $13 = $8(a$1); + return more(v2 => parseType1$lazy()( + state2$1, + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return $10(state2, more, resume, done); + }, + (state3, a$2) => done(state3, $13(a$2)) + )); + } + ); + }) +))); +const parseType1$lazy = /* #__PURE__ */ $runtime.binding(() => PureScript$dCST$dParser$dMonad.lazyParser.defer(v => (state1, more, resume, done) => parseForall$lazy()( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return parseType2$lazy()(state1, more, resume, done); + }, + done +))); +const parseType$lazy = /* #__PURE__ */ $runtime.binding(() => PureScript$dCST$dParser$dMonad.lazyParser.defer(v => (state1, more, resume, done) => parseType1$lazy()( + state1, + more, + resume, + (state2, a) => more(v1 => { + const $8 = PureScript$dCST$dTypes.TypeKinded(a); + return tokDoubleColon( + (() => { + if (state2.consumed) { return {consumed: false, errors: state2.errors, stream: state2.stream}; } + return state2; + })(), + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return done(state2, a); + }, + (state2$1, a$1) => { + const $11 = $8(a$1); + return more(v2 => parseType$lazy()( + state2$1, + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return done(state2, a); + }, + (state3, a$2) => done(state3, $11(a$2)) + )); + } + ); + }) +))); +const parseRow$lazy = /* #__PURE__ */ $runtime.binding(() => PureScript$dCST$dParser$dMonad.lazyParser.defer(v => { + const $1 = PureScript$dCST$dParser$dMonad.optional(separated(tokComma)(parseRowLabel)); + return (state1, more, resume, done) => $1( + state1, + more, + resume, + (state2, a) => more(v1 => PureScript$dCST$dParser$dMonad.optional((state1$1, more$1, resume$1, done$1) => tokPipe( + state1$1, + more$1, + resume$1, + (state2$1, a$1) => { + const $15 = Data$dTuple.Tuple(a$1); + return more$1(v2 => parseType$lazy()(state2$1, more$1, resume$1, (state3, a$2) => done$1(state3, $15(a$2)))); + } + ))(state2, more, resume, (state2$1, a$1) => more(v1$1 => done(state2$1, {labels: a, tail: a$1})))) + ); +})); +const parseForall$lazy = /* #__PURE__ */ $runtime.binding(() => PureScript$dCST$dParser$dMonad.lazyParser.defer(v => (state1, more, resume, done) => tokForall( + state1, + more, + resume, + (state2, a) => { + const $7 = PureScript$dCST$dTypes.TypeForall(a); + return more(v2 => many1(parseTypeVarBinding$lazy())( + state2, + more, + resume, + (state3, a$1) => { + const $11 = $7(a$1); + return more(v2$1 => tokDot( + state3, + more, + resume, + (state3$1, a$2) => { + const $15 = $11(a$2); + return more(v2$2 => parseType1$lazy()(state3$1, more, resume, (state3$2, a$3) => done(state3$2, $15(a$3)))); + } + )); + } + )); + } +))); +const parseTypeVarKinded = /* #__PURE__ */ parseTypeVarKinded$lazy(); +const parseTypeVarBinding = /* #__PURE__ */ parseTypeVarBinding$lazy(); +const parseTypeAtom = /* #__PURE__ */ parseTypeAtom$lazy(); +const parseType5 = /* #__PURE__ */ parseType5$lazy(); +const parseType4 = /* #__PURE__ */ parseType4$lazy(); +const parseType3 = /* #__PURE__ */ parseType3$lazy(); +const parseType2 = /* #__PURE__ */ parseType2$lazy(); +const parseType1 = /* #__PURE__ */ parseType1$lazy(); +const parseType = /* #__PURE__ */ parseType$lazy(); +const parseRow = /* #__PURE__ */ parseRow$lazy(); +const parseForall = /* #__PURE__ */ parseForall$lazy(); +const parseDataCtor = (state1, more, resume, done) => parseProper( + state1, + more, + resume, + (state2, a) => more(v2 => PureScript$dCST$dParser$dMonad.many(parseTypeAtom)(state2, more, resume, (state3, a$1) => done(state3, {name: a, fields: a$1}))) +); +const parseIdentBinder = (state1, more, resume, done) => parseIdent( + state1, + more, + resume, + (state2, a) => more(v1 => { + const $7 = PureScript$dCST$dTypes.BinderNamed(a); + return tokAt( + (() => { + if (state2.consumed) { return {consumed: false, errors: state2.errors, stream: state2.stream}; } + return state2; + })(), + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return done(state2, PureScript$dCST$dTypes.$Binder("BinderVar", a)); + }, + (state2$1, a$1) => { + const $10 = $7(a$1); + return more(v2 => parseBinderAtom$lazy()( + state2$1, + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return done(state2, PureScript$dCST$dTypes.$Binder("BinderVar", a)); + }, + (state3, a$2) => done(state3, $10(a$2)) + )); + } + ); + }) +); +const parseBinderConstructor$lazy = /* #__PURE__ */ $runtime.binding(() => PureScript$dCST$dParser$dMonad.lazyParser.defer(v => (state1, more, resume, done) => parseQualifiedProper( + state1, + more, + resume, + (state2, a) => more(v1 => PureScript$dCST$dParser$dMonad.many(parseBinderAtom$lazy())( + state2, + more, + resume, + (state2$1, a$1) => more(v1$1 => done(state2$1, PureScript$dCST$dTypes.$Binder("BinderConstructor", a, a$1))) + )) +))); +const parseBinderAtom$lazy = /* #__PURE__ */ $runtime.binding(() => PureScript$dCST$dParser$dMonad.lazyParser.defer(v => { + const $1 = PureScript$dCST$dTypes.BinderInt(Data$dMaybe.Nothing); + const $2 = PureScript$dCST$dTypes.BinderNumber(Data$dMaybe.Nothing); + return (state1, more, resume, done) => parseIdentBinder( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return parseQualifiedProper( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$1, error$1) => { + if (state3$1.consumed) { return resume(state3$1, error$1); } + return tokUnderscore( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$2, error$2) => { + if (state3$2.consumed) { return resume(state3$2, error$2); } + return parseString( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$3, error$3) => { + if (state3$3.consumed) { return resume(state3$3, error$3); } + return parseChar( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$4, error$4) => { + if (state3$4.consumed) { return resume(state3$4, error$4); } + return parseBoolean( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$5, error$5) => { + if (state3$5.consumed) { return resume(state3$5, error$5); } + return parseInt( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$6, error$6) => { + if (state3$6.consumed) { return resume(state3$6, error$6); } + return parseNumber( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$7, error$7) => { + if (state3$7.consumed) { return resume(state3$7, error$7); } + return delimited(tokLeftSquare)(tokRightSquare)(tokComma)(parseBinder$lazy())( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$8, error$8) => { + if (state3$8.consumed) { return resume(state3$8, error$8); } + return delimited(tokLeftBrace)(tokRightBrace)(tokComma)(parseRecordLabeled(parseBinder$lazy()))( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$9, error$9) => { + if (state3$9.consumed) { return resume(state3$9, error$9); } + return parens(parseBinder$lazy())(state1, more, resume, (state2, a) => done(state2, PureScript$dCST$dTypes.$Binder("BinderParens", a))); + }, + (state2, a) => done(state2, PureScript$dCST$dTypes.$Binder("BinderRecord", a)) + ); + }, + (state2, a) => done(state2, PureScript$dCST$dTypes.$Binder("BinderArray", a)) + ); + }, + (state2, a) => done(state2, $2(a._1)(a._2)) + ); + }, + (state2, a) => done(state2, $1(a._1)(a._2)) + ); + }, + (state2, a) => done(state2, PureScript$dCST$dTypes.$Binder("BinderBoolean", a._1, a._2)) + ); + }, + (state2, a) => done(state2, PureScript$dCST$dTypes.$Binder("BinderChar", a._1, a._2)) + ); + }, + (state2, a) => done(state2, PureScript$dCST$dTypes.$Binder("BinderString", a._1, a._2)) + ); + }, + (state2, a) => done(state2, PureScript$dCST$dTypes.$Binder("BinderWildcard", a)) + ); + }, + (state2, a) => done(state2, PureScript$dCST$dTypes.$Binder("BinderConstructor", a, [])) + ); + }, + done + ); +})); +const parseBinder2$lazy = /* #__PURE__ */ $runtime.binding(() => PureScript$dCST$dParser$dMonad.lazyParser.defer(v => (state1, more, resume, done) => parseBinderNegative( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return parseBinderConstructor$lazy()( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$1, error$1) => { + if (state3$1.consumed) { return resume(state3$1, error$1); } + return parseBinderAtom$lazy()(state1, more, resume, done); + }, + done + ); + }, + done +))); +const parseBinder1$lazy = /* #__PURE__ */ $runtime.binding(() => PureScript$dCST$dParser$dMonad.lazyParser.defer(v => (state1, more, resume, done) => parseBinder2$lazy()( + state1, + more, + resume, + (state2, a) => more(v1 => PureScript$dCST$dParser$dMonad.many((state1$1, more$1, resume$1, done$1) => parseQualifiedOperator( + state1$1, + more$1, + resume$1, + (state2$1, a$1) => { + const $14 = Data$dTuple.Tuple(a$1); + return more$1(v2 => parseBinder2$lazy()(state2$1, more$1, resume$1, (state3, a$2) => done$1(state3, $14(a$2)))); + } + ))( + state2, + more, + resume, + (state2$1, a$1) => more(v1$1 => done( + state2$1, + (() => { + if (a$1.length > 0) { return PureScript$dCST$dTypes.$Binder("BinderOp", a, a$1); } + return a; + })() + )) + )) +))); +const parseBinder$lazy = /* #__PURE__ */ $runtime.binding(() => PureScript$dCST$dParser$dMonad.lazyParser.defer(v => (state1, more, resume, done) => parseBinder1$lazy()( + state1, + more, + resume, + (state2, a) => more(v1 => { + const $8 = PureScript$dCST$dTypes.BinderTyped(a); + return tokDoubleColon( + (() => { + if (state2.consumed) { return {consumed: false, errors: state2.errors, stream: state2.stream}; } + return state2; + })(), + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return done(state2, a); + }, + (state2$1, a$1) => { + const $11 = $8(a$1); + return more(v2 => parseType( + state2$1, + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return done(state2, a); + }, + (state3, a$2) => done(state3, $11(a$2)) + )); + } + ); + }) +))); +const parseBinderConstructor = /* #__PURE__ */ parseBinderConstructor$lazy(); +const parseBinderAtom = /* #__PURE__ */ parseBinderAtom$lazy(); +const parseBinder2 = /* #__PURE__ */ parseBinder2$lazy(); +const parseBinder1 = /* #__PURE__ */ parseBinder1$lazy(); +const parseBinder = /* #__PURE__ */ parseBinder$lazy(); +const parseClassConstraints = parseOneConstraint => { + const $1 = parens(separated(tokComma)(parseType)); + return (state1, more, resume, done) => $1( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return parseOneConstraint(state1, more, resume, (state2, a) => done(state2, PureScript$dCST$dTypes.$OneOrDelimited("One", a))); + }, + (state2, a) => done(state2, PureScript$dCST$dTypes.$OneOrDelimited("Many", a)) + ); +}; +const parseDeclDerive = (state1, more, resume, done) => tokKeyword("derive")( + state1, + more, + resume, + (state2, a) => more(v1 => PureScript$dCST$dParser$dMonad.optional(tokKeyword("newtype"))( + state2, + more, + resume, + (state2$1, a$1) => more(v1$1 => tokKeyword("instance")( + state2$1, + more, + resume, + (state2$2, a$2) => more(v1$2 => PureScript$dCST$dParser$dMonad.optional(parseInstanceName)( + state2$2, + more, + resume, + (state2$3, a$3) => more(v1$3 => PureScript$dCST$dParser$dMonad.optional((() => { + const $16 = parseClassConstraints(parseType3); + return (state1$1, more$1, resume$1, done$1) => $16( + state1$1, + more$1, + (state2$4, error) => resume$1({consumed: state1$1.consumed, errors: state2$4.errors, stream: state2$4.stream}, error), + (state2$4, a$4) => { + const $23 = Data$dTuple.Tuple(a$4); + return more$1(v2 => tokRightFatArrow( + state2$4, + more$1, + (state2$5, error) => resume$1({consumed: state1$1.consumed, errors: state2$5.errors, stream: state2$5.stream}, error), + (state3, a$5) => done$1(state3, $23(a$5)) + )); + } + ); + })())( + state2$3, + more, + resume, + (state2$4, a$4) => more(v1$4 => parseQualifiedProper( + state2$4, + more, + resume, + (state2$5, a$5) => more(v1$5 => PureScript$dCST$dParser$dMonad.many(parseTypeAtom)( + state2$5, + more, + resume, + (state2$6, a$6) => more(v1$6 => done( + state2$6, + PureScript$dCST$dTypes.$Declaration("DeclDerive", a, a$1, {keyword: a$2, name: a$3, constraints: a$4, className: a$5, types: a$6}) + )) + )) + )) + )) + )) + )) + )) +); +const parseClassMember = (state1, more, resume, done) => parseIdent( + state1, + more, + resume, + (state2, a) => more(v1 => tokDoubleColon( + state2, + more, + resume, + (state2$1, a$1) => more(v1$1 => parseType(state2$1, more, resume, (state2$2, a$2) => more(v1$2 => done(state2$2, {label: a, separator: a$1, value: a$2})))) + )) +); +const parseDeclClassSignature = keyword => (state1, more, resume, done) => parseProper( + state1, + more, + (state2, error) => resume({consumed: state1.consumed, errors: state2.errors, stream: state2.stream}, error), + (state2, a) => { + const $7 = Data$dTuple.Tuple(a); + return more(v2 => tokDoubleColon( + state2, + more, + (state2$1, error) => resume({consumed: state1.consumed, errors: state2$1.errors, stream: state2$1.stream}, error), + (state3, a$1) => { + const $11 = $7(a$1); + return more(v1 => parseType( + state3, + more, + resume, + (state2$1, a$2) => more(v1$1 => done(state2$1, PureScript$dCST$dTypes.$Declaration("DeclKindSignature", keyword, {label: $11._1, separator: $11._2, value: a$2}))) + )); + } + )); + } +); +const parseDeclKindSignature = keyword => label => (state1, more, resume, done) => tokDoubleColon( + state1, + more, + resume, + (state2, a) => more(v1 => parseType( + state2, + more, + resume, + (state2$1, a$1) => more(v1$1 => done(state2$1, PureScript$dCST$dTypes.$Declaration("DeclKindSignature", keyword, {label: label, separator: a, value: a$1}))) + )) +); +const parseDeclSignature = label => (state1, more, resume, done) => tokDoubleColon( + state1, + more, + resume, + (state2, a) => more(v1 => parseType( + state2, + more, + resume, + (state2$1, a$1) => more(v1$1 => done(state2$1, PureScript$dCST$dTypes.$Declaration("DeclSignature", {label: label, separator: a, value: a$1}))) + )) +); +const parseForeignData = (state1, more, resume, done) => tokKeyword("data")( + state1, + more, + resume, + (state2, a) => more(v1 => parseProper( + state2, + more, + resume, + (state2$1, a$1) => more(v1$1 => tokDoubleColon( + state2$1, + more, + resume, + (state2$2, a$2) => more(v1$2 => parseType( + state2$2, + more, + resume, + (state2$3, a$3) => more(v1$3 => done(state2$3, PureScript$dCST$dTypes.$Foreign("ForeignData", a, {label: a$1, separator: a$2, value: a$3}))) + )) + )) + )) +); +const parseForeignValue = (state1, more, resume, done) => parseIdent( + state1, + more, + resume, + (state2, a) => more(v1 => tokDoubleColon( + state2, + more, + resume, + (state2$1, a$1) => more(v1$1 => parseType( + state2$1, + more, + resume, + (state2$2, a$2) => more(v1$2 => done(state2$2, PureScript$dCST$dTypes.$Foreign("ForeignValue", {label: a, separator: a$1, value: a$2}))) + )) + )) +); +const parseDeclForeign = (state1, more, resume, done) => tokKeyword("foreign")( + state1, + more, + resume, + (state2, a) => more(v1 => tokKeyword("import")( + state2, + more, + resume, + (state2$1, a$1) => more(v1$1 => parseForeignData( + (() => { + if (state2$1.consumed) { return {consumed: false, errors: state2$1.errors, stream: state2$1.stream}; } + return state2$1; + })(), + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return parseForeignKind( + (() => { + if (state2$1.consumed) { return {consumed: false, errors: state2$1.errors, stream: state2$1.stream}; } + return state2$1; + })(), + more, + (state3$1, error$1) => { + if (state3$1.consumed) { return resume(state3$1, error$1); } + return parseForeignValue(state2$1, more, resume, (state2$2, a$2) => more(v1$2 => done(state2$2, PureScript$dCST$dTypes.$Declaration("DeclForeign", a, a$1, a$2)))); + }, + (state2$2, a$2) => more(v1$2 => done(state2$2, PureScript$dCST$dTypes.$Declaration("DeclForeign", a, a$1, a$2))) + ); + }, + (state2$2, a$2) => more(v1$2 => done(state2$2, PureScript$dCST$dTypes.$Declaration("DeclForeign", a, a$1, a$2))) + )) + )) +); +const parseInstanceBindingSignature = label => (state1, more, resume, done) => tokDoubleColon( + state1, + more, + resume, + (state2, a) => more(v1 => parseType( + state2, + more, + resume, + (state2$1, a$1) => more(v1$1 => done(state2$1, PureScript$dCST$dTypes.$InstanceBinding("InstanceBindingSignature", {label: label, separator: a, value: a$1}))) + )) +); +const parseLetBindingSignature = label => (state1, more, resume, done) => tokDoubleColon( + state1, + more, + resume, + (state2, a) => more(v1 => parseType( + state2, + more, + resume, + (state2$1, a$1) => more(v1$1 => done(state2$1, PureScript$dCST$dTypes.$LetBinding("LetBindingSignature", {label: label, separator: a, value: a$1}))) + )) +); +const parseTickExpr = (state1, more, resume, done) => tokTick( + state1, + more, + resume, + (state2, a) => more(v1 => parseTickExpr1$lazy()( + state2, + more, + resume, + (state2$1, a$1) => more(v1$1 => tokTick(state2$1, more, resume, (state2$2, a$2) => more(v1$2 => done(state2$2, {open: a, value: a$1, close: a$2})))) + )) +); +const parseRecordUpdates = expr => (state1, more, resume, done) => { + const $5 = (state2, a) => more(v1 => separated(tokComma)(parseRecordUpdate)( + state2, + more, + resume, + (state2$1, a$1) => more(v1$1 => tokRightBrace( + state2$1, + more, + resume, + (state2$2, a$2) => more(v1$2 => done(state2$2, PureScript$dCST$dTypes.$Expr("ExprRecordUpdate", expr, {open: a, value: a$1, close: a$2}))) + )) + )); + return tokLeftBrace( + state1, + more, + (state2, error) => resume({consumed: state1.consumed, errors: state2.errors, stream: state2.stream}, error), + (state2, a) => more(v2 => parseLabel( + state2, + more, + (v1, error) => resume({consumed: state1.consumed, errors: state2.errors, stream: state2.stream}, error), + (state2$1, a$1) => more(v2$1 => tokEquals( + (() => { + if (state2$1.consumed) { return {consumed: false, errors: state2$1.errors, stream: state2$1.stream}; } + return state2$1; + })(), + more, + (state3, error) => { + if (state3.consumed) { return resume({consumed: state1.consumed, errors: state2.errors, stream: state2.stream}, error); } + return tokLeftBrace( + state2$1, + more, + (v1, error$1) => resume({consumed: state1.consumed, errors: state2.errors, stream: state2.stream}, error$1), + (state3$1, a$2) => $5(state2, a) + ); + }, + (state3, a$2) => $5(state2, a) + )) + )) + ); +}; +const parseRecordUpdateLeaf = label => { + const $1 = PureScript$dCST$dTypes.RecordUpdateLeaf(label); + return (state1, more, resume, done) => tokEquals( + state1, + more, + resume, + (state2, a) => { + const $8 = $1(a); + return more(v2 => parseExpr$lazy()(state2, more, resume, (state3, a$1) => done(state3, $8(a$1)))); + } + ); +}; +const parseRecordUpdateBranch = label => { + const $1 = PureScript$dCST$dTypes.RecordUpdateBranch(label); + const $2 = braces(separated(tokComma)(parseRecordUpdate)); + return (state1, more, resume, done) => $2(state1, more, resume, (state2, a) => done(state2, $1(a))); +}; +const parseRecordUpdate = (state1, more, resume, done) => parseLabel( + state1, + more, + resume, + (state2, a) => more(v1 => { + const $7 = parseRecordUpdateBranch(a); + return parseRecordUpdateLeaf(a)( + (() => { + if (state2.consumed) { return {consumed: false, errors: state2.errors, stream: state2.stream}; } + return state2; + })(), + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return $7(state2, more, resume, done); + }, + done + ); + }) +); +const parseLetIn = (state1, more, resume, done) => tokKeyword("let")( + state1, + more, + resume, + (state2, a) => more(v1 => layoutNonEmpty(recoverIndent(PureScript$dCST$dTypes.LetBindingError)(parseLetBinding$lazy()))( + state2, + more, + resume, + (state2$1, a$1) => more(v1$1 => tokKeyword("in")( + state2$1, + more, + resume, + (state2$2, a$2) => more(v1$2 => parseExpr$lazy()( + state2$2, + more, + resume, + (state2$3, a$3) => more(v1$3 => done(state2$3, PureScript$dCST$dTypes.$Expr("ExprLet", {keyword: a, bindings: a$1, in: a$2, body: a$3}))) + )) + )) + )) +); +const parseLetBindingName = name => (state1, more, resume, done) => PureScript$dCST$dParser$dMonad.many(parseBinderAtom)( + state1, + more, + resume, + (state2, a) => more(v1 => parseGuarded(tokEquals)( + state2, + more, + resume, + (state2$1, a$1) => more(v1$1 => done(state2$1, PureScript$dCST$dTypes.$LetBinding("LetBindingName", {name: name, binders: a, guarded: a$1}))) + )) +); +const parseLambda = (state1, more, resume, done) => tokBackslash( + state1, + more, + resume, + (state2, a) => more(v1 => many1(parseBinderAtom)( + state2, + more, + resume, + (state2$1, a$1) => more(v1$1 => tokRightArrow( + state2$1, + more, + resume, + (state2$2, a$2) => more(v1$2 => parseExpr$lazy()( + state2$2, + more, + resume, + (state2$3, a$3) => more(v1$3 => done(state2$3, PureScript$dCST$dTypes.$Expr("ExprLambda", {symbol: a, binders: a$1, arrow: a$2, body: a$3}))) + )) + )) + )) +); +const parseIf = (state1, more, resume, done) => tokKeyword("if")( + state1, + more, + resume, + (state2, a) => more(v1 => parseExpr$lazy()( + state2, + more, + resume, + (state2$1, a$1) => more(v1$1 => tokKeyword("then")( + state2$1, + more, + resume, + (state2$2, a$2) => more(v1$2 => parseExpr$lazy()( + state2$2, + more, + resume, + (state2$3, a$3) => more(v1$3 => tokKeyword("else")( + state2$3, + more, + resume, + (state2$4, a$4) => more(v1$4 => parseExpr$lazy()( + state2$4, + more, + resume, + (state2$5, a$5) => more(v1$5 => done(state2$5, PureScript$dCST$dTypes.$Expr("ExprIf", {keyword: a, cond: a$1, then: a$2, true: a$3, else: a$4, false: a$5}))) + )) + )) + )) + )) + )) +); +const parseIdentBinding = (state1, more, resume, done) => parseIdent( + state1, + more, + resume, + (state2, a) => more(v1 => parseLetBindingSignature(a)( + (() => { + if (state2.consumed) { return {consumed: false, errors: state2.errors, stream: state2.stream}; } + return state2; + })(), + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return parseLetBindingName(a)(state2, more, resume, done); + }, + done + )) +); +const parseGuarded = sepParser => { + const $1 = many1((() => { + const $1 = separated(tokComma)((() => { + const $1 = PureScript$dCST$dParser$dMonad.optional((state1, more, resume, done) => parseBinder( + state1, + more, + (state2, error) => resume({consumed: state1.consumed, errors: state2.errors, stream: state2.stream}, error), + (state2, a) => { + const $7 = Data$dTuple.Tuple(a); + return more(v2 => tokLeftArrow( + state2, + more, + (state2$1, error) => resume({consumed: state1.consumed, errors: state2$1.errors, stream: state2$1.stream}, error), + (state3, a$1) => done(state3, $7(a$1)) + )); + } + )); + return (state1, more, resume, done) => $1( + state1, + more, + resume, + (state2, a) => more(v2 => parseExpr$lazy()(state2, more, resume, (state3, a$1) => done(state3, {binder: a, expr: a$1}))) + ); + })()); + return (state1, more, resume, done) => tokPipe( + state1, + more, + resume, + (state2, a) => more(v2 => $1( + state2, + more, + resume, + (state3, a$1) => more(v2$1 => sepParser( + state3, + more, + resume, + (state3$1, a$2) => more(v2$2 => parseWhere$lazy()(state3$1, more, resume, (state3$2, a$3) => done(state3$2, {bar: a, patterns: a$1, separator: a$2, where: a$3}))) + )) + )) + ); + })()); + return (state1, more, resume, done) => sepParser( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return $1(state1, more, resume, (state2, a) => done(state2, PureScript$dCST$dTypes.$Guarded("Guarded", a))); + }, + (state2, a) => { + const $8 = PureScript$dCST$dTypes.Unconditional(a); + return more(v2 => parseWhere$lazy()( + state2, + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return $1(state1, more, resume, (state2$1, a$1) => done(state2$1, PureScript$dCST$dTypes.$Guarded("Guarded", a$1))); + }, + (state3, a$1) => done(state3, $8(a$1)) + )); + } + ); +}; +const parseDo = (state1, more, resume, done) => tokQualifiedKeyword("do")( + state1, + more, + resume, + (state2, a) => more(v1 => layoutNonEmpty(recoverIndent(PureScript$dCST$dTypes.DoError)(parseDoStatement$lazy()))( + state2, + more, + resume, + (state2$1, a$1) => more(v1$1 => done(state2$1, PureScript$dCST$dTypes.$Expr("ExprDo", {keyword: a, statements: a$1}))) + )) +); +const parseCase = (state1, more, resume, done) => tokKeyword("case")( + state1, + more, + resume, + (state2, a) => more(v1 => separated(tokComma)(parseExpr$lazy())( + state2, + more, + resume, + (state2$1, a$1) => more(v1$1 => tokKeyword("of")( + state2$1, + more, + resume, + (state2$2, a$2) => more(v1$2 => { + const $13 = (() => { + if (state2$2.consumed) { return {consumed: false, errors: state2$2.errors, stream: state2$2.stream}; } + return state2$2; + })(); + return parseBadSingleCaseBranch( + $13, + more, + (state2$3, error) => { + const $16 = {consumed: $13.consumed, errors: state2$3.errors, stream: state2$3.stream}; + if ($16.consumed) { return resume($16, error); } + return parseCaseBranches$lazy()( + state2$2, + more, + resume, + (state2$4, a$3) => more(v1$3 => done(state2$4, PureScript$dCST$dTypes.$Expr("ExprCase", {keyword: a, head: a$1, of: a$2, branches: a$3}))) + ); + }, + (state2$3, a$3) => more(v1$3 => done(state2$3, PureScript$dCST$dTypes.$Expr("ExprCase", {keyword: a, head: a$1, of: a$2, branches: a$3}))) + ); + }) + )) + )) +); +const parseBadSingleCaseWhere = binder => (state1, more, resume, done) => tokRightArrow( + state1, + more, + resume, + (state2, a) => more(v1 => tokLayoutEnd( + state2, + more, + resume, + (state2$1, a$1) => more(v2 => parseWhere$lazy()( + state2$1, + more, + resume, + (state3, a$2) => more(v1$1 => done(state3, [Data$dTuple.$Tuple({head: binder, tail: []}, PureScript$dCST$dTypes.$Guarded("Unconditional", a, a$2))])) + )) + )) +); +const parseBadSingleCaseGuarded = binder => { + const $1 = parseGuarded(tokRightArrow); + return (state1, more, resume, done) => tokLayoutEnd( + state1, + more, + resume, + (state2, a) => more(v2 => $1(state2, more, resume, (state3, a$1) => more(v1 => done(state3, [Data$dTuple.$Tuple({head: binder, tail: []}, a$1)])))) + ); +}; +const parseBadSingleCaseBranch = (state1, more, resume, done) => tokLayoutStart( + state1, + more, + resume, + (state2, a) => more(v2 => parseBinder1( + state2, + more, + resume, + (state3, a$1) => more(v1 => { + const $10 = parseBadSingleCaseGuarded(a$1); + return parseBadSingleCaseWhere(a$1)( + (() => { + if (state3.consumed) { return {consumed: false, errors: state3.errors, stream: state3.stream}; } + return state3; + })(), + more, + (state3$1, error) => { + if (state3$1.consumed) { return resume(state3$1, error); } + return $10(state3, more, resume, done); + }, + done + ); + }) + )) +); +const parseAdo = (state1, more, resume, done) => tokQualifiedKeyword("ado")( + state1, + more, + resume, + (state2, a) => more(v1 => layout(recoverIndent(PureScript$dCST$dTypes.DoError)(parseDoStatement$lazy()))( + state2, + more, + resume, + (state2$1, a$1) => more(v1$1 => tokKeyword("in")( + state2$1, + more, + resume, + (state2$2, a$2) => more(v1$2 => parseExpr$lazy()( + state2$2, + more, + resume, + (state2$3, a$3) => more(v1$3 => done(state2$3, PureScript$dCST$dTypes.$Expr("ExprAdo", {keyword: a, statements: a$1, in: a$2, result: a$3}))) + )) + )) + )) +); +const parseWhere$lazy = /* #__PURE__ */ $runtime.binding(() => PureScript$dCST$dParser$dMonad.lazyParser.defer(v => (state1, more, resume, done) => parseExpr$lazy()( + state1, + more, + resume, + (state2, a) => more(v1 => PureScript$dCST$dParser$dMonad.optional((() => { + const $8 = layoutNonEmpty(recoverIndent(PureScript$dCST$dTypes.LetBindingError)(parseLetBinding$lazy())); + return (state1$1, more$1, resume$1, done$1) => tokKeyword("where")( + state1$1, + more$1, + resume$1, + (state2$1, a$1) => { + const $15 = Data$dTuple.Tuple(a$1); + return more$1(v2 => $8(state2$1, more$1, resume$1, (state3, a$2) => done$1(state3, $15(a$2)))); + } + ); + })())(state2, more, resume, (state2$1, a$1) => more(v1$1 => done(state2$1, {expr: a, bindings: a$1})))) +))); +const parseTickExpr1$lazy = /* #__PURE__ */ $runtime.binding(() => PureScript$dCST$dParser$dMonad.lazyParser.defer(v => (state1, more, resume, done) => parseExpr3$lazy()( + state1, + more, + resume, + (state2, a) => more(v1 => PureScript$dCST$dParser$dMonad.many((state1$1, more$1, resume$1, done$1) => parseQualifiedOperator( + state1$1, + more$1, + resume$1, + (state2$1, a$1) => { + const $14 = Data$dTuple.Tuple(a$1); + return more$1(v2 => parseExpr3$lazy()(state2$1, more$1, resume$1, (state3, a$2) => done$1(state3, $14(a$2)))); + } + ))( + state2, + more, + resume, + (state2$1, a$1) => more(v1$1 => done( + state2$1, + (() => { + if (a$1.length > 0) { return PureScript$dCST$dTypes.$Expr("ExprOp", a, a$1); } + return a; + })() + )) + )) +))); +const parseLetBinding$lazy = /* #__PURE__ */ $runtime.binding(() => PureScript$dCST$dParser$dMonad.lazyParser.defer(v => (state1, more, resume, done) => { + const $5 = (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(); + return parseIdentBinding( + $5, + more, + (state2, error) => { + const $8 = {consumed: $5.consumed, errors: state2.errors, stream: state2.stream}; + if ($8.consumed) { return resume($8, error); } + return parseBinder1( + state1, + more, + resume, + (state2$1, a) => { + const $11 = PureScript$dCST$dTypes.LetBindingPattern(a); + return more(v2 => tokEquals( + state2$1, + more, + resume, + (state3, a$1) => { + const $15 = $11(a$1); + return more(v2$1 => parseWhere$lazy()(state3, more, resume, (state3$1, a$2) => done(state3$1, $15(a$2)))); + } + )); + } + ); + }, + done + ); +})); +const parseExprAtom$lazy = /* #__PURE__ */ $runtime.binding(() => PureScript$dCST$dParser$dMonad.lazyParser.defer(v => (state1, more, resume, done) => parseQualifiedIdent( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return parseQualifiedProper( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$1, error$1) => { + if (state3$1.consumed) { return resume(state3$1, error$1); } + return parseQualifiedSymbol( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$2, error$2) => { + if (state3$2.consumed) { return resume(state3$2, error$2); } + return tokUnderscore( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$3, error$3) => { + if (state3$3.consumed) { return resume(state3$3, error$3); } + return parseHole( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$4, error$4) => { + if (state3$4.consumed) { return resume(state3$4, error$4); } + return parseString( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$5, error$5) => { + if (state3$5.consumed) { return resume(state3$5, error$5); } + return parseChar( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$6, error$6) => { + if (state3$6.consumed) { return resume(state3$6, error$6); } + return parseBoolean( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$7, error$7) => { + if (state3$7.consumed) { return resume(state3$7, error$7); } + return parseInt( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$8, error$8) => { + if (state3$8.consumed) { return resume(state3$8, error$8); } + return parseNumber( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$9, error$9) => { + if (state3$9.consumed) { return resume(state3$9, error$9); } + return delimited(tokLeftSquare)(tokRightSquare)(tokComma)(parseExpr$lazy())( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$10, error$10) => { + if (state3$10.consumed) { return resume(state3$10, error$10); } + return delimited(tokLeftBrace)(tokRightBrace)(tokComma)(parseRecordLabeled(parseExpr$lazy()))( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$11, error$11) => { + if (state3$11.consumed) { return resume(state3$11, error$11); } + return parens(parseExpr$lazy())(state1, more, resume, (state2, a) => done(state2, PureScript$dCST$dTypes.$Expr("ExprParens", a))); + }, + (state2, a) => done(state2, PureScript$dCST$dTypes.$Expr("ExprRecord", a)) + ); + }, + (state2, a) => done(state2, PureScript$dCST$dTypes.$Expr("ExprArray", a)) + ); + }, + (state2, a) => done(state2, PureScript$dCST$dTypes.$Expr("ExprNumber", a._1, a._2)) + ); + }, + (state2, a) => done(state2, PureScript$dCST$dTypes.$Expr("ExprInt", a._1, a._2)) + ); + }, + (state2, a) => done(state2, PureScript$dCST$dTypes.$Expr("ExprBoolean", a._1, a._2)) + ); + }, + (state2, a) => done(state2, PureScript$dCST$dTypes.$Expr("ExprChar", a._1, a._2)) + ); + }, + (state2, a) => done(state2, PureScript$dCST$dTypes.$Expr("ExprString", a._1, a._2)) + ); + }, + (state2, a) => done(state2, PureScript$dCST$dTypes.$Expr("ExprHole", a)) + ); + }, + (state2, a) => done(state2, PureScript$dCST$dTypes.$Expr("ExprSection", a)) + ); + }, + (state2, a) => done(state2, PureScript$dCST$dTypes.$Expr("ExprOpName", a)) + ); + }, + (state2, a) => done(state2, PureScript$dCST$dTypes.$Expr("ExprConstructor", a)) + ); + }, + (state2, a) => done(state2, PureScript$dCST$dTypes.$Expr("ExprIdent", a)) +))); +const parseExpr7$lazy = /* #__PURE__ */ $runtime.binding(() => PureScript$dCST$dParser$dMonad.lazyParser.defer(v => (state1, more, resume, done) => parseExprAtom$lazy()( + state1, + more, + resume, + (state2, a) => more(v1 => parseRecordAccessor(a)( + (() => { + if (state2.consumed) { return {consumed: false, errors: state2.errors, stream: state2.stream}; } + return state2; + })(), + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return done(state2, a); + }, + done + )) +))); +const parseExpr6$lazy = /* #__PURE__ */ $runtime.binding(() => PureScript$dCST$dParser$dMonad.lazyParser.defer(v => (state1, more, resume, done) => parseExpr7$lazy()( + state1, + more, + resume, + (state2, a) => more(v1 => parseRecordUpdates(a)( + (() => { + if (state2.consumed) { return {consumed: false, errors: state2.errors, stream: state2.stream}; } + return state2; + })(), + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return done(state2, a); + }, + done + )) +))); +const parseExpr5$lazy = /* #__PURE__ */ $runtime.binding(() => PureScript$dCST$dParser$dMonad.lazyParser.defer(v => (state1, more, resume, done) => parseIf( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return parseLetIn( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$1, error$1) => { + if (state3$1.consumed) { return resume(state3$1, error$1); } + return parseLambda( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$2, error$2) => { + if (state3$2.consumed) { return resume(state3$2, error$2); } + return parseCase( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$3, error$3) => { + if (state3$3.consumed) { return resume(state3$3, error$3); } + return parseDo( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$4, error$4) => { + if (state3$4.consumed) { return resume(state3$4, error$4); } + return parseAdo( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$5, error$5) => { + if (state3$5.consumed) { return resume(state3$5, error$5); } + return parseExpr6$lazy()(state1, more, resume, done); + }, + done + ); + }, + done + ); + }, + done + ); + }, + done + ); + }, + done + ); + }, + done +))); +const parseExpr4$lazy = /* #__PURE__ */ $runtime.binding(() => PureScript$dCST$dParser$dMonad.lazyParser.defer(v => (state1, more, resume, done) => parseExpr5$lazy()( + state1, + more, + resume, + (state2, a) => more(v1 => PureScript$dCST$dParser$dMonad.many(parseExpr5$lazy())( + state2, + more, + resume, + (state2$1, a$1) => more(v1$1 => done( + state2$1, + (() => { + if (a$1.length > 0) { return PureScript$dCST$dTypes.$Expr("ExprApp", a, a$1); } + return a; + })() + )) + )) +))); +const parseExpr3$lazy = /* #__PURE__ */ $runtime.binding(() => PureScript$dCST$dParser$dMonad.lazyParser.defer(v => (state1, more, resume, done) => tokKeyOperator("-")( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return parseExpr4$lazy()(state1, more, resume, done); + }, + (state2, a) => { + const $7 = PureScript$dCST$dTypes.ExprNegate(a); + return more(v2 => parseExpr3$lazy()( + state2, + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return parseExpr4$lazy()(state1, more, resume, done); + }, + (state3, a$1) => done(state3, $7(a$1)) + )); + } +))); +const parseExpr2$lazy = /* #__PURE__ */ $runtime.binding(() => PureScript$dCST$dParser$dMonad.lazyParser.defer(v => (state1, more, resume, done) => parseExpr3$lazy()( + state1, + more, + resume, + (state2, a) => more(v1 => PureScript$dCST$dParser$dMonad.many((state1$1, more$1, resume$1, done$1) => parseTickExpr( + state1$1, + more$1, + resume$1, + (state2$1, a$1) => { + const $14 = Data$dTuple.Tuple(a$1); + return more$1(v2 => parseExpr3$lazy()(state2$1, more$1, resume$1, (state3, a$2) => done$1(state3, $14(a$2)))); + } + ))( + state2, + more, + resume, + (state2$1, a$1) => more(v1$1 => done( + state2$1, + (() => { + if (a$1.length > 0) { return PureScript$dCST$dTypes.$Expr("ExprInfix", a, a$1); } + return a; + })() + )) + )) +))); +const parseExpr1$lazy = /* #__PURE__ */ $runtime.binding(() => PureScript$dCST$dParser$dMonad.lazyParser.defer(v => (state1, more, resume, done) => parseExpr2$lazy()( + state1, + more, + resume, + (state2, a) => more(v1 => PureScript$dCST$dParser$dMonad.many((state1$1, more$1, resume$1, done$1) => parseQualifiedOperator( + state1$1, + more$1, + resume$1, + (state2$1, a$1) => { + const $14 = Data$dTuple.Tuple(a$1); + return more$1(v2 => parseExpr2$lazy()(state2$1, more$1, resume$1, (state3, a$2) => done$1(state3, $14(a$2)))); + } + ))( + state2, + more, + resume, + (state2$1, a$1) => more(v1$1 => done( + state2$1, + (() => { + if (a$1.length > 0) { return PureScript$dCST$dTypes.$Expr("ExprOp", a, a$1); } + return a; + })() + )) + )) +))); +const parseExpr$lazy = /* #__PURE__ */ $runtime.binding(() => PureScript$dCST$dParser$dMonad.lazyParser.defer(v => (state1, more, resume, done) => parseExpr1$lazy()( + state1, + more, + resume, + (state2, a) => more(v1 => { + const $8 = PureScript$dCST$dTypes.ExprTyped(a); + return tokDoubleColon( + (() => { + if (state2.consumed) { return {consumed: false, errors: state2.errors, stream: state2.stream}; } + return state2; + })(), + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return done(state2, a); + }, + (state2$1, a$1) => { + const $11 = $8(a$1); + return more(v2 => parseType( + state2$1, + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return done(state2, a); + }, + (state3, a$2) => done(state3, $11(a$2)) + )); + } + ); + }) +))); +const parseDoStatement$lazy = /* #__PURE__ */ $runtime.binding(() => PureScript$dCST$dParser$dMonad.lazyParser.defer(v => { + const $1 = layoutNonEmpty(recoverIndent(PureScript$dCST$dTypes.LetBindingError)(parseLetBinding$lazy())); + return (state1, more, resume, done) => { + const $6 = (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + const $8 = (state3$1, error$1) => { + if (state3$1.consumed) { return resume(state3$1, error$1); } + return parseExpr$lazy()(state1, more, resume, (state2, a) => done(state2, PureScript$dCST$dTypes.$DoStatement("DoDiscard", a))); + }; + const $9 = (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(); + return parseBinder( + $9, + more, + (state2, error$1) => $8({consumed: $9.consumed, errors: state2.errors, stream: state2.stream}, error$1), + (state2, a) => { + const $12 = Data$dTuple.Tuple(a); + return more(v2 => tokLeftArrow( + state2, + more, + (state2$1, error$1) => $8({consumed: $9.consumed, errors: state2$1.errors, stream: state2$1.stream}, error$1), + (state3$1, a$1) => { + const $16 = $12(a$1); + const $17 = PureScript$dCST$dTypes.DoBind($16._1)($16._2); + return more(v2$1 => parseExpr$lazy()(state3$1, more, $8, (state3$2, a$2) => done(state3$2, $17(a$2)))); + } + )); + } + ); + }; + return tokKeyword("let")( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + $6, + (state2, a) => { + const $9 = PureScript$dCST$dTypes.DoLet(a); + return more(v2 => $1(state2, more, $6, (state3, a$1) => done(state3, $9(a$1)))); + } + ); + }; +})); +const parseCaseBranches$lazy = /* #__PURE__ */ $runtime.binding(() => PureScript$dCST$dParser$dMonad.lazyParser.defer(v => layoutNonEmpty((() => { + const $1 = separated(tokComma)(parseBinder1); + const $2 = parseGuarded(tokRightArrow); + return (state1, more, resume, done) => $1( + state1, + more, + resume, + (state2, a) => { + const $9 = Data$dTuple.Tuple(a); + return more(v2 => $2(state2, more, resume, (state3, a$1) => done(state3, $9(a$1)))); + } + ); +})()))); +const parseWhere = /* #__PURE__ */ parseWhere$lazy(); +const parseTickExpr1 = /* #__PURE__ */ parseTickExpr1$lazy(); +const parseLetBinding = /* #__PURE__ */ parseLetBinding$lazy(); +const parseExprAtom = /* #__PURE__ */ parseExprAtom$lazy(); +const parseExpr7 = /* #__PURE__ */ parseExpr7$lazy(); +const parseExpr6 = /* #__PURE__ */ parseExpr6$lazy(); +const parseExpr5 = /* #__PURE__ */ parseExpr5$lazy(); +const parseExpr4 = /* #__PURE__ */ parseExpr4$lazy(); +const parseExpr3 = /* #__PURE__ */ parseExpr3$lazy(); +const parseExpr2 = /* #__PURE__ */ parseExpr2$lazy(); +const parseExpr1 = /* #__PURE__ */ parseExpr1$lazy(); +const parseExpr = /* #__PURE__ */ parseExpr$lazy(); +const parseDoStatement = /* #__PURE__ */ parseDoStatement$lazy(); +const parseCaseBranches = /* #__PURE__ */ parseCaseBranches$lazy(); +const parseDeclValue1 = name => (state1, more, resume, done) => PureScript$dCST$dParser$dMonad.many(parseBinderAtom)( + state1, + more, + resume, + (state2, a) => more(v1 => parseGuarded(tokEquals)( + state2, + more, + resume, + (state2$1, a$1) => more(v1$1 => done(state2$1, PureScript$dCST$dTypes.$Declaration("DeclValue", {name: name, binders: a, guarded: a$1}))) + )) +); +const parseDeclValue = (state1, more, resume, done) => parseIdent( + state1, + more, + resume, + (state2, a) => more(v1 => parseDeclSignature(a)( + (() => { + if (state2.consumed) { return {consumed: false, errors: state2.errors, stream: state2.stream}; } + return state2; + })(), + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return parseDeclValue1(a)(state2, more, resume, done); + }, + done + )) +); +const parseInstanceBindingName = name => (state1, more, resume, done) => PureScript$dCST$dParser$dMonad.many(parseBinderAtom)( + state1, + more, + resume, + (state2, a) => more(v1 => parseGuarded(tokEquals)( + state2, + more, + resume, + (state2$1, a$1) => more(v1$1 => done(state2$1, PureScript$dCST$dTypes.$InstanceBinding("InstanceBindingName", {name: name, binders: a, guarded: a$1}))) + )) +); +const parseInstanceBinding = (state1, more, resume, done) => parseIdent( + state1, + more, + resume, + (state2, a) => more(v1 => parseInstanceBindingSignature(a)( + (() => { + if (state2.consumed) { return {consumed: false, errors: state2.errors, stream: state2.stream}; } + return state2; + })(), + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return parseInstanceBindingName(a)(state2, more, resume, done); + }, + done + )) +); +const parseInstance = (state1, more, resume, done) => tokKeyword("instance")( + state1, + more, + resume, + (state2, a) => more(v1 => PureScript$dCST$dParser$dMonad.optional(parseInstanceName)( + state2, + more, + resume, + (state2$1, a$1) => more(v1$1 => PureScript$dCST$dParser$dMonad.optional((() => { + const $10 = parseClassConstraints(parseType3); + return (state1$1, more$1, resume$1, done$1) => $10( + state1$1, + more$1, + (state2$2, error) => resume$1({consumed: state1$1.consumed, errors: state2$2.errors, stream: state2$2.stream}, error), + (state2$2, a$2) => { + const $17 = Data$dTuple.Tuple(a$2); + return more$1(v2 => tokRightFatArrow( + state2$2, + more$1, + (state2$3, error) => resume$1({consumed: state1$1.consumed, errors: state2$3.errors, stream: state2$3.stream}, error), + (state3, a$3) => done$1(state3, $17(a$3)) + )); + } + ); + })())( + state2$1, + more, + resume, + (state2$2, a$2) => more(v1$2 => parseQualifiedProper( + state2$2, + more, + resume, + (state2$3, a$3) => more(v1$3 => PureScript$dCST$dParser$dMonad.many(parseTypeAtom)( + state2$3, + more, + resume, + (state2$4, a$4) => more(v1$4 => PureScript$dCST$dParser$dMonad.optional((() => { + const $19 = layoutNonEmpty(parseInstanceBinding); + return (state1$1, more$1, resume$1, done$1) => tokKeyword("where")( + state1$1, + more$1, + resume$1, + (state2$5, a$5) => { + const $26 = Data$dTuple.Tuple(a$5); + return more$1(v2 => $19(state2$5, more$1, resume$1, (state3, a$6) => done$1(state3, $26(a$6)))); + } + ); + })())(state2$4, more, resume, (state2$5, a$5) => more(v1$5 => done(state2$5, {head: {keyword: a, name: a$1, constraints: a$2, className: a$3, types: a$4}, body: a$5})))) + )) + )) + )) + )) +); +const parseDeclInstanceChain = /* #__PURE__ */ (() => { + const $0 = separated(parseInstanceChainSeparator)(parseInstance); + return (state1, more, resume, done) => $0(state1, more, resume, (state2, a) => done(state2, PureScript$dCST$dTypes.$Declaration("DeclInstanceChain", a))); +})(); +const parseDeclClass1 = keyword => { + const $1 = PureScript$dCST$dParser$dMonad.optional((() => { + const $1 = parseClassConstraints(parseType5); + return (state1, more, resume, done) => $1( + state1, + more, + (state2, error) => resume({consumed: state1.consumed, errors: state2.errors, stream: state2.stream}, error), + (state2, a) => { + const $8 = Data$dTuple.Tuple(a); + return more(v2 => tokLeftFatArrow( + state2, + more, + (state2$1, error) => resume({consumed: state1.consumed, errors: state2$1.errors, stream: state2$1.stream}, error), + (state3, a$1) => done(state3, $8(a$1)) + )); + } + ); + })()); + return (state1, more, resume, done) => $1( + state1, + more, + resume, + (state2, a) => more(v1 => parseProper( + state2, + more, + resume, + (state2$1, a$1) => more(v1$1 => PureScript$dCST$dParser$dMonad.many(parseTypeVarBinding)( + state2$1, + more, + resume, + (state2$2, a$2) => more(v1$2 => PureScript$dCST$dParser$dMonad.optional((() => { + const $15 = separated(tokComma)(parseFundep); + return (state1$1, more$1, resume$1, done$1) => tokPipe( + state1$1, + more$1, + resume$1, + (state2$3, a$3) => { + const $22 = Data$dTuple.Tuple(a$3); + return more$1(v2 => $15(state2$3, more$1, resume$1, (state3, a$4) => done$1(state3, $22(a$4)))); + } + ); + })())( + state2$2, + more, + resume, + (state2$3, a$3) => more(v1$3 => PureScript$dCST$dParser$dMonad.optional((() => { + const $18 = layoutNonEmpty(parseClassMember); + return (state1$1, more$1, resume$1, done$1) => tokKeyword("where")( + state1$1, + more$1, + resume$1, + (state2$4, a$4) => { + const $25 = Data$dTuple.Tuple(a$4); + return more$1(v2 => $18(state2$4, more$1, resume$1, (state3, a$5) => done$1(state3, $25(a$5)))); + } + ); + })())( + state2$3, + more, + resume, + (state2$4, a$4) => more(v1$4 => done(state2$4, PureScript$dCST$dTypes.$Declaration("DeclClass", {keyword: keyword, super: a, name: a$1, vars: a$2, fundeps: a$3}, a$4))) + )) + )) + )) + )) + ); +}; +const parseDeclClass = (state1, more, resume, done) => tokKeyword("class")( + state1, + more, + resume, + (state2, a) => more(v1 => { + const $7 = parseDeclClass1(a); + return parseDeclClassSignature(a)( + (() => { + if (state2.consumed) { return {consumed: false, errors: state2.errors, stream: state2.stream}; } + return state2; + })(), + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return $7(state2, more, resume, done); + }, + done + ); + }) +); +const parseDeclData1 = keyword => name => (state1, more, resume, done) => PureScript$dCST$dParser$dMonad.many(parseTypeVarBinding)( + state1, + more, + resume, + (state2, a) => more(v1 => PureScript$dCST$dParser$dMonad.optional((() => { + const $9 = separated(tokPipe)(parseDataCtor); + return (state1$1, more$1, resume$1, done$1) => tokEquals( + state1$1, + more$1, + resume$1, + (state2$1, a$1) => { + const $16 = Data$dTuple.Tuple(a$1); + return more$1(v2 => $9(state2$1, more$1, resume$1, (state3, a$2) => done$1(state3, $16(a$2)))); + } + ); + })())(state2, more, resume, (state2$1, a$1) => more(v1$1 => done(state2$1, PureScript$dCST$dTypes.$Declaration("DeclData", {keyword: keyword, name: name, vars: a}, a$1))))) +); +const parseDeclData = (state1, more, resume, done) => tokKeyword("data")( + state1, + more, + resume, + (state2, a) => more(v1 => parseProper( + state2, + more, + resume, + (state2$1, a$1) => more(v1$1 => parseDeclKindSignature(a)(a$1)( + (() => { + if (state2$1.consumed) { return {consumed: false, errors: state2$1.errors, stream: state2$1.stream}; } + return state2$1; + })(), + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return parseDeclData1(a)(a$1)(state2$1, more, resume, done); + }, + done + )) + )) +); +const parseDeclNewtype1 = keyword => name => (state1, more, resume, done) => PureScript$dCST$dParser$dMonad.many(parseTypeVarBinding)( + state1, + more, + resume, + (state2, a) => more(v1 => tokEquals( + state2, + more, + resume, + (state2$1, a$1) => more(v1$1 => parseProper( + state2$1, + more, + resume, + (state2$2, a$2) => more(v1$2 => parseTypeAtom( + state2$2, + more, + resume, + (state2$3, a$3) => more(v1$3 => done(state2$3, PureScript$dCST$dTypes.$Declaration("DeclNewtype", {keyword: keyword, name: name, vars: a}, a$1, a$2, a$3))) + )) + )) + )) +); +const parseDeclNewtype = (state1, more, resume, done) => tokKeyword("newtype")( + state1, + more, + resume, + (state2, a) => more(v1 => parseProper( + state2, + more, + resume, + (state2$1, a$1) => more(v1$1 => parseDeclKindSignature(a)(a$1)( + (() => { + if (state2$1.consumed) { return {consumed: false, errors: state2$1.errors, stream: state2$1.stream}; } + return state2$1; + })(), + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return parseDeclNewtype1(a)(a$1)(state2$1, more, resume, done); + }, + done + )) + )) +); +const parseDeclType2 = keyword => name => (state1, more, resume, done) => PureScript$dCST$dParser$dMonad.many(parseTypeVarBinding)( + state1, + more, + resume, + (state2, a) => more(v1 => tokEquals( + state2, + more, + resume, + (state2$1, a$1) => more(v1$1 => parseType( + state2$1, + more, + resume, + (state2$2, a$2) => more(v1$2 => done(state2$2, PureScript$dCST$dTypes.$Declaration("DeclType", {keyword: keyword, name: name, vars: a}, a$1, a$2))) + )) + )) +); +const parseDeclType1 = keyword => (state1, more, resume, done) => parseProper( + state1, + more, + resume, + (state2, a) => more(v1 => parseDeclKindSignature(keyword)(a)( + (() => { + if (state2.consumed) { return {consumed: false, errors: state2.errors, stream: state2.stream}; } + return state2; + })(), + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return parseDeclType2(keyword)(a)(state2, more, resume, done); + }, + done + )) +); +const parseDeclType = (state1, more, resume, done) => tokKeyword("type")( + state1, + more, + resume, + (state2, a) => more(v1 => parseDeclRole(a)( + (() => { + if (state2.consumed) { return {consumed: false, errors: state2.errors, stream: state2.stream}; } + return state2; + })(), + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return parseDeclType1(a)(state2, more, resume, done); + }, + done + )) +); +const parseDecl = (state1, more, resume, done) => parseDeclData( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return parseDeclNewtype( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$1, error$1) => { + if (state3$1.consumed) { return resume(state3$1, error$1); } + return parseDeclType( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$2, error$2) => { + if (state3$2.consumed) { return resume(state3$2, error$2); } + return parseDeclClass( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$3, error$3) => { + if (state3$3.consumed) { return resume(state3$3, error$3); } + return parseDeclInstanceChain( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$4, error$4) => { + if (state3$4.consumed) { return resume(state3$4, error$4); } + return parseDeclDerive( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$5, error$5) => { + if (state3$5.consumed) { return resume(state3$5, error$5); } + return parseDeclValue( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$6, error$6) => { + if (state3$6.consumed) { return resume(state3$6, error$6); } + return parseDeclForeign( + (() => { + if (state1.consumed) { return {consumed: false, errors: state1.errors, stream: state1.stream}; } + return state1; + })(), + more, + (state3$7, error$7) => { + if (state3$7.consumed) { return resume(state3$7, error$7); } + return parseDeclFixity(state1, more, resume, done); + }, + done + ); + }, + done + ); + }, + done + ); + }, + done + ); + }, + done + ); + }, + done + ); + }, + done + ); + }, + done +); +const parseModuleDecls = /* #__PURE__ */ PureScript$dCST$dParser$dMonad.many((state1, more, resume, done) => recoverIndent(PureScript$dCST$dTypes.DeclError)(parseDecl)( + state1, + more, + resume, + (state2, a) => more(v2 => tokLayoutSep( + (() => { + if (state2.consumed) { return {consumed: false, errors: state2.errors, stream: state2.stream}; } + return state2; + })(), + more, + (state3, error) => { + if (state3.consumed) { return resume(state3, error); } + return tokLayoutEnd(state2, more, (v1, error$1) => resume(state2, error$1), (v1, value) => done(state2, a)); + }, + (state3, a$1) => done(state3, a) + )) +)); +const parseModuleBody = (state1, more, resume, done) => parseModuleDecls( + state1, + more, + resume, + (state2, a) => more(v2 => tokLayoutEnd( + state2, + more, + resume, + (state3, a$1) => more(v1 => PureScript$dCST$dParser$dMonad.eof( + state3, + more, + resume, + (state2$1, a$2) => more(v1$1 => done(state2$1, {decls: a, trailingComments: a$2._2, end: a$2._1})) + )) + )) +); +const parseModule = (state1, more, resume, done) => parseModuleHeader( + state1, + more, + resume, + (state2, a) => more(v1 => parseModuleBody(state2, more, resume, (state2$1, a$1) => more(v1$1 => done(state2$1, {header: a, body: a$1})))) +); +export { + braces, + delimited, + expect, + expectMap, + layout, + layoutNonEmpty, + many1, + parens, + parseAdo, + parseBadSingleCaseBranch, + parseBadSingleCaseGuarded, + parseBadSingleCaseWhere, + parseBinder, + parseBinder1, + parseBinder2, + parseBinderAtom, + parseBinderConstructor, + parseBinderNegative, + parseBoolean, + parseCase, + parseCaseBranches, + parseChar, + parseClassConstraints, + parseClassMember, + parseDataCtor, + parseDataMembers, + parseDecl, + parseDeclClass, + parseDeclClass1, + parseDeclClassSignature, + parseDeclData, + parseDeclData1, + parseDeclDerive, + parseDeclFixity, + parseDeclForeign, + parseDeclInstanceChain, + parseDeclKindSignature, + parseDeclNewtype, + parseDeclNewtype1, + parseDeclRole, + parseDeclSignature, + parseDeclType, + parseDeclType1, + parseDeclType2, + parseDeclValue, + parseDeclValue1, + parseDo, + parseDoStatement, + parseEmptyRow, + parseExport, + parseExpr, + parseExpr1, + parseExpr2, + parseExpr3, + parseExpr4, + parseExpr5, + parseExpr6, + parseExpr7, + parseExprAtom, + parseFixityKeyword, + parseFixityOp, + parseForall, + parseForeignData, + parseForeignKind, + parseForeignValue, + parseFundep, + parseGuarded, + parseHole, + parseIdent, + parseIdentBinder, + parseIdentBinding, + parseIf, + parseImport, + parseImportDecl, + parseInstance, + parseInstanceBinding, + parseInstanceBindingName, + parseInstanceBindingSignature, + parseInstanceChainSeparator, + parseInstanceName, + parseInt, + parseKindedVar, + parseLabel, + parseLambda, + parseLetBinding, + parseLetBindingName, + parseLetBindingSignature, + parseLetIn, + parseModule, + parseModuleBody, + parseModuleDecls, + parseModuleHeader, + parseModuleImportDecls, + parseModuleName, + parseNumber, + parseOperator, + parseProper, + parseQualifiedIdent, + parseQualifiedIdentOrProper, + parseQualifiedOperator, + parseQualifiedProper, + parseQualifiedSymbol, + parseRecordAccessor, + parseRecordLabeled, + parseRecordUpdate, + parseRecordUpdateBranch, + parseRecordUpdateLeaf, + parseRecordUpdates, + parseRole, + parseRow, + parseRowLabel, + parseRowParen, + parseRowTailParen, + parseSmallInt, + parseString, + parseSymbol, + parseTickExpr, + parseTickExpr1, + parseType, + parseType1, + parseType2, + parseType3, + parseType4, + parseType5, + parseTypeAtom, + parseTypeNegative, + parseTypeParen, + parseTypeParens, + parseTypeVarBinding, + parseTypeVarKinded, + parseWhere, + recoverIndent, + recoverTokensWhile, + reservedKeywords, + separated, + tokAt, + tokBackslash, + tokComma, + tokDot, + tokDoubleColon, + tokEquals, + tokForall, + tokKeyOperator, + tokKeySymbol, + tokKeyword, + tokLayoutEnd, + tokLayoutSep, + tokLayoutStart, + tokLeftArrow, + tokLeftBrace, + tokLeftFatArrow, + tokLeftParen, + tokLeftSquare, + tokPipe, + tokQualifiedKeyword, + tokRightArrow, + tokRightBrace, + tokRightFatArrow, + tokRightParen, + tokRightSquare, + tokSymbolArrow, + tokTick, + tokUnderscore +}; diff --git a/.storybook/purescript-indexer/output-es/PureScript.CST.Print/index.js b/.storybook/purescript-indexer/output-es/PureScript.CST.Print/index.js new file mode 100644 index 0000000..d07d0fe --- /dev/null +++ b/.storybook/purescript-indexer/output-es/PureScript.CST.Print/index.js @@ -0,0 +1,133 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dFoldable from "../Data.Foldable/index.js"; +import * as Data$dMonoid from "../Data.Monoid/index.js"; +import * as Data$dVoid from "../Data.Void/index.js"; +const $TokenOption = tag => ({tag}); +const power = /* #__PURE__ */ Data$dMonoid.power(Data$dMonoid.monoidString); +const foldMap = /* #__PURE__ */ (() => Data$dFoldable.foldableArray.foldMap(Data$dMonoid.monoidString))(); +const ShowLayout = /* #__PURE__ */ $TokenOption("ShowLayout"); +const HideLayout = /* #__PURE__ */ $TokenOption("HideLayout"); +const printQualified = moduleName => name => { + if (moduleName.tag === "Nothing") { return name; } + if (moduleName.tag === "Just") { return moduleName._1 + ("." + name); } + $runtime.fail(); +}; +const printTokenWithOption = option => v => { + if (v.tag === "TokLeftParen") { return "("; } + if (v.tag === "TokRightParen") { return ")"; } + if (v.tag === "TokLeftBrace") { return "{"; } + if (v.tag === "TokRightBrace") { return "}"; } + if (v.tag === "TokLeftSquare") { return "["; } + if (v.tag === "TokRightSquare") { return "]"; } + if (v.tag === "TokLeftArrow") { + if (v._1.tag === "ASCII") { return "<-"; } + if (v._1.tag === "Unicode") { return "←"; } + $runtime.fail(); + } + if (v.tag === "TokRightArrow") { + if (v._1.tag === "ASCII") { return "->"; } + if (v._1.tag === "Unicode") { return "→"; } + $runtime.fail(); + } + if (v.tag === "TokRightFatArrow") { + if (v._1.tag === "ASCII") { return "=>"; } + if (v._1.tag === "Unicode") { return "⇒"; } + $runtime.fail(); + } + if (v.tag === "TokDoubleColon") { + if (v._1.tag === "ASCII") { return "::"; } + if (v._1.tag === "Unicode") { return "∷"; } + $runtime.fail(); + } + if (v.tag === "TokForall") { + if (v._1.tag === "ASCII") { return "forall"; } + if (v._1.tag === "Unicode") { return "∀"; } + $runtime.fail(); + } + if (v.tag === "TokEquals") { return "="; } + if (v.tag === "TokPipe") { return "|"; } + if (v.tag === "TokTick") { return "`"; } + if (v.tag === "TokDot") { return "."; } + if (v.tag === "TokComma") { return ","; } + if (v.tag === "TokUnderscore") { return "_"; } + if (v.tag === "TokBackslash") { return "\\"; } + if (v.tag === "TokAt") { return "@"; } + if (v.tag === "TokLowerName") { + if (v._1.tag === "Nothing") { return v._2; } + if (v._1.tag === "Just") { return v._1._1 + ("." + v._2); } + $runtime.fail(); + } + if (v.tag === "TokUpperName") { + if (v._1.tag === "Nothing") { return v._2; } + if (v._1.tag === "Just") { return v._1._1 + ("." + v._2); } + $runtime.fail(); + } + if (v.tag === "TokOperator") { + if (v._1.tag === "Nothing") { return v._2; } + if (v._1.tag === "Just") { return v._1._1 + ("." + v._2); } + $runtime.fail(); + } + if (v.tag === "TokSymbolName") { + const $2 = "(" + (v._2 + ")"); + if (v._1.tag === "Nothing") { return $2; } + if (v._1.tag === "Just") { return v._1._1 + ("." + $2); } + $runtime.fail(); + } + if (v.tag === "TokSymbolArrow") { + if (v._1.tag === "ASCII") { return "(->)"; } + if (v._1.tag === "Unicode") { return "(→)"; } + $runtime.fail(); + } + if (v.tag === "TokHole") { return "?" + v._1; } + if (v.tag === "TokChar") { return "'" + (v._1 + "'"); } + if (v.tag === "TokString") { return "\"" + (v._1 + "\""); } + if (v.tag === "TokRawString") { return "\"\"\"" + (v._1 + "\"\"\""); } + if (v.tag === "TokInt") { return v._1; } + if (v.tag === "TokNumber") { return v._1; } + if (v.tag === "TokLayoutStart") { + if (option.tag === "ShowLayout") { return "{"; } + if (option.tag === "HideLayout") { return ""; } + $runtime.fail(); + } + if (v.tag === "TokLayoutSep") { + if (option.tag === "ShowLayout") { return ";"; } + if (option.tag === "HideLayout") { return ""; } + $runtime.fail(); + } + if (v.tag === "TokLayoutEnd") { + if (option.tag === "ShowLayout") { return "}"; } + if (option.tag === "HideLayout") { return ""; } + $runtime.fail(); + } + $runtime.fail(); +}; +const printToken = /* #__PURE__ */ printTokenWithOption(HideLayout); +const printLineFeed = v => { + if (v.tag === "LF") { return "\n"; } + if (v.tag === "CRLF") { return "\r\n"; } + $runtime.fail(); +}; +const printComment = k => v => { + if (v.tag === "Comment") { return v._1; } + if (v.tag === "Space") { return power(" ")(v._1); } + if (v.tag === "Line") { return power(k(v._1))(v._2); } + $runtime.fail(); +}; +const printSourceTokenWithOption = option => tok => foldMap(printComment(printLineFeed))(tok.leadingComments) + ( + printTokenWithOption(option)(tok.value) + foldMap(printComment(Data$dVoid.absurd))(tok.trailingComments) +); +const printSourceToken = /* #__PURE__ */ printSourceTokenWithOption(HideLayout); +export { + $TokenOption, + HideLayout, + ShowLayout, + foldMap, + power, + printComment, + printLineFeed, + printQualified, + printSourceToken, + printSourceTokenWithOption, + printToken, + printTokenWithOption +}; diff --git a/.storybook/purescript-indexer/output-es/PureScript.CST.Range.TokenList/index.js b/.storybook/purescript-indexer/output-es/PureScript.CST.Range.TokenList/index.js new file mode 100644 index 0000000..b96a05a --- /dev/null +++ b/.storybook/purescript-indexer/output-es/PureScript.CST.Range.TokenList/index.js @@ -0,0 +1,234 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dST$dInternal from "../Control.Monad.ST.Internal/index.js"; +import * as Data$dArray$dST from "../Data.Array.ST/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +const $TokenList = (tag, _1, _2, _3) => ({tag, _1, _2, _3}); +const $UnconsToken = (tag, _1, _2) => ({tag, _1, _2}); +const TokenEmpty = /* #__PURE__ */ $TokenList("TokenEmpty"); +const TokenCons = value0 => value1 => $TokenList("TokenCons", value0, value1); +const TokenWrap = value0 => value1 => value2 => $TokenList("TokenWrap", value0, value1, value2); +const TokenAppend = value0 => value1 => $TokenList("TokenAppend", value0, value1); +const TokenDefer = value0 => $TokenList("TokenDefer", value0); +const TokenArray = value0 => value1 => value2 => $TokenList("TokenArray", value0, value1, value2); +const UnconsDone = /* #__PURE__ */ $UnconsToken("UnconsDone"); +const UnconsMore = value0 => value1 => $UnconsToken("UnconsMore", value0, value1); +const wrap = TokenWrap; +const singleton = a => $TokenList("TokenCons", a, TokenEmpty); +const semigroupTokenList = { + append: v => v1 => { + if (v1.tag === "TokenEmpty") { return v; } + if (v.tag === "TokenEmpty") { return v1; } + return $TokenList("TokenAppend", v, v1); + } +}; +const $unconuncon = ($unconuncon$b$copy, $unconuncon$a0$copy, $unconuncon$a1$copy, $unconuncon$a2$copy, $unconuncon$a3$copy) => { + let $unconuncon$b = $unconuncon$b$copy; + let $unconuncon$a0 = $unconuncon$a0$copy; + let $unconuncon$a1 = $unconuncon$a1$copy; + let $unconuncon$a2 = $unconuncon$a2$copy; + let $unconuncon$a3 = $unconuncon$a3$copy; + let $unconuncon$c = true; + let $unconuncon$r; + while ($unconuncon$c) { + if ($unconuncon$b === 0) { + const done = $unconuncon$a0, more = $unconuncon$a1, l = $unconuncon$a2, r = $unconuncon$a3; + if (l.tag === "TokenEmpty") { + $unconuncon$b = 1; + $unconuncon$a0 = done; + $unconuncon$a1 = more; + $unconuncon$a2 = r; + continue; + } + if (l.tag === "TokenCons") { + $unconuncon$c = false; + $unconuncon$r = more(l._1)((() => { + if (r.tag === "TokenEmpty") { return l._2; } + if (l._2.tag === "TokenEmpty") { return r; } + return $TokenList("TokenAppend", l._2, r); + })()); + continue; + } + if (l.tag === "TokenWrap") { + $unconuncon$c = false; + $unconuncon$r = more(l._1)((() => { + if (l._2.tag === "TokenEmpty") { return $TokenList("TokenCons", l._3, r); } + return $TokenList("TokenAppend", l._2, $TokenList("TokenCons", l._3, r)); + })()); + continue; + } + if (l.tag === "TokenAppend") { + $unconuncon$b = 0; + $unconuncon$a0 = done; + $unconuncon$a1 = more; + $unconuncon$a2 = l._1; + $unconuncon$a3 = (() => { + if (r.tag === "TokenEmpty") { return l._2; } + if (l._2.tag === "TokenEmpty") { return r; } + return $TokenList("TokenAppend", l._2, r); + })(); + continue; + } + if (l.tag === "TokenDefer") { + $unconuncon$b = 0; + $unconuncon$a0 = done; + $unconuncon$a1 = more; + $unconuncon$a2 = l._1(Data$dUnit.unit); + $unconuncon$a3 = r; + continue; + } + if (l.tag === "TokenArray") { + $unconuncon$c = false; + $unconuncon$r = more(l._3[l._1])((() => { + if (l._1 === l._2) { return r; } + const $4 = $TokenList("TokenArray", l._1 + 1 | 0, l._2, l._3); + if (r.tag === "TokenEmpty") { return $4; } + if ($4.tag === "TokenEmpty") { return r; } + return $TokenList("TokenAppend", $4, r); + })()); + continue; + } + $runtime.fail(); + } + if ($unconuncon$b === 1) { + const done = $unconuncon$a0, more = $unconuncon$a1, v = $unconuncon$a2; + if (v.tag === "TokenEmpty") { + $unconuncon$c = false; + $unconuncon$r = done; + continue; + } + if (v.tag === "TokenCons") { + $unconuncon$c = false; + $unconuncon$r = more(v._1)(v._2); + continue; + } + if (v.tag === "TokenWrap") { + $unconuncon$c = false; + $unconuncon$r = more(v._1)((() => { + if (v._2.tag === "TokenEmpty") { return $TokenList("TokenCons", v._3, TokenEmpty); } + return $TokenList("TokenAppend", v._2, $TokenList("TokenCons", v._3, TokenEmpty)); + })()); + continue; + } + if (v.tag === "TokenAppend") { + $unconuncon$b = 0; + $unconuncon$a0 = done; + $unconuncon$a1 = more; + $unconuncon$a2 = v._1; + $unconuncon$a3 = v._2; + continue; + } + if (v.tag === "TokenDefer") { + $unconuncon$b = 1; + $unconuncon$a0 = done; + $unconuncon$a1 = more; + $unconuncon$a2 = v._1(Data$dUnit.unit); + continue; + } + if (v.tag === "TokenArray") { + $unconuncon$c = false; + $unconuncon$r = more(v._3[v._1])((() => { + if (v._1 === v._2) { return TokenEmpty; } + return $TokenList("TokenArray", v._1 + 1 | 0, v._2, v._3); + })()); + continue; + } + $runtime.fail(); + } + }; + return $unconuncon$r; +}; +const uncons2 = done => more => l => r => $unconuncon(0, done, more, l, r); +const uncons$p = done => more => v => $unconuncon(1, done, more, v); +const toUnfoldable = dictUnfoldable => dictUnfoldable.unfoldr(uncons$p(Data$dMaybe.Nothing)(a => b => Data$dMaybe.$Maybe("Just", Data$dTuple.$Tuple(a, b)))); +const uncons = /* #__PURE__ */ uncons$p(UnconsDone)(UnconsMore); +const toArray = init => Control$dMonad$dST$dInternal.run(() => { + const arr = Data$dArray$dST.new(); + const cur = {value: init}; + const $$continue = {value: true}; + Control$dMonad$dST$dInternal.while(() => $$continue.value)(() => { + const tree = cur.value; + const v = uncons$p(UnconsDone)(UnconsMore)(tree); + if (v.tag === "UnconsDone") { + $$continue.value = false; + return Data$dUnit.unit; + } + if (v.tag === "UnconsMore") { + cur.value = v._2; + Data$dArray$dST.pushAll([v._1])(arr)(); + return Data$dUnit.unit; + } + $runtime.fail(); + })(); + return Data$dArray$dST.unsafeFreeze(arr)(); +}); +const monoidTokenList = {mempty: TokenEmpty, Semigroup0: () => semigroupTokenList}; +const lazyTokenList = {defer: TokenDefer}; +const head = head$a0$copy => { + let head$a0 = head$a0$copy, head$c = true, head$r; + while (head$c) { + const v = head$a0; + if (v.tag === "TokenEmpty") { + head$c = false; + head$r = Data$dMaybe.Nothing; + continue; + } + if (v.tag === "TokenCons") { + head$c = false; + head$r = Data$dMaybe.$Maybe("Just", v._1); + continue; + } + if (v.tag === "TokenDefer") { + head$a0 = v._1(Data$dUnit.unit); + continue; + } + if (v.tag === "TokenWrap") { + head$c = false; + head$r = Data$dMaybe.$Maybe("Just", v._1); + continue; + } + if (v.tag === "TokenAppend") { + head$a0 = v._1; + continue; + } + if (v.tag === "TokenArray") { + head$c = false; + head$r = Data$dMaybe.$Maybe("Just", v._3[v._1]); + continue; + } + $runtime.fail(); + }; + return head$r; +}; +const fromArray = arr => { + const len = arr.length; + if (len === 0) { return TokenEmpty; } + return $TokenList("TokenArray", 0, len - 1 | 0, arr); +}; +const cons = TokenCons; +export { + $TokenList, + $UnconsToken, + TokenAppend, + TokenArray, + TokenCons, + TokenDefer, + TokenEmpty, + TokenWrap, + UnconsDone, + UnconsMore, + cons, + fromArray, + head, + lazyTokenList, + monoidTokenList, + semigroupTokenList, + singleton, + toArray, + toUnfoldable, + uncons, + uncons$p, + uncons2, + wrap +}; diff --git a/.storybook/purescript-indexer/output-es/PureScript.CST.Range/index.js b/.storybook/purescript-indexer/output-es/PureScript.CST.Range/index.js new file mode 100644 index 0000000..85665ce --- /dev/null +++ b/.storybook/purescript-indexer/output-es/PureScript.CST.Range/index.js @@ -0,0 +1,2178 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dArray from "../Data.Array/index.js"; +import * as Data$dFoldable from "../Data.Foldable/index.js"; +import * as Data$dVoid from "../Data.Void/index.js"; +import * as PureScript$dCST$dRange$dTokenList from "../PureScript.CST.Range.TokenList/index.js"; +const foldMap = /* #__PURE__ */ (() => Data$dFoldable.foldableArray.foldMap(PureScript$dCST$dRange$dTokenList.monoidTokenList))(); +const foldMap1 = v => v1 => { + if (v1.tag === "Nothing") { return PureScript$dCST$dRange$dTokenList.TokenEmpty; } + if (v1.tag === "Just") { return v(v1._1); } + $runtime.fail(); +}; +const foldMap2 = /* #__PURE__ */ (() => Data$dFoldable.foldableArray.foldMap(PureScript$dCST$dRange$dTokenList.monoidTokenList))(); +const tokensOfVoid = {tokensOf: Data$dVoid.absurd}; +const tokensOfRecoveredError = { + tokensOf: v => { + const len = v.tokens.length; + if (len === 0) { return PureScript$dCST$dRange$dTokenList.TokenEmpty; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenArray", 0, len - 1 | 0, v.tokens); + } +}; +const tokensOfQualifiedName = {tokensOf: v => PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v.token, PureScript$dCST$dRange$dTokenList.TokenEmpty)}; +const tokensOfName = {tokensOf: v => PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v.token, PureScript$dCST$dRange$dTokenList.TokenEmpty)}; +const tokensOf = dict => dict.tokensOf; +const tokensOfArray = dictTokensOf => ({tokensOf: foldMap(a => PureScript$dCST$dRange$dTokenList.$TokenList("TokenDefer", v => dictTokensOf.tokensOf(a)))}); +const tokensOfFixityOp = { + tokensOf: v => { + if (v.tag === "FixityValue") { + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.token, PureScript$dCST$dRange$dTokenList.TokenEmpty), + PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._2, PureScript$dCST$dRange$dTokenList.TokenEmpty), + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._3.token, PureScript$dCST$dRange$dTokenList.TokenEmpty) + ) + ); + } + if (v.tag === "FixityType") { + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenCons", + v._1, + PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._2.token, PureScript$dCST$dRange$dTokenList.TokenEmpty), + PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._3, PureScript$dCST$dRange$dTokenList.TokenEmpty), + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._4.token, PureScript$dCST$dRange$dTokenList.TokenEmpty) + ) + ) + ); + } + $runtime.fail(); + } +}; +const tokensOfLabeled = dictTokensOf => dictTokensOf1 => ( + { + tokensOf: v => { + const $3 = dictTokensOf.tokensOf(v.label); + const $4 = dictTokensOf1.tokensOf(v.value); + const $5 = (() => { + if ($4.tag === "TokenEmpty") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v.separator, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v.separator, PureScript$dCST$dRange$dTokenList.TokenEmpty), + $4 + ); + })(); + if ($5.tag === "TokenEmpty") { return $3; } + if ($3.tag === "TokenEmpty") { return $5; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $3, $5); + } + } +); +const tokensOfMaybe = dictTokensOf => ({tokensOf: foldMap1(dictTokensOf.tokensOf)}); +const tokensOfNonEmptyArray = dictTokensOf => ({tokensOf: foldMap2(a => PureScript$dCST$dRange$dTokenList.$TokenList("TokenDefer", v => dictTokensOf.tokensOf(a)))}); +const tokensOf4 = /* #__PURE__ */ foldMap2(a => PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenDefer", + v => PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", a.token, PureScript$dCST$dRange$dTokenList.TokenEmpty) +)); +const tokensOfClassFundep = { + tokensOf: v => { + if (v.tag === "FundepDetermined") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1, tokensOf4(v._2)); } + if (v.tag === "FundepDetermines") { + const $1 = tokensOf4(v._1); + const $2 = tokensOf4(v._3); + const $3 = (() => { + if ($2.tag === "TokenEmpty") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._2, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._2, PureScript$dCST$dRange$dTokenList.TokenEmpty), + $2 + ); + })(); + if ($3.tag === "TokenEmpty") { return $1; } + if ($1.tag === "TokenEmpty") { return $3; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $1, $3); + } + $runtime.fail(); + } +}; +const tokensOfRecordLabeled = dictTokensOf => ( + { + tokensOf: v => { + if (v.tag === "RecordPun") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.token, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + if (v.tag === "RecordField") { + const $2 = PureScript$dCST$dRange$dTokenList.$TokenList("TokenDefer", v1 => PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._2, dictTokensOf.tokensOf(v._3))); + if ($2.tag === "TokenEmpty") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.token, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.token, PureScript$dCST$dRange$dTokenList.TokenEmpty), + $2 + ); + } + $runtime.fail(); + } + } +); +const tokensOfSeparated = dictTokensOf => ( + { + tokensOf: v => { + const $2 = dictTokensOf.tokensOf(v.head); + const $3 = PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenDefer", + v1 => foldMap(v2 => PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenCons", + v2._1, + PureScript$dCST$dRange$dTokenList.$TokenList("TokenDefer", v3 => dictTokensOf.tokensOf(v2._2)) + ))(v.tail) + ); + if ($3.tag === "TokenEmpty") { return $2; } + if ($2.tag === "TokenEmpty") { return $3; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $2, $3); + } + } +); +const tokensOfSeparated1 = /* #__PURE__ */ tokensOfSeparated(tokensOfName); +const tokensOf6 = /* #__PURE__ */ (() => tokensOfSeparated(tokensOfClassFundep).tokensOf)(); +const tokensOfTuple = dictTokensOf => dictTokensOf1 => ( + { + tokensOf: v => { + const $3 = dictTokensOf.tokensOf(v._1); + const $4 = dictTokensOf1.tokensOf(v._2); + if ($4.tag === "TokenEmpty") { return $3; } + if ($3.tag === "TokenEmpty") { return $4; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $3, $4); + } + } +); +const tokensOfWrapped = dictTokensOf => ( + { + tokensOf: v => PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenWrap", + v.open, + PureScript$dCST$dRange$dTokenList.$TokenList("TokenDefer", v1 => dictTokensOf.tokensOf(v.value)), + v.close + ) + } +); +const tokensOf7 = /* #__PURE__ */ (() => tokensOfWrapped({tokensOf: foldMap1(tokensOfSeparated1.tokensOf)}).tokensOf)(); +const tokensOfDataMembers = { + tokensOf: v => { + if (v.tag === "DataAll") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + if (v.tag === "DataEnumerated") { return tokensOf7(v._1); } + $runtime.fail(); + } +}; +const tokensOfExport = dictTokensOf => ( + { + tokensOf: v => { + if (v.tag === "ExportValue") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.token, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + if (v.tag === "ExportOp") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.token, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + if (v.tag === "ExportType") { + const $2 = (() => { + if (v._2.tag === "Nothing") { return PureScript$dCST$dRange$dTokenList.TokenEmpty; } + if (v._2.tag === "Just") { + if (v._2._1.tag === "DataAll") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._2._1._1, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + if (v._2._1.tag === "DataEnumerated") { return tokensOf7(v._2._1._1); } + $runtime.fail(); + } + $runtime.fail(); + })(); + if ($2.tag === "TokenEmpty") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.token, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.token, PureScript$dCST$dRange$dTokenList.TokenEmpty), + $2 + ); + } + if (v.tag === "ExportTypeOp") { + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenCons", + v._1, + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._2.token, PureScript$dCST$dRange$dTokenList.TokenEmpty) + ); + } + if (v.tag === "ExportClass") { + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenCons", + v._1, + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._2.token, PureScript$dCST$dRange$dTokenList.TokenEmpty) + ); + } + if (v.tag === "ExportModule") { + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenCons", + v._1, + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._2.token, PureScript$dCST$dRange$dTokenList.TokenEmpty) + ); + } + if (v.tag === "ExportError") { return dictTokensOf.tokensOf(v._1); } + $runtime.fail(); + } + } +); +const tokensOfImport = dictTokensOf => ( + { + tokensOf: v => { + if (v.tag === "ImportValue") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.token, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + if (v.tag === "ImportOp") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.token, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + if (v.tag === "ImportType") { + const $2 = (() => { + if (v._2.tag === "Nothing") { return PureScript$dCST$dRange$dTokenList.TokenEmpty; } + if (v._2.tag === "Just") { + if (v._2._1.tag === "DataAll") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._2._1._1, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + if (v._2._1.tag === "DataEnumerated") { return tokensOf7(v._2._1._1); } + $runtime.fail(); + } + $runtime.fail(); + })(); + if ($2.tag === "TokenEmpty") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.token, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.token, PureScript$dCST$dRange$dTokenList.TokenEmpty), + $2 + ); + } + if (v.tag === "ImportTypeOp") { + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenCons", + v._1, + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._2.token, PureScript$dCST$dRange$dTokenList.TokenEmpty) + ); + } + if (v.tag === "ImportClass") { + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenCons", + v._1, + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._2.token, PureScript$dCST$dRange$dTokenList.TokenEmpty) + ); + } + if (v.tag === "ImportError") { return dictTokensOf.tokensOf(v._1); } + $runtime.fail(); + } + } +); +const tokensOfImportDecl = dictTokensOf => { + const tokensOf9 = tokensOfWrapped(tokensOfSeparated(tokensOfImport(dictTokensOf))).tokensOf; + return { + tokensOf: v => PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenCons", + v.keyword, + PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenDefer", + v1 => { + const $4 = (() => { + if (v.names.tag === "Nothing") { return PureScript$dCST$dRange$dTokenList.TokenEmpty; } + if (v.names.tag === "Just") { + const $4 = (() => { + if (v.names._1._1.tag === "Nothing") { return PureScript$dCST$dRange$dTokenList.TokenEmpty; } + if (v.names._1._1.tag === "Just") { + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v.names._1._1._1, PureScript$dCST$dRange$dTokenList.TokenEmpty); + } + $runtime.fail(); + })(); + const $5 = PureScript$dCST$dRange$dTokenList.$TokenList("TokenDefer", v3 => tokensOf9(v.names._1._2)); + if ($5.tag === "TokenEmpty") { return $4; } + if ($4.tag === "TokenEmpty") { return $5; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $4, $5); + } + $runtime.fail(); + })(); + const $5 = (() => { + if (v.qualified.tag === "Nothing") { return PureScript$dCST$dRange$dTokenList.TokenEmpty; } + if (v.qualified.tag === "Just") { + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v.qualified._1._1, PureScript$dCST$dRange$dTokenList.TokenEmpty), + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v.qualified._1._2.token, PureScript$dCST$dRange$dTokenList.TokenEmpty) + ); + } + $runtime.fail(); + })(); + const $6 = (() => { + if ($5.tag === "TokenEmpty") { return $4; } + if ($4.tag === "TokenEmpty") { return $5; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $4, $5); + })(); + if ($6.tag === "TokenEmpty") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v.module.token, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v.module.token, PureScript$dCST$dRange$dTokenList.TokenEmpty), + $6 + ); + } + ) + ) + }; +}; +const tokensOfOneOrDelimited = dictTokensOf => { + const tokensOf10 = tokensOfWrapped(tokensOfSeparated(dictTokensOf)).tokensOf; + return { + tokensOf: v => { + if (v.tag === "One") { return dictTokensOf.tokensOf(v._1); } + if (v.tag === "Many") { return tokensOf10(v._1); } + $runtime.fail(); + } + }; +}; +const tokensOfTypeVarBinding = dictTokensOf => ( + { + tokensOf: v => { + if (v.tag === "TypeVarKinded") { return tokensOfWrapped(tokensOfLabeled(tokensOfName)(tokensOfType(dictTokensOf))).tokensOf(v._1); } + if (v.tag === "TypeVarName") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.token, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + $runtime.fail(); + } + } +); +const tokensOfType = dictTokensOf => ( + { + tokensOf: v => { + if (v.tag === "TypeVar") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.token, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + if (v.tag === "TypeConstructor") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.token, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + if (v.tag === "TypeWildcard") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + if (v.tag === "TypeHole") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.token, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + if (v.tag === "TypeString") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + if (v.tag === "TypeInt") { + const $2 = (() => { + if (v._1.tag === "Nothing") { return PureScript$dCST$dRange$dTokenList.TokenEmpty; } + if (v._1.tag === "Just") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1._1, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + $runtime.fail(); + })(); + if ($2.tag === "TokenEmpty") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._2, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + $2, + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._2, PureScript$dCST$dRange$dTokenList.TokenEmpty) + ); + } + if (v.tag === "TypeRow") { return tokensOfWrapped(tokensOfRow(dictTokensOf)).tokensOf(v._1); } + if (v.tag === "TypeRecord") { return tokensOfWrapped(tokensOfRow(dictTokensOf)).tokensOf(v._1); } + if (v.tag === "TypeForall") { + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenCons", + v._1, + PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenDefer", + v1 => { + const $3 = tokensOfTypeVarBinding(dictTokensOf); + const $4 = foldMap2(a => PureScript$dCST$dRange$dTokenList.$TokenList("TokenDefer", v$1 => $3.tokensOf(a)))(v._2); + const $5 = tokensOfType(dictTokensOf).tokensOf(v._4); + const $6 = (() => { + if ($5.tag === "TokenEmpty") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._3, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._3, PureScript$dCST$dRange$dTokenList.TokenEmpty), + $5 + ); + })(); + if ($6.tag === "TokenEmpty") { return $4; } + if ($4.tag === "TokenEmpty") { return $6; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $4, $6); + } + ) + ); + } + if (v.tag === "TypeKinded") { + const $2 = tokensOfType(dictTokensOf).tokensOf(v._1); + const $3 = PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenDefer", + v1 => { + const $4 = tokensOfType(dictTokensOf).tokensOf(v._3); + if ($4.tag === "TokenEmpty") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._2, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._2, PureScript$dCST$dRange$dTokenList.TokenEmpty), + $4 + ); + } + ); + if ($3.tag === "TokenEmpty") { return $2; } + if ($2.tag === "TokenEmpty") { return $3; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $2, $3); + } + if (v.tag === "TypeApp") { + const $2 = tokensOfType(dictTokensOf).tokensOf(v._1); + const $3 = PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenDefer", + v1 => { + const $4 = tokensOfType(dictTokensOf); + return foldMap2(a => PureScript$dCST$dRange$dTokenList.$TokenList("TokenDefer", v$1 => $4.tokensOf(a)))(v._2); + } + ); + if ($3.tag === "TokenEmpty") { return $2; } + if ($2.tag === "TokenEmpty") { return $3; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $2, $3); + } + if (v.tag === "TypeOp") { + const $2 = tokensOfType(dictTokensOf).tokensOf(v._1); + const $3 = PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenDefer", + v1 => foldMap2(v2 => { + const $5 = tokensOfType(dictTokensOf).tokensOf(v2._2); + if ($5.tag === "TokenEmpty") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v2._1.token, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v2._1.token, PureScript$dCST$dRange$dTokenList.TokenEmpty), + $5 + ); + })(v._2) + ); + if ($3.tag === "TokenEmpty") { return $2; } + if ($2.tag === "TokenEmpty") { return $3; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $2, $3); + } + if (v.tag === "TypeOpName") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.token, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + if (v.tag === "TypeArrow") { + const $2 = tokensOfType(dictTokensOf).tokensOf(v._1); + const $3 = PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenDefer", + v1 => { + const $4 = tokensOfType(dictTokensOf).tokensOf(v._3); + if ($4.tag === "TokenEmpty") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._2, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._2, PureScript$dCST$dRange$dTokenList.TokenEmpty), + $4 + ); + } + ); + if ($3.tag === "TokenEmpty") { return $2; } + if ($2.tag === "TokenEmpty") { return $3; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $2, $3); + } + if (v.tag === "TypeArrowName") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + if (v.tag === "TypeConstrained") { + const $2 = tokensOfType(dictTokensOf).tokensOf(v._1); + const $3 = PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenDefer", + v1 => { + const $4 = tokensOfType(dictTokensOf).tokensOf(v._3); + if ($4.tag === "TokenEmpty") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._2, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._2, PureScript$dCST$dRange$dTokenList.TokenEmpty), + $4 + ); + } + ); + if ($3.tag === "TokenEmpty") { return $2; } + if ($2.tag === "TokenEmpty") { return $3; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $2, $3); + } + if (v.tag === "TypeParens") { return tokensOfWrapped(tokensOfType(dictTokensOf)).tokensOf(v._1); } + if (v.tag === "TypeError") { return dictTokensOf.tokensOf(v._1); } + $runtime.fail(); + } + } +); +const tokensOfRow = dictTokensOf => ( + { + tokensOf: v => { + const $2 = tokensOfSeparated(tokensOfLabeled(tokensOfName)(tokensOfType(dictTokensOf))).tokensOf; + const $3 = (() => { + if (v.labels.tag === "Nothing") { return PureScript$dCST$dRange$dTokenList.TokenEmpty; } + if (v.labels.tag === "Just") { return $2(v.labels._1); } + $runtime.fail(); + })(); + const $4 = (() => { + if (v.tail.tag === "Nothing") { return PureScript$dCST$dRange$dTokenList.TokenEmpty; } + if (v.tail.tag === "Just") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v.tail._1._1, tokensOfType(dictTokensOf).tokensOf(v.tail._1._2)); } + $runtime.fail(); + })(); + if ($4.tag === "TokenEmpty") { return $3; } + if ($3.tag === "TokenEmpty") { return $4; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $3, $4); + } + } +); +const tokensOfBinder = dictTokensOf => { + const tokensOf9 = tokensOfType(dictTokensOf).tokensOf; + return { + tokensOf: v => { + if (v.tag === "BinderWildcard") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + if (v.tag === "BinderVar") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.token, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + if (v.tag === "BinderNamed") { + const $3 = PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenDefer", + v1 => PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._2, tokensOfBinder(dictTokensOf).tokensOf(v._3)) + ); + if ($3.tag === "TokenEmpty") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.token, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.token, PureScript$dCST$dRange$dTokenList.TokenEmpty), + $3 + ); + } + if (v.tag === "BinderConstructor") { + const $3 = PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenDefer", + v1 => { + const $4 = tokensOfBinder(dictTokensOf); + return foldMap(a => PureScript$dCST$dRange$dTokenList.$TokenList("TokenDefer", v$1 => $4.tokensOf(a)))(v._2); + } + ); + if ($3.tag === "TokenEmpty") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.token, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.token, PureScript$dCST$dRange$dTokenList.TokenEmpty), + $3 + ); + } + if (v.tag === "BinderBoolean") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + if (v.tag === "BinderChar") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + if (v.tag === "BinderString") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + if (v.tag === "BinderInt") { + const $3 = (() => { + if (v._1.tag === "Nothing") { return PureScript$dCST$dRange$dTokenList.TokenEmpty; } + if (v._1.tag === "Just") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1._1, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + $runtime.fail(); + })(); + if ($3.tag === "TokenEmpty") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._2, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + $3, + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._2, PureScript$dCST$dRange$dTokenList.TokenEmpty) + ); + } + if (v.tag === "BinderNumber") { + const $3 = (() => { + if (v._1.tag === "Nothing") { return PureScript$dCST$dRange$dTokenList.TokenEmpty; } + if (v._1.tag === "Just") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1._1, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + $runtime.fail(); + })(); + if ($3.tag === "TokenEmpty") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._2, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + $3, + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._2, PureScript$dCST$dRange$dTokenList.TokenEmpty) + ); + } + if (v.tag === "BinderArray") { return tokensOfWrapped({tokensOf: foldMap1(tokensOfSeparated(tokensOfBinder(dictTokensOf)).tokensOf)}).tokensOf(v._1); } + if (v.tag === "BinderRecord") { + return tokensOfWrapped({tokensOf: foldMap1(tokensOfSeparated(tokensOfRecordLabeled(tokensOfBinder(dictTokensOf))).tokensOf)}).tokensOf(v._1); + } + if (v.tag === "BinderParens") { return tokensOfWrapped(tokensOfBinder(dictTokensOf)).tokensOf(v._1); } + if (v.tag === "BinderTyped") { + const $3 = tokensOfBinder(dictTokensOf).tokensOf(v._1); + const $4 = PureScript$dCST$dRange$dTokenList.$TokenList("TokenDefer", v1 => PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._2, tokensOf9(v._3))); + if ($4.tag === "TokenEmpty") { return $3; } + if ($3.tag === "TokenEmpty") { return $4; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $3, $4); + } + if (v.tag === "BinderOp") { + const $3 = tokensOfBinder(dictTokensOf).tokensOf(v._1); + const $4 = PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenDefer", + v1 => { + const $5 = tokensOfTuple(tokensOfQualifiedName)(tokensOfBinder(dictTokensOf)); + return foldMap2(a => PureScript$dCST$dRange$dTokenList.$TokenList("TokenDefer", v$1 => $5.tokensOf(a)))(v._2); + } + ); + if ($4.tag === "TokenEmpty") { return $3; } + if ($3.tag === "TokenEmpty") { return $4; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $3, $4); + } + if (v.tag === "BinderError") { return dictTokensOf.tokensOf(v._1); } + $runtime.fail(); + } + }; +}; +const tokensOfDataCtor = dictTokensOf => { + const $1 = tokensOfType(dictTokensOf); + return { + tokensOf: v => { + const $3 = foldMap(a => PureScript$dCST$dRange$dTokenList.$TokenList("TokenDefer", v$1 => $1.tokensOf(a)))(v.fields); + if ($3.tag === "TokenEmpty") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v.name.token, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v.name.token, PureScript$dCST$dRange$dTokenList.TokenEmpty), + $3 + ); + } + }; +}; +const tokensOfForeign = dictTokensOf => { + const tokensOf9 = tokensOfLabeled(tokensOfName)(tokensOfType(dictTokensOf)).tokensOf; + return { + tokensOf: v => { + if (v.tag === "ForeignValue") { return tokensOf9(v._1); } + if (v.tag === "ForeignData") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1, tokensOf9(v._2)); } + if (v.tag === "ForeignKind") { + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenCons", + v._1, + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._2.token, PureScript$dCST$dRange$dTokenList.TokenEmpty) + ); + } + $runtime.fail(); + } + }; +}; +const tokensOfWhere = dictTokensOf => ( + { + tokensOf: v => { + const $2 = tokensOfExpr(dictTokensOf).tokensOf(v.expr); + const $3 = PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenDefer", + v1 => { + if (v.bindings.tag === "Nothing") { return PureScript$dCST$dRange$dTokenList.TokenEmpty; } + if (v.bindings.tag === "Just") { + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenCons", + v.bindings._1._1, + (() => { + const $4 = tokensOfLetBinding(dictTokensOf); + return foldMap2(a => PureScript$dCST$dRange$dTokenList.$TokenList("TokenDefer", v$1 => $4.tokensOf(a)))(v.bindings._1._2); + })() + ); + } + $runtime.fail(); + } + ); + if ($3.tag === "TokenEmpty") { return $2; } + if ($2.tag === "TokenEmpty") { return $3; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $2, $3); + } + } +); +const tokensOfRecordUpdate = dictTokensOf => ( + { + tokensOf: v => { + if (v.tag === "RecordUpdateLeaf") { + const $2 = tokensOfExpr(dictTokensOf).tokensOf(v._3); + const $3 = (() => { + if ($2.tag === "TokenEmpty") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._2, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._2, PureScript$dCST$dRange$dTokenList.TokenEmpty), + $2 + ); + })(); + if ($3.tag === "TokenEmpty") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.token, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.token, PureScript$dCST$dRange$dTokenList.TokenEmpty), + $3 + ); + } + if (v.tag === "RecordUpdateBranch") { + const $2 = tokensOfWrapped(tokensOfSeparated(tokensOfRecordUpdate(dictTokensOf))).tokensOf(v._2); + if ($2.tag === "TokenEmpty") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.token, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.token, PureScript$dCST$dRange$dTokenList.TokenEmpty), + $2 + ); + } + $runtime.fail(); + } + } +); +const tokensOfPatternGuard = dictTokensOf => { + const tokensOf9 = tokensOfBinder(dictTokensOf).tokensOf; + return { + tokensOf: v => { + const $3 = (() => { + if (v.binder.tag === "Nothing") { return PureScript$dCST$dRange$dTokenList.TokenEmpty; } + if (v.binder.tag === "Just") { + const $3 = tokensOf9(v.binder._1._1); + if ($3.tag === "TokenEmpty") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v.binder._1._2, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + $3, + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v.binder._1._2, PureScript$dCST$dRange$dTokenList.TokenEmpty) + ); + } + $runtime.fail(); + })(); + const $4 = tokensOfExpr(dictTokensOf).tokensOf(v.expr); + if ($4.tag === "TokenEmpty") { return $3; } + if ($3.tag === "TokenEmpty") { return $4; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $3, $4); + } + }; +}; +const tokensOfLetBinding = dictTokensOf => { + const tokensOf9 = tokensOfLabeled(tokensOfName)(tokensOfType(dictTokensOf)).tokensOf; + const tokensOfBinder1 = tokensOfBinder(dictTokensOf); + const tokensOf10 = foldMap(a => PureScript$dCST$dRange$dTokenList.$TokenList("TokenDefer", v => tokensOfBinder1.tokensOf(a))); + return { + tokensOf: v => { + if (v.tag === "LetBindingSignature") { return tokensOf9(v._1); } + if (v.tag === "LetBindingName") { + const $5 = PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenDefer", + v1 => { + const $6 = tokensOf10(v._1.binders); + const $7 = tokensOfGuarded(dictTokensOf).tokensOf(v._1.guarded); + if ($7.tag === "TokenEmpty") { return $6; } + if ($6.tag === "TokenEmpty") { return $7; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $6, $7); + } + ); + if ($5.tag === "TokenEmpty") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.name.token, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.name.token, PureScript$dCST$dRange$dTokenList.TokenEmpty), + $5 + ); + } + if (v.tag === "LetBindingPattern") { + const $5 = tokensOfBinder1.tokensOf(v._1); + const $6 = PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenDefer", + v1 => PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._2, tokensOfWhere(dictTokensOf).tokensOf(v._3)) + ); + if ($6.tag === "TokenEmpty") { return $5; } + if ($5.tag === "TokenEmpty") { return $6; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $5, $6); + } + if (v.tag === "LetBindingError") { return dictTokensOf.tokensOf(v._1); } + $runtime.fail(); + } + }; +}; +const tokensOfGuardedExpr = dictTokensOf => ( + { + tokensOf: v => PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenCons", + v.bar, + PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenDefer", + v1 => { + const $3 = tokensOfSeparated(tokensOfPatternGuard(dictTokensOf)).tokensOf(v.patterns); + const $4 = tokensOfWhere(dictTokensOf).tokensOf(v.where); + const $5 = (() => { + if ($4.tag === "TokenEmpty") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v.separator, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v.separator, PureScript$dCST$dRange$dTokenList.TokenEmpty), + $4 + ); + })(); + if ($5.tag === "TokenEmpty") { return $3; } + if ($3.tag === "TokenEmpty") { return $5; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $3, $5); + } + ) + ) + } +); +const tokensOfGuarded = dictTokensOf => ( + { + tokensOf: v => { + if (v.tag === "Unconditional") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1, tokensOfWhere(dictTokensOf).tokensOf(v._2)); } + if (v.tag === "Guarded") { + const $2 = tokensOfGuardedExpr(dictTokensOf); + return foldMap2(a => PureScript$dCST$dRange$dTokenList.$TokenList("TokenDefer", v$1 => $2.tokensOf(a)))(v._1); + } + $runtime.fail(); + } + } +); +const tokensOfExpr = dictTokensOf => { + const tokensOf9 = tokensOfType(dictTokensOf).tokensOf; + const tokensOfBinder1 = tokensOfBinder(dictTokensOf); + const tokensOf10 = foldMap2(a => PureScript$dCST$dRange$dTokenList.$TokenList("TokenDefer", v => tokensOfBinder1.tokensOf(a))); + const tokensOfTuple2 = tokensOfTuple(tokensOfSeparated(tokensOfBinder1)); + return { + tokensOf: v => { + if (v.tag === "ExprHole") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.token, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + if (v.tag === "ExprSection") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + if (v.tag === "ExprIdent") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.token, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + if (v.tag === "ExprConstructor") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.token, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + if (v.tag === "ExprBoolean") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + if (v.tag === "ExprChar") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + if (v.tag === "ExprString") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + if (v.tag === "ExprInt") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + if (v.tag === "ExprNumber") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + if (v.tag === "ExprArray") { return tokensOfWrapped({tokensOf: foldMap1(tokensOfSeparated(tokensOfExpr(dictTokensOf)).tokensOf)}).tokensOf(v._1); } + if (v.tag === "ExprRecord") { return tokensOfWrapped({tokensOf: foldMap1(tokensOfSeparated(tokensOfRecordLabeled(tokensOfExpr(dictTokensOf))).tokensOf)}).tokensOf(v._1); } + if (v.tag === "ExprParens") { return tokensOfWrapped(tokensOfExpr(dictTokensOf)).tokensOf(v._1); } + if (v.tag === "ExprTyped") { + const $6 = tokensOfExpr(dictTokensOf).tokensOf(v._1); + const $7 = PureScript$dCST$dRange$dTokenList.$TokenList("TokenDefer", v1 => PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._2, tokensOf9(v._3))); + if ($7.tag === "TokenEmpty") { return $6; } + if ($6.tag === "TokenEmpty") { return $7; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $6, $7); + } + if (v.tag === "ExprInfix") { + const $6 = tokensOfExpr(dictTokensOf).tokensOf(v._1); + const $7 = PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenDefer", + v1 => { + const $8 = tokensOfTuple(tokensOfWrapped(tokensOfExpr(dictTokensOf)))(tokensOfExpr(dictTokensOf)); + return foldMap2(a => PureScript$dCST$dRange$dTokenList.$TokenList("TokenDefer", v$1 => $8.tokensOf(a)))(v._2); + } + ); + if ($7.tag === "TokenEmpty") { return $6; } + if ($6.tag === "TokenEmpty") { return $7; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $6, $7); + } + if (v.tag === "ExprOp") { + const $6 = tokensOfExpr(dictTokensOf).tokensOf(v._1); + const $7 = PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenDefer", + v1 => { + const $8 = tokensOfTuple(tokensOfQualifiedName)(tokensOfExpr(dictTokensOf)); + return foldMap2(a => PureScript$dCST$dRange$dTokenList.$TokenList("TokenDefer", v$1 => $8.tokensOf(a)))(v._2); + } + ); + if ($7.tag === "TokenEmpty") { return $6; } + if ($6.tag === "TokenEmpty") { return $7; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $6, $7); + } + if (v.tag === "ExprOpName") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.token, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + if (v.tag === "ExprNegate") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1, tokensOfExpr(dictTokensOf).tokensOf(v._2)); } + if (v.tag === "ExprRecordAccessor") { + const $6 = tokensOfExpr(dictTokensOf).tokensOf(v._1.expr); + const $7 = PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenDefer", + v1 => PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.dot, tokensOfSeparated1.tokensOf(v._1.path)) + ); + if ($7.tag === "TokenEmpty") { return $6; } + if ($6.tag === "TokenEmpty") { return $7; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $6, $7); + } + if (v.tag === "ExprRecordUpdate") { + const $6 = tokensOfExpr(dictTokensOf).tokensOf(v._1); + const $7 = PureScript$dCST$dRange$dTokenList.$TokenList("TokenDefer", v1 => tokensOfWrapped(tokensOfSeparated(tokensOfRecordUpdate(dictTokensOf))).tokensOf(v._2)); + if ($7.tag === "TokenEmpty") { return $6; } + if ($6.tag === "TokenEmpty") { return $7; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $6, $7); + } + if (v.tag === "ExprApp") { + const $6 = tokensOfExpr(dictTokensOf).tokensOf(v._1); + const $7 = PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenDefer", + v1 => { + const $8 = tokensOfExpr(dictTokensOf); + return foldMap2(a => PureScript$dCST$dRange$dTokenList.$TokenList("TokenDefer", v$1 => $8.tokensOf(a)))(v._2); + } + ); + if ($7.tag === "TokenEmpty") { return $6; } + if ($6.tag === "TokenEmpty") { return $7; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $6, $7); + } + if (v.tag === "ExprLambda") { + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenCons", + v._1.symbol, + PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenDefer", + v1 => { + const $7 = tokensOf10(v._1.binders); + const $8 = tokensOfExpr(dictTokensOf).tokensOf(v._1.body); + const $9 = (() => { + if ($8.tag === "TokenEmpty") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.arrow, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.arrow, PureScript$dCST$dRange$dTokenList.TokenEmpty), + $8 + ); + })(); + if ($9.tag === "TokenEmpty") { return $7; } + if ($7.tag === "TokenEmpty") { return $9; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $7, $9); + } + ) + ); + } + if (v.tag === "ExprIf") { + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenCons", + v._1.keyword, + PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenDefer", + v1 => { + const $7 = tokensOfExpr(dictTokensOf).tokensOf(v._1.cond); + const $8 = tokensOfExpr(dictTokensOf).tokensOf(v._1.true); + const $9 = tokensOfExpr(dictTokensOf).tokensOf(v._1.false); + const $10 = (() => { + if ($9.tag === "TokenEmpty") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.else, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.else, PureScript$dCST$dRange$dTokenList.TokenEmpty), + $9 + ); + })(); + const $11 = (() => { + if ($10.tag === "TokenEmpty") { return $8; } + if ($8.tag === "TokenEmpty") { return $10; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $8, $10); + })(); + const $12 = (() => { + if ($11.tag === "TokenEmpty") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.then, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.then, PureScript$dCST$dRange$dTokenList.TokenEmpty), + $11 + ); + })(); + if ($12.tag === "TokenEmpty") { return $7; } + if ($7.tag === "TokenEmpty") { return $12; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $7, $12); + } + ) + ); + } + if (v.tag === "ExprCase") { + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenCons", + v._1.keyword, + PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenDefer", + v1 => { + const $7 = tokensOfSeparated(tokensOfExpr(dictTokensOf)).tokensOf(v._1.head); + const $8 = tokensOfTuple2(tokensOfGuarded(dictTokensOf)); + const $9 = foldMap2(a => PureScript$dCST$dRange$dTokenList.$TokenList("TokenDefer", v$1 => $8.tokensOf(a)))(v._1.branches); + const $10 = (() => { + if ($9.tag === "TokenEmpty") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.of, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.of, PureScript$dCST$dRange$dTokenList.TokenEmpty), + $9 + ); + })(); + if ($10.tag === "TokenEmpty") { return $7; } + if ($7.tag === "TokenEmpty") { return $10; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $7, $10); + } + ) + ); + } + if (v.tag === "ExprLet") { + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenCons", + v._1.keyword, + PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenDefer", + v1 => { + const $7 = tokensOfLetBinding(dictTokensOf); + const $8 = foldMap2(a => PureScript$dCST$dRange$dTokenList.$TokenList("TokenDefer", v$1 => $7.tokensOf(a)))(v._1.bindings); + const $9 = tokensOfExpr(dictTokensOf).tokensOf(v._1.body); + const $10 = (() => { + if ($9.tag === "TokenEmpty") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.in, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.in, PureScript$dCST$dRange$dTokenList.TokenEmpty), + $9 + ); + })(); + if ($10.tag === "TokenEmpty") { return $8; } + if ($8.tag === "TokenEmpty") { return $10; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $8, $10); + } + ) + ); + } + if (v.tag === "ExprDo") { + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenCons", + v._1.keyword, + PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenDefer", + v1 => { + const $7 = tokensOfDoStatement(dictTokensOf); + return foldMap2(a => PureScript$dCST$dRange$dTokenList.$TokenList("TokenDefer", v$1 => $7.tokensOf(a)))(v._1.statements); + } + ) + ); + } + if (v.tag === "ExprAdo") { + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenCons", + v._1.keyword, + PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenDefer", + v1 => { + const $7 = tokensOfDoStatement(dictTokensOf); + const $8 = foldMap(a => PureScript$dCST$dRange$dTokenList.$TokenList("TokenDefer", v$1 => $7.tokensOf(a)))(v._1.statements); + const $9 = tokensOfExpr(dictTokensOf).tokensOf(v._1.result); + const $10 = (() => { + if ($9.tag === "TokenEmpty") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.in, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.in, PureScript$dCST$dRange$dTokenList.TokenEmpty), + $9 + ); + })(); + if ($10.tag === "TokenEmpty") { return $8; } + if ($8.tag === "TokenEmpty") { return $10; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $8, $10); + } + ) + ); + } + if (v.tag === "ExprError") { return dictTokensOf.tokensOf(v._1); } + $runtime.fail(); + } + }; +}; +const tokensOfDoStatement = dictTokensOf => { + const tokensOf9 = tokensOfBinder(dictTokensOf).tokensOf; + return { + tokensOf: v => { + if (v.tag === "DoLet") { + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenCons", + v._1, + PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenDefer", + v1 => { + const $4 = tokensOfLetBinding(dictTokensOf); + return foldMap2(a => PureScript$dCST$dRange$dTokenList.$TokenList("TokenDefer", v$1 => $4.tokensOf(a)))(v._2); + } + ) + ); + } + if (v.tag === "DoDiscard") { return tokensOfExpr(dictTokensOf).tokensOf(v._1); } + if (v.tag === "DoBind") { + const $3 = tokensOf9(v._1); + const $4 = PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenDefer", + v1 => PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._2, tokensOfExpr(dictTokensOf).tokensOf(v._3)) + ); + if ($4.tag === "TokenEmpty") { return $3; } + if ($3.tag === "TokenEmpty") { return $4; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $3, $4); + } + if (v.tag === "DoError") { return dictTokensOf.tokensOf(v._1); } + $runtime.fail(); + } + }; +}; +const tokensOfInstanceBinding = dictTokensOf => { + const tokensOf9 = tokensOfLabeled(tokensOfName)(tokensOfType(dictTokensOf)).tokensOf; + const $2 = tokensOfBinder(dictTokensOf); + const tokensOf11 = tokensOfGuarded(dictTokensOf).tokensOf; + return { + tokensOf: v => { + if (v.tag === "InstanceBindingSignature") { return tokensOf9(v._1); } + if (v.tag === "InstanceBindingName") { + const $5 = foldMap(a => PureScript$dCST$dRange$dTokenList.$TokenList("TokenDefer", v$1 => $2.tokensOf(a)))(v._1.binders); + const $6 = tokensOf11(v._1.guarded); + const $7 = (() => { + if ($6.tag === "TokenEmpty") { return $5; } + if ($5.tag === "TokenEmpty") { return $6; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $5, $6); + })(); + if ($7.tag === "TokenEmpty") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.name.token, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.name.token, PureScript$dCST$dRange$dTokenList.TokenEmpty), + $7 + ); + } + $runtime.fail(); + } + }; +}; +const tokensOfInstance = dictTokensOf => { + const tokensOfType1 = tokensOfType(dictTokensOf); + const tokensOf9 = tokensOfOneOrDelimited(tokensOfType1).tokensOf; + const tokensOf10 = foldMap(a => PureScript$dCST$dRange$dTokenList.$TokenList("TokenDefer", v => tokensOfType1.tokensOf(a))); + const $4 = tokensOfInstanceBinding(dictTokensOf); + return { + tokensOf: v => PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenCons", + v.head.keyword, + PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenDefer", + v1 => { + const $7 = (() => { + if (v.head.name.tag === "Nothing") { return PureScript$dCST$dRange$dTokenList.TokenEmpty; } + if (v.head.name.tag === "Just") { + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v.head.name._1._1.token, PureScript$dCST$dRange$dTokenList.TokenEmpty), + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v.head.name._1._2, PureScript$dCST$dRange$dTokenList.TokenEmpty) + ); + } + $runtime.fail(); + })(); + const $8 = (() => { + if (v.head.constraints.tag === "Nothing") { return PureScript$dCST$dRange$dTokenList.TokenEmpty; } + if (v.head.constraints.tag === "Just") { + const $8 = tokensOf9(v.head.constraints._1._1); + if ($8.tag === "TokenEmpty") { + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v.head.constraints._1._2, PureScript$dCST$dRange$dTokenList.TokenEmpty); + } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + $8, + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v.head.constraints._1._2, PureScript$dCST$dRange$dTokenList.TokenEmpty) + ); + } + $runtime.fail(); + })(); + const $9 = tokensOf10(v.head.types); + const $10 = (() => { + if (v.body.tag === "Nothing") { return PureScript$dCST$dRange$dTokenList.TokenEmpty; } + if (v.body.tag === "Just") { + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenCons", + v.body._1._1, + foldMap2(a => PureScript$dCST$dRange$dTokenList.$TokenList("TokenDefer", v$1 => $4.tokensOf(a)))(v.body._1._2) + ); + } + $runtime.fail(); + })(); + const $11 = (() => { + if ($10.tag === "TokenEmpty") { return $9; } + if ($9.tag === "TokenEmpty") { return $10; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $9, $10); + })(); + const $12 = (() => { + if ($11.tag === "TokenEmpty") { + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v.head.className.token, PureScript$dCST$dRange$dTokenList.TokenEmpty); + } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v.head.className.token, PureScript$dCST$dRange$dTokenList.TokenEmpty), + $11 + ); + })(); + const $13 = (() => { + if ($12.tag === "TokenEmpty") { return $8; } + if ($8.tag === "TokenEmpty") { return $12; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $8, $12); + })(); + if ($13.tag === "TokenEmpty") { return $7; } + if ($7.tag === "TokenEmpty") { return $13; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $7, $13); + } + ) + ) + }; +}; +const tokensOfDecl = dictTokensOf => { + const $1 = tokensOfTypeVarBinding(dictTokensOf); + const $2 = foldMap(a => PureScript$dCST$dRange$dTokenList.$TokenList("TokenDefer", v => $1.tokensOf(a))); + const tokensOf10 = tokensOfSeparated(tokensOfDataCtor(dictTokensOf)).tokensOf; + const tokensOfType1 = tokensOfType(dictTokensOf); + const tokensOf12 = tokensOfOneOrDelimited(tokensOfType1).tokensOf; + const tokensOfLabeled2 = tokensOfLabeled(tokensOfName)(tokensOfType1); + const tokensOf13 = foldMap2(a => PureScript$dCST$dRange$dTokenList.$TokenList("TokenDefer", v => tokensOfLabeled2.tokensOf(a))); + const tokensOf14 = tokensOfSeparated(tokensOfInstance(dictTokensOf)).tokensOf; + const tokensOf15 = foldMap(a => PureScript$dCST$dRange$dTokenList.$TokenList("TokenDefer", v => tokensOfType1.tokensOf(a))); + const $10 = tokensOfBinder(dictTokensOf); + const tokensOf18 = tokensOfGuarded(dictTokensOf).tokensOf; + const tokensOf19 = tokensOfForeign(dictTokensOf).tokensOf; + return { + tokensOf: v => { + if (v.tag === "DeclData") { + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenCons", + v._1.keyword, + PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenDefer", + v1 => { + const $15 = $2(v._1.vars); + const $16 = (() => { + if (v._2.tag === "Nothing") { return PureScript$dCST$dRange$dTokenList.TokenEmpty; } + if (v._2.tag === "Just") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._2._1._1, tokensOf10(v._2._1._2)); } + $runtime.fail(); + })(); + const $17 = (() => { + if ($16.tag === "TokenEmpty") { return $15; } + if ($15.tag === "TokenEmpty") { return $16; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $15, $16); + })(); + if ($17.tag === "TokenEmpty") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.name.token, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.name.token, PureScript$dCST$dRange$dTokenList.TokenEmpty), + $17 + ); + } + ) + ); + } + if (v.tag === "DeclType") { + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenCons", + v._1.keyword, + PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenDefer", + v1 => { + const $15 = $2(v._1.vars); + const $16 = tokensOfType1.tokensOf(v._3); + const $17 = (() => { + if ($16.tag === "TokenEmpty") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._2, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._2, PureScript$dCST$dRange$dTokenList.TokenEmpty), + $16 + ); + })(); + const $18 = (() => { + if ($17.tag === "TokenEmpty") { return $15; } + if ($15.tag === "TokenEmpty") { return $17; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $15, $17); + })(); + if ($18.tag === "TokenEmpty") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.name.token, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.name.token, PureScript$dCST$dRange$dTokenList.TokenEmpty), + $18 + ); + } + ) + ); + } + if (v.tag === "DeclNewtype") { + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenCons", + v._1.keyword, + PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenDefer", + v1 => { + const $15 = $2(v._1.vars); + const $16 = tokensOfType1.tokensOf(v._4); + const $17 = (() => { + if ($16.tag === "TokenEmpty") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._3.token, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._3.token, PureScript$dCST$dRange$dTokenList.TokenEmpty), + $16 + ); + })(); + const $18 = (() => { + if ($17.tag === "TokenEmpty") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._2, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._2, PureScript$dCST$dRange$dTokenList.TokenEmpty), + $17 + ); + })(); + const $19 = (() => { + if ($18.tag === "TokenEmpty") { return $15; } + if ($15.tag === "TokenEmpty") { return $18; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $15, $18); + })(); + if ($19.tag === "TokenEmpty") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.name.token, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.name.token, PureScript$dCST$dRange$dTokenList.TokenEmpty), + $19 + ); + } + ) + ); + } + if (v.tag === "DeclClass") { + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenCons", + v._1.keyword, + PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenDefer", + v1 => { + const $15 = (() => { + if (v._1.super.tag === "Nothing") { return PureScript$dCST$dRange$dTokenList.TokenEmpty; } + if (v._1.super.tag === "Just") { + const $15 = tokensOf12(v._1.super._1._1); + if ($15.tag === "TokenEmpty") { + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.super._1._2, PureScript$dCST$dRange$dTokenList.TokenEmpty); + } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + $15, + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.super._1._2, PureScript$dCST$dRange$dTokenList.TokenEmpty) + ); + } + $runtime.fail(); + })(); + const $16 = $2(v._1.vars); + const $17 = (() => { + if (v._1.fundeps.tag === "Nothing") { return PureScript$dCST$dRange$dTokenList.TokenEmpty; } + if (v._1.fundeps.tag === "Just") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.fundeps._1._1, tokensOf6(v._1.fundeps._1._2)); } + $runtime.fail(); + })(); + const $18 = (() => { + if (v._2.tag === "Nothing") { return PureScript$dCST$dRange$dTokenList.TokenEmpty; } + if (v._2.tag === "Just") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._2._1._1, tokensOf13(v._2._1._2)); } + $runtime.fail(); + })(); + const $19 = (() => { + if ($18.tag === "TokenEmpty") { return $17; } + if ($17.tag === "TokenEmpty") { return $18; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $17, $18); + })(); + const $20 = (() => { + if ($19.tag === "TokenEmpty") { return $16; } + if ($16.tag === "TokenEmpty") { return $19; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $16, $19); + })(); + const $21 = (() => { + if ($20.tag === "TokenEmpty") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.name.token, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.name.token, PureScript$dCST$dRange$dTokenList.TokenEmpty), + $20 + ); + })(); + if ($21.tag === "TokenEmpty") { return $15; } + if ($15.tag === "TokenEmpty") { return $21; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $15, $21); + } + ) + ); + } + if (v.tag === "DeclInstanceChain") { return tokensOf14(v._1); } + if (v.tag === "DeclDerive") { + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenCons", + v._1, + PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenDefer", + v1 => { + const $15 = (() => { + if (v._2.tag === "Nothing") { return PureScript$dCST$dRange$dTokenList.TokenEmpty; } + if (v._2.tag === "Just") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._2._1, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + $runtime.fail(); + })(); + const $16 = (() => { + if (v._3.name.tag === "Nothing") { return PureScript$dCST$dRange$dTokenList.TokenEmpty; } + if (v._3.name.tag === "Just") { + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._3.name._1._1.token, PureScript$dCST$dRange$dTokenList.TokenEmpty), + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._3.name._1._2, PureScript$dCST$dRange$dTokenList.TokenEmpty) + ); + } + $runtime.fail(); + })(); + const $17 = (() => { + if (v._3.constraints.tag === "Nothing") { return PureScript$dCST$dRange$dTokenList.TokenEmpty; } + if (v._3.constraints.tag === "Just") { + const $17 = tokensOf12(v._3.constraints._1._1); + if ($17.tag === "TokenEmpty") { + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._3.constraints._1._2, PureScript$dCST$dRange$dTokenList.TokenEmpty); + } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + $17, + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._3.constraints._1._2, PureScript$dCST$dRange$dTokenList.TokenEmpty) + ); + } + $runtime.fail(); + })(); + const $18 = tokensOf15(v._3.types); + const $19 = (() => { + if ($18.tag === "TokenEmpty") { + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._3.className.token, PureScript$dCST$dRange$dTokenList.TokenEmpty); + } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._3.className.token, PureScript$dCST$dRange$dTokenList.TokenEmpty), + $18 + ); + })(); + const $20 = (() => { + if ($19.tag === "TokenEmpty") { return $17; } + if ($17.tag === "TokenEmpty") { return $19; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $17, $19); + })(); + const $21 = (() => { + if ($20.tag === "TokenEmpty") { return $16; } + if ($16.tag === "TokenEmpty") { return $20; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $16, $20); + })(); + const $22 = (() => { + if ($21.tag === "TokenEmpty") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._3.keyword, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._3.keyword, PureScript$dCST$dRange$dTokenList.TokenEmpty), + $21 + ); + })(); + if ($22.tag === "TokenEmpty") { return $15; } + if ($15.tag === "TokenEmpty") { return $22; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $15, $22); + } + ) + ); + } + if (v.tag === "DeclKindSignature") { + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1, PureScript$dCST$dRange$dTokenList.$TokenList("TokenDefer", v1 => tokensOfLabeled2.tokensOf(v._2))); + } + if (v.tag === "DeclSignature") { return tokensOfLabeled2.tokensOf(v._1); } + if (v.tag === "DeclValue") { + const $14 = PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenDefer", + v1 => { + const $15 = foldMap(a => PureScript$dCST$dRange$dTokenList.$TokenList("TokenDefer", v$1 => $10.tokensOf(a)))(v._1.binders); + const $16 = tokensOf18(v._1.guarded); + if ($16.tag === "TokenEmpty") { return $15; } + if ($15.tag === "TokenEmpty") { return $16; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $15, $16); + } + ); + if ($14.tag === "TokenEmpty") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.name.token, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.name.token, PureScript$dCST$dRange$dTokenList.TokenEmpty), + $14 + ); + } + if (v.tag === "DeclFixity") { + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenCons", + v._1.keyword._1, + PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenDefer", + v1 => PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._1.prec._1, tokensOfFixityOp.tokensOf(v._1.operator)) + ) + ); + } + if (v.tag === "DeclForeign") { + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenCons", + v._1, + PureScript$dCST$dRange$dTokenList.$TokenList("TokenDefer", v1 => PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._2, tokensOf19(v._3))) + ); + } + if (v.tag === "DeclRole") { + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenCons", + v._1, + PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenDefer", + v1 => { + const $15 = foldMap2(v2 => PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v2._1, PureScript$dCST$dRange$dTokenList.TokenEmpty))(v._4); + const $16 = (() => { + if ($15.tag === "TokenEmpty") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._3.token, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._3.token, PureScript$dCST$dRange$dTokenList.TokenEmpty), + $15 + ); + })(); + if ($16.tag === "TokenEmpty") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._2, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v._2, PureScript$dCST$dRange$dTokenList.TokenEmpty), + $16 + ); + } + ) + ); + } + if (v.tag === "DeclError") { return dictTokensOf.tokensOf(v._1); } + $runtime.fail(); + } + }; +}; +const tokensOfModule = dictTokensOf => { + const tokensOf9 = tokensOfWrapped(tokensOfSeparated(tokensOfExport(dictTokensOf))).tokensOf; + const tokensOf10 = tokensOfImportDecl(dictTokensOf).tokensOf; + const tokensOf11 = tokensOfDecl(dictTokensOf).tokensOf; + return { + tokensOf: v => PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenCons", + v.header.keyword, + (() => { + const $5 = PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenDefer", + v1 => { + if (v.header.exports.tag === "Nothing") { return PureScript$dCST$dRange$dTokenList.TokenEmpty; } + if (v.header.exports.tag === "Just") { return tokensOf9(v.header.exports._1); } + $runtime.fail(); + } + ); + const $6 = PureScript$dCST$dRange$dTokenList.$TokenList("TokenDefer", v1 => foldMap(tokensOf10)(v.header.imports)); + const $7 = PureScript$dCST$dRange$dTokenList.$TokenList("TokenDefer", v1 => foldMap(tokensOf11)(v.body.decls)); + const $8 = (() => { + if ($7.tag === "TokenEmpty") { return $6; } + if ($6.tag === "TokenEmpty") { return $7; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $6, $7); + })(); + const $9 = (() => { + if ($8.tag === "TokenEmpty") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v.header.where, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v.header.where, PureScript$dCST$dRange$dTokenList.TokenEmpty), + $8 + ); + })(); + const $10 = (() => { + if ($9.tag === "TokenEmpty") { return $5; } + if ($5.tag === "TokenEmpty") { return $9; } + return PureScript$dCST$dRange$dTokenList.$TokenList("TokenAppend", $5, $9); + })(); + if ($10.tag === "TokenEmpty") { return PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v.header.name.token, PureScript$dCST$dRange$dTokenList.TokenEmpty); } + return PureScript$dCST$dRange$dTokenList.$TokenList( + "TokenAppend", + PureScript$dCST$dRange$dTokenList.$TokenList("TokenCons", v.header.name.token, PureScript$dCST$dRange$dTokenList.TokenEmpty), + $10 + ); + })() + ) + }; +}; +const rangeOfWrapped = {rangeOf: v => ({start: v.open.range.start, end: v.close.range.end})}; +const rangeOfVoid = {rangeOf: Data$dVoid.absurd}; +const rangeOfRecoveredError = { + rangeOf: v => { + if (v.tokens.length > 0) { + return { + start: (() => { + const $1 = Data$dArray.index(v.tokens)(0); + if ($1.tag === "Just") { return $1._1.range.start; } + $runtime.fail(); + })(), + end: (() => { + const $1 = Data$dArray.index(v.tokens)(v.tokens.length - 1 | 0); + if ($1.tag === "Just") { return $1._1.range.end; } + $runtime.fail(); + })() + }; + } + return {start: v.position, end: v.position}; + } +}; +const rangeOfQualifiedName = {rangeOf: v => v.token.range}; +const rangeOfName = {rangeOf: v => v.token.range}; +const rangeOfModule = {rangeOf: v => ({start: v.header.keyword.range.start, end: v.body.end})}; +const rangeOf = dict => dict.rangeOf; +const rangeOfClassFundep = { + rangeOf: v => { + if (v.tag === "FundepDetermined") { + return { + start: v._1.range.start, + end: (() => { + const $1 = Data$dArray.index(v._2)(v._2.length - 1 | 0); + if ($1.tag === "Just") { return $1._1.token.range.end; } + $runtime.fail(); + })() + }; + } + if (v.tag === "FundepDetermines") { + return { + start: (() => { + const $1 = Data$dArray.index(v._1)(0); + if ($1.tag === "Just") { return $1._1.token.range.start; } + $runtime.fail(); + })(), + end: (() => { + const $1 = Data$dArray.index(v._3)(v._3.length - 1 | 0); + if ($1.tag === "Just") { return $1._1.token.range.end; } + $runtime.fail(); + })() + }; + } + $runtime.fail(); + } +}; +const rangeOfDataMembers = { + rangeOf: v => { + if (v.tag === "DataAll") { return v._1.range; } + if (v.tag === "DataEnumerated") { return {start: v._1.open.range.start, end: v._1.close.range.end}; } + $runtime.fail(); + } +}; +const rangeOfExport = dictRangeOf => ( + { + rangeOf: v => { + if (v.tag === "ExportValue") { return v._1.token.range; } + if (v.tag === "ExportOp") { return v._1.token.range; } + if (v.tag === "ExportType") { + if (v._2.tag === "Nothing") { return v._1.token.range; } + if (v._2.tag === "Just") { + return { + start: v._1.token.range.start, + end: (() => { + if (v._2._1.tag === "DataAll") { return v._2._1._1.range.end; } + if (v._2._1.tag === "DataEnumerated") { return v._2._1._1.close.range.end; } + $runtime.fail(); + })() + }; + } + $runtime.fail(); + } + if (v.tag === "ExportTypeOp") { return {start: v._1.range.start, end: v._2.token.range.end}; } + if (v.tag === "ExportClass") { return {start: v._1.range.start, end: v._2.token.range.end}; } + if (v.tag === "ExportModule") { return {start: v._1.range.start, end: v._2.token.range.end}; } + if (v.tag === "ExportError") { return dictRangeOf.rangeOf(v._1); } + $runtime.fail(); + } + } +); +const rangeOfFixityOp = { + rangeOf: v => { + if (v.tag === "FixityValue") { return {start: v._1.token.range.start, end: v._3.token.range.end}; } + if (v.tag === "FixityType") { return {start: v._1.range.start, end: v._4.token.range.end}; } + $runtime.fail(); + } +}; +const rangeOfImport = dictRangeOf => ( + { + rangeOf: v => { + if (v.tag === "ImportValue") { return v._1.token.range; } + if (v.tag === "ImportOp") { return v._1.token.range; } + if (v.tag === "ImportType") { + if (v._2.tag === "Nothing") { return v._1.token.range; } + if (v._2.tag === "Just") { + return { + start: v._1.token.range.start, + end: (() => { + if (v._2._1.tag === "DataAll") { return v._2._1._1.range.end; } + if (v._2._1.tag === "DataEnumerated") { return v._2._1._1.close.range.end; } + $runtime.fail(); + })() + }; + } + $runtime.fail(); + } + if (v.tag === "ImportTypeOp") { return {start: v._1.range.start, end: v._2.token.range.end}; } + if (v.tag === "ImportClass") { return {start: v._1.range.start, end: v._2.token.range.end}; } + if (v.tag === "ImportError") { return dictRangeOf.rangeOf(v._1); } + $runtime.fail(); + } + } +); +const rangeOfImportDecl = { + rangeOf: v => ( + { + start: v.keyword.range.start, + end: (() => { + if (v.qualified.tag === "Nothing") { + if (v.names.tag === "Nothing") { return v.module.token.range.end; } + if (v.names.tag === "Just") { return v.names._1._2.close.range.end; } + $runtime.fail(); + } + if (v.qualified.tag === "Just") { return v.qualified._1._2.token.range.end; } + $runtime.fail(); + })() + } + ) +}; +const rangeOfLabeled = dictRangeOf => dictRangeOf1 => ({rangeOf: v => ({start: dictRangeOf.rangeOf(v.label).start, end: dictRangeOf1.rangeOf(v.value).end})}); +const rangeOfOneOrDelimited = dictRangeOf => ( + { + rangeOf: v => { + if (v.tag === "One") { return dictRangeOf.rangeOf(v._1); } + if (v.tag === "Many") { return {start: v._1.open.range.start, end: v._1.close.range.end}; } + $runtime.fail(); + } + } +); +const rangeOfSeparated = dictRangeOf => ( + { + rangeOf: v => { + const v1 = Data$dArray.index(v.tail)(v.tail.length - 1 | 0); + if (v1.tag === "Just") { return {start: dictRangeOf.rangeOf(v.head).start, end: dictRangeOf.rangeOf(v1._1._2).end}; } + if (v1.tag === "Nothing") { return dictRangeOf.rangeOf(v.head); } + $runtime.fail(); + } + } +); +const rangeOf6 = /* #__PURE__ */ (() => rangeOfSeparated(rangeOfName).rangeOf)(); +const rangeOf7 = /* #__PURE__ */ (() => rangeOfSeparated(rangeOfClassFundep).rangeOf)(); +const rangeOfType = dictRangeOf => ( + { + rangeOf: v => { + if (v.tag === "TypeVar") { return v._1.token.range; } + if (v.tag === "TypeConstructor") { return v._1.token.range; } + if (v.tag === "TypeWildcard") { return v._1.range; } + if (v.tag === "TypeHole") { return v._1.token.range; } + if (v.tag === "TypeString") { return v._1.range; } + if (v.tag === "TypeInt") { + if (v._1.tag === "Nothing") { return v._2.range; } + if (v._1.tag === "Just") { return {start: v._1._1.range.start, end: v._2.range.end}; } + $runtime.fail(); + } + if (v.tag === "TypeRow") { return {start: v._1.open.range.start, end: v._1.close.range.end}; } + if (v.tag === "TypeRecord") { return {start: v._1.open.range.start, end: v._1.close.range.end}; } + if (v.tag === "TypeForall") { return {start: v._1.range.start, end: rangeOfType(dictRangeOf).rangeOf(v._4).end}; } + if (v.tag === "TypeKinded") { return {start: rangeOfType(dictRangeOf).rangeOf(v._1).start, end: rangeOfType(dictRangeOf).rangeOf(v._3).end}; } + if (v.tag === "TypeApp") { + return { + start: rangeOfType(dictRangeOf).rangeOf(v._1).start, + end: rangeOfType(dictRangeOf).rangeOf((() => { + const $2 = Data$dArray.index(v._2)(v._2.length - 1 | 0); + if ($2.tag === "Just") { return $2._1; } + $runtime.fail(); + })()).end + }; + } + if (v.tag === "TypeOp") { + return { + start: rangeOfType(dictRangeOf).rangeOf(v._1).start, + end: rangeOfType(dictRangeOf).rangeOf((() => { + const $2 = Data$dArray.index(v._2)(v._2.length - 1 | 0); + if ($2.tag === "Just") { return $2._1._2; } + $runtime.fail(); + })()).end + }; + } + if (v.tag === "TypeOpName") { return v._1.token.range; } + if (v.tag === "TypeArrow") { return {start: rangeOfType(dictRangeOf).rangeOf(v._1).start, end: rangeOfType(dictRangeOf).rangeOf(v._3).end}; } + if (v.tag === "TypeArrowName") { return v._1.range; } + if (v.tag === "TypeConstrained") { return {start: rangeOfType(dictRangeOf).rangeOf(v._1).start, end: rangeOfType(dictRangeOf).rangeOf(v._3).end}; } + if (v.tag === "TypeParens") { return {start: v._1.open.range.start, end: v._1.close.range.end}; } + if (v.tag === "TypeError") { return dictRangeOf.rangeOf(v._1); } + $runtime.fail(); + } + } +); +const rangeOfBinder = dictRangeOf => { + const rangeOf9 = rangeOfType(dictRangeOf).rangeOf; + return { + rangeOf: v => { + if (v.tag === "BinderWildcard") { return v._1.range; } + if (v.tag === "BinderVar") { return v._1.token.range; } + if (v.tag === "BinderNamed") { return {start: v._1.token.range.start, end: rangeOfBinder(dictRangeOf).rangeOf(v._3).end}; } + if (v.tag === "BinderConstructor") { + const v1 = Data$dArray.index(v._2)(v._2.length - 1 | 0); + if (v1.tag === "Nothing") { return v._1.token.range; } + if (v1.tag === "Just") { return {start: v._1.token.range.start, end: rangeOfBinder(dictRangeOf).rangeOf(v1._1).end}; } + $runtime.fail(); + } + if (v.tag === "BinderBoolean") { return v._1.range; } + if (v.tag === "BinderChar") { return v._1.range; } + if (v.tag === "BinderString") { return v._1.range; } + if (v.tag === "BinderInt") { + if (v._1.tag === "Nothing") { return v._2.range; } + if (v._1.tag === "Just") { return {start: v._1._1.range.start, end: v._2.range.end}; } + $runtime.fail(); + } + if (v.tag === "BinderNumber") { + if (v._1.tag === "Nothing") { return v._2.range; } + if (v._1.tag === "Just") { return {start: v._1._1.range.start, end: v._2.range.end}; } + $runtime.fail(); + } + if (v.tag === "BinderArray") { return {start: v._1.open.range.start, end: v._1.close.range.end}; } + if (v.tag === "BinderRecord") { return {start: v._1.open.range.start, end: v._1.close.range.end}; } + if (v.tag === "BinderParens") { return {start: v._1.open.range.start, end: v._1.close.range.end}; } + if (v.tag === "BinderTyped") { return {start: rangeOfBinder(dictRangeOf).rangeOf(v._1).start, end: rangeOf9(v._3).end}; } + if (v.tag === "BinderOp") { + return { + start: rangeOfBinder(dictRangeOf).rangeOf(v._1).start, + end: rangeOfBinder(dictRangeOf).rangeOf((() => { + const $3 = Data$dArray.index(v._2)(v._2.length - 1 | 0); + if ($3.tag === "Just") { return $3._1._2; } + $runtime.fail(); + })()).end + }; + } + if (v.tag === "BinderError") { return dictRangeOf.rangeOf(v._1); } + $runtime.fail(); + } + }; +}; +const rangeOfDataCtor = dictRangeOf => { + const rangeOf9 = rangeOfType(dictRangeOf).rangeOf; + return { + rangeOf: v => { + const v2 = Data$dArray.index(v.fields)(v.fields.length - 1 | 0); + return { + start: v.name.token.range.start, + end: (() => { + if (v2.tag === "Nothing") { return v.name.token.range.end; } + if (v2.tag === "Just") { return rangeOf9(v2._1).end; } + $runtime.fail(); + })() + }; + } + }; +}; +const rangeOfForeign = dictRangeOf => { + const $1 = rangeOfType(dictRangeOf); + return { + rangeOf: v => { + if (v.tag === "ForeignValue") { return {start: v._1.label.token.range.start, end: $1.rangeOf(v._1.value).end}; } + if (v.tag === "ForeignData") { return {start: v._1.range.start, end: $1.rangeOf(v._2.value).end}; } + if (v.tag === "ForeignKind") { return {start: v._1.range.start, end: v._2.token.range.end}; } + $runtime.fail(); + } + }; +}; +const rangeOfTypeVarBinding = { + rangeOf: v => { + if (v.tag === "TypeVarKinded") { return {start: v._1.open.range.start, end: v._1.close.range.end}; } + if (v.tag === "TypeVarName") { return v._1.token.range; } + $runtime.fail(); + } +}; +const rangeOfWhere = dictRangeOf => ( + { + rangeOf: v => { + if (v.bindings.tag === "Nothing") { return rangeOfExpr(dictRangeOf).rangeOf(v.expr); } + if (v.bindings.tag === "Just") { + return { + start: rangeOfExpr(dictRangeOf).rangeOf(v.expr).start, + end: rangeOfLetBinding(dictRangeOf).rangeOf((() => { + const $2 = Data$dArray.index(v.bindings._1._2)(v.bindings._1._2.length - 1 | 0); + if ($2.tag === "Just") { return $2._1; } + $runtime.fail(); + })()).end + }; + } + $runtime.fail(); + } + } +); +const rangeOfLetBinding = dictRangeOf => { + const $1 = rangeOfType(dictRangeOf); + const rangeOf10 = rangeOfBinder(dictRangeOf).rangeOf; + return { + rangeOf: v => { + if (v.tag === "LetBindingSignature") { return {start: v._1.label.token.range.start, end: $1.rangeOf(v._1.value).end}; } + if (v.tag === "LetBindingName") { return {start: v._1.name.token.range.start, end: rangeOfGuarded(dictRangeOf).rangeOf(v._1.guarded).end}; } + if (v.tag === "LetBindingPattern") { return {start: rangeOf10(v._1).start, end: rangeOfWhere(dictRangeOf).rangeOf(v._3).end}; } + if (v.tag === "LetBindingError") { return dictRangeOf.rangeOf(v._1); } + $runtime.fail(); + } + }; +}; +const rangeOfGuardedExpr = dictRangeOf => ({rangeOf: v => ({start: v.bar.range.start, end: rangeOfWhere(dictRangeOf).rangeOf(v.where).end})}); +const rangeOfGuarded = dictRangeOf => ( + { + rangeOf: v => { + if (v.tag === "Unconditional") { return {start: v._1.range.start, end: rangeOfWhere(dictRangeOf).rangeOf(v._2).end}; } + if (v.tag === "Guarded") { + return { + start: rangeOfGuardedExpr(dictRangeOf).rangeOf((() => { + const $2 = Data$dArray.index(v._1)(0); + if ($2.tag === "Just") { return $2._1; } + $runtime.fail(); + })()).start, + end: rangeOfGuardedExpr(dictRangeOf).rangeOf((() => { + const $2 = Data$dArray.index(v._1)(v._1.length - 1 | 0); + if ($2.tag === "Just") { return $2._1; } + $runtime.fail(); + })()).end + }; + } + $runtime.fail(); + } + } +); +const rangeOfExpr = dictRangeOf => { + const rangeOf9 = rangeOfType(dictRangeOf).rangeOf; + return { + rangeOf: v => { + if (v.tag === "ExprHole") { return v._1.token.range; } + if (v.tag === "ExprSection") { return v._1.range; } + if (v.tag === "ExprIdent") { return v._1.token.range; } + if (v.tag === "ExprConstructor") { return v._1.token.range; } + if (v.tag === "ExprBoolean") { return v._1.range; } + if (v.tag === "ExprChar") { return v._1.range; } + if (v.tag === "ExprString") { return v._1.range; } + if (v.tag === "ExprInt") { return v._1.range; } + if (v.tag === "ExprNumber") { return v._1.range; } + if (v.tag === "ExprArray") { return {start: v._1.open.range.start, end: v._1.close.range.end}; } + if (v.tag === "ExprRecord") { return {start: v._1.open.range.start, end: v._1.close.range.end}; } + if (v.tag === "ExprParens") { return {start: v._1.open.range.start, end: v._1.close.range.end}; } + if (v.tag === "ExprTyped") { return {start: rangeOfExpr(dictRangeOf).rangeOf(v._1).start, end: rangeOf9(v._3).end}; } + if (v.tag === "ExprInfix") { + return { + start: rangeOfExpr(dictRangeOf).rangeOf(v._1).start, + end: rangeOfExpr(dictRangeOf).rangeOf((() => { + const $3 = Data$dArray.index(v._2)(v._2.length - 1 | 0); + if ($3.tag === "Just") { return $3._1._2; } + $runtime.fail(); + })()).end + }; + } + if (v.tag === "ExprOp") { + return { + start: rangeOfExpr(dictRangeOf).rangeOf(v._1).start, + end: rangeOfExpr(dictRangeOf).rangeOf((() => { + const $3 = Data$dArray.index(v._2)(v._2.length - 1 | 0); + if ($3.tag === "Just") { return $3._1._2; } + $runtime.fail(); + })()).end + }; + } + if (v.tag === "ExprOpName") { return v._1.token.range; } + if (v.tag === "ExprNegate") { return {start: v._1.range.start, end: rangeOfExpr(dictRangeOf).rangeOf(v._2).end}; } + if (v.tag === "ExprRecordAccessor") { return {start: rangeOfExpr(dictRangeOf).rangeOf(v._1.expr).start, end: rangeOf6(v._1.path).end}; } + if (v.tag === "ExprRecordUpdate") { return {start: rangeOfExpr(dictRangeOf).rangeOf(v._1).start, end: v._2.close.range.end}; } + if (v.tag === "ExprApp") { + return { + start: rangeOfExpr(dictRangeOf).rangeOf(v._1).start, + end: rangeOfExpr(dictRangeOf).rangeOf((() => { + const $3 = Data$dArray.index(v._2)(v._2.length - 1 | 0); + if ($3.tag === "Just") { return $3._1; } + $runtime.fail(); + })()).end + }; + } + if (v.tag === "ExprLambda") { return {start: v._1.symbol.range.start, end: rangeOfExpr(dictRangeOf).rangeOf(v._1.body).end}; } + if (v.tag === "ExprIf") { return {start: v._1.keyword.range.start, end: rangeOfExpr(dictRangeOf).rangeOf(v._1.false).end}; } + if (v.tag === "ExprCase") { + return { + start: v._1.keyword.range.start, + end: rangeOfGuarded(dictRangeOf).rangeOf((() => { + const $3 = Data$dArray.index(v._1.branches)(v._1.branches.length - 1 | 0); + if ($3.tag === "Just") { return $3._1._2; } + $runtime.fail(); + })()).end + }; + } + if (v.tag === "ExprLet") { return {start: v._1.keyword.range.start, end: rangeOfExpr(dictRangeOf).rangeOf(v._1.body).end}; } + if (v.tag === "ExprDo") { + return { + start: v._1.keyword.range.start, + end: rangeOfDoStatement(dictRangeOf).rangeOf((() => { + const $3 = Data$dArray.index(v._1.statements)(v._1.statements.length - 1 | 0); + if ($3.tag === "Just") { return $3._1; } + $runtime.fail(); + })()).end + }; + } + if (v.tag === "ExprAdo") { return {start: v._1.keyword.range.start, end: rangeOfExpr(dictRangeOf).rangeOf(v._1.result).end}; } + if (v.tag === "ExprError") { return dictRangeOf.rangeOf(v._1); } + $runtime.fail(); + } + }; +}; +const rangeOfDoStatement = dictRangeOf => { + const rangeOf9 = rangeOfBinder(dictRangeOf).rangeOf; + return { + rangeOf: v => { + if (v.tag === "DoLet") { + return { + start: v._1.range.start, + end: rangeOfLetBinding(dictRangeOf).rangeOf((() => { + const $3 = Data$dArray.index(v._2)(v._2.length - 1 | 0); + if ($3.tag === "Just") { return $3._1; } + $runtime.fail(); + })()).end + }; + } + if (v.tag === "DoDiscard") { return rangeOfExpr(dictRangeOf).rangeOf(v._1); } + if (v.tag === "DoBind") { return {start: rangeOf9(v._1).start, end: rangeOfExpr(dictRangeOf).rangeOf(v._3).end}; } + if (v.tag === "DoError") { return dictRangeOf.rangeOf(v._1); } + $runtime.fail(); + } + }; +}; +const rangeOfInstanceBinding = dictRangeOf => { + const $1 = rangeOfType(dictRangeOf); + const rangeOf10 = rangeOfGuarded(dictRangeOf).rangeOf; + return { + rangeOf: v => { + if (v.tag === "InstanceBindingSignature") { return {start: v._1.label.token.range.start, end: $1.rangeOf(v._1.value).end}; } + if (v.tag === "InstanceBindingName") { return {start: v._1.name.token.range.start, end: rangeOf10(v._1.guarded).end}; } + $runtime.fail(); + } + }; +}; +const rangeOfInstance = dictRangeOf => { + const rangeOf9 = rangeOfType(dictRangeOf).rangeOf; + const rangeOf10 = rangeOfInstanceBinding(dictRangeOf).rangeOf; + return { + rangeOf: v => ( + { + start: v.head.keyword.range.start, + end: (() => { + if (v.body.tag === "Nothing") { + const v2 = Data$dArray.index(v.head.types)(v.head.types.length - 1 | 0); + if (v2.tag === "Nothing") { return v.head.className.token.range.end; } + if (v2.tag === "Just") { return rangeOf9(v2._1).end; } + $runtime.fail(); + } + if (v.body.tag === "Just") { + return rangeOf10((() => { + const $4 = Data$dArray.index(v.body._1._2)(v.body._1._2.length - 1 | 0); + if ($4.tag === "Just") { return $4._1; } + $runtime.fail(); + })()).end; + } + $runtime.fail(); + })() + } + ) + }; +}; +const rangeOfDecl = dictRangeOf => { + const rangeOf9 = rangeOfDataCtor(dictRangeOf).rangeOf; + const rangeOfType1 = rangeOfType(dictRangeOf); + const rangeOf12 = rangeOfSeparated(rangeOfInstance(dictRangeOf)).rangeOf; + const rangeOf13 = rangeOfGuarded(dictRangeOf).rangeOf; + const rangeOf14 = rangeOfForeign(dictRangeOf).rangeOf; + return { + rangeOf: v => { + if (v.tag === "DeclData") { + return { + start: v._1.keyword.range.start, + end: (() => { + if (v._2.tag === "Nothing") { + const v2 = Data$dArray.index(v._1.vars)(v._1.vars.length - 1 | 0); + if (v2.tag === "Nothing") { return v._1.name.token.range.end; } + if (v2.tag === "Just") { + if (v2._1.tag === "TypeVarKinded") { return v2._1._1.close.range.end; } + if (v2._1.tag === "TypeVarName") { return v2._1._1.token.range.end; } + $runtime.fail(); + } + $runtime.fail(); + } + if (v._2.tag === "Just") { + return rangeOf9((() => { + const $7 = Data$dArray.index(v._2._1._2.tail)(v._2._1._2.tail.length - 1 | 0); + if ($7.tag === "Nothing") { return v._2._1._2.head; } + if ($7.tag === "Just") { return $7._1._2; } + $runtime.fail(); + })()).end; + } + $runtime.fail(); + })() + }; + } + if (v.tag === "DeclType") { return {start: v._1.keyword.range.start, end: rangeOfType1.rangeOf(v._3).end}; } + if (v.tag === "DeclNewtype") { return {start: v._1.keyword.range.start, end: rangeOfType1.rangeOf(v._4).end}; } + if (v.tag === "DeclClass") { + return { + start: v._1.keyword.range.start, + end: (() => { + if (v._2.tag === "Nothing") { + if (v._1.fundeps.tag === "Nothing") { + const v2 = Data$dArray.index(v._1.vars)(v._1.vars.length - 1 | 0); + if (v2.tag === "Nothing") { return v._1.name.token.range.end; } + if (v2.tag === "Just") { + if (v2._1.tag === "TypeVarKinded") { return v2._1._1.close.range.end; } + if (v2._1.tag === "TypeVarName") { return v2._1._1.token.range.end; } + $runtime.fail(); + } + $runtime.fail(); + } + if (v._1.fundeps.tag === "Just") { return rangeOf7(v._1.fundeps._1._2).end; } + $runtime.fail(); + } + if (v._2.tag === "Just") { + const $7 = Data$dArray.index(v._2._1._2)(v._2._1._2.length - 1 | 0); + return rangeOfType1.rangeOf((() => { + if ($7.tag === "Just") { return $7._1.value; } + $runtime.fail(); + })()).end; + } + $runtime.fail(); + })() + }; + } + if (v.tag === "DeclInstanceChain") { return rangeOf12(v._1); } + if (v.tag === "DeclDerive") { + const v2 = Data$dArray.index(v._3.types)(v._3.types.length - 1 | 0); + return { + start: v._1.range.start, + end: (() => { + if (v2.tag === "Nothing") { return v._3.className.token.range.end; } + if (v2.tag === "Just") { return rangeOfType1.rangeOf(v2._1).end; } + $runtime.fail(); + })() + }; + } + if (v.tag === "DeclKindSignature") { return {start: v._1.range.start, end: rangeOfType1.rangeOf(v._2.value).end}; } + if (v.tag === "DeclSignature") { return {start: v._1.label.token.range.start, end: rangeOfType1.rangeOf(v._1.value).end}; } + if (v.tag === "DeclValue") { return {start: v._1.name.token.range.start, end: rangeOf13(v._1.guarded).end}; } + if (v.tag === "DeclFixity") { + return { + start: v._1.keyword._1.range.start, + end: (() => { + if (v._1.operator.tag === "FixityValue") { return v._1.operator._3.token.range.end; } + if (v._1.operator.tag === "FixityType") { return v._1.operator._4.token.range.end; } + $runtime.fail(); + })() + }; + } + if (v.tag === "DeclForeign") { return {start: v._1.range.start, end: rangeOf14(v._3).end}; } + if (v.tag === "DeclRole") { + return { + start: v._1.range.start, + end: (() => { + const $7 = Data$dArray.index(v._4)(v._4.length - 1 | 0); + if ($7.tag === "Just") { return $7._1._1.range.end; } + $runtime.fail(); + })() + }; + } + if (v.tag === "DeclError") { return dictRangeOf.rangeOf(v._1); } + $runtime.fail(); + } + }; +}; +export { + foldMap, + foldMap1, + foldMap2, + rangeOf, + rangeOf6, + rangeOf7, + rangeOfBinder, + rangeOfClassFundep, + rangeOfDataCtor, + rangeOfDataMembers, + rangeOfDecl, + rangeOfDoStatement, + rangeOfExport, + rangeOfExpr, + rangeOfFixityOp, + rangeOfForeign, + rangeOfGuarded, + rangeOfGuardedExpr, + rangeOfImport, + rangeOfImportDecl, + rangeOfInstance, + rangeOfInstanceBinding, + rangeOfLabeled, + rangeOfLetBinding, + rangeOfModule, + rangeOfName, + rangeOfOneOrDelimited, + rangeOfQualifiedName, + rangeOfRecoveredError, + rangeOfSeparated, + rangeOfType, + rangeOfTypeVarBinding, + rangeOfVoid, + rangeOfWhere, + rangeOfWrapped, + tokensOf, + tokensOf4, + tokensOf6, + tokensOf7, + tokensOfArray, + tokensOfBinder, + tokensOfClassFundep, + tokensOfDataCtor, + tokensOfDataMembers, + tokensOfDecl, + tokensOfDoStatement, + tokensOfExport, + tokensOfExpr, + tokensOfFixityOp, + tokensOfForeign, + tokensOfGuarded, + tokensOfGuardedExpr, + tokensOfImport, + tokensOfImportDecl, + tokensOfInstance, + tokensOfInstanceBinding, + tokensOfLabeled, + tokensOfLetBinding, + tokensOfMaybe, + tokensOfModule, + tokensOfName, + tokensOfNonEmptyArray, + tokensOfOneOrDelimited, + tokensOfPatternGuard, + tokensOfQualifiedName, + tokensOfRecordLabeled, + tokensOfRecordUpdate, + tokensOfRecoveredError, + tokensOfRow, + tokensOfSeparated, + tokensOfSeparated1, + tokensOfTuple, + tokensOfType, + tokensOfTypeVarBinding, + tokensOfVoid, + tokensOfWhere, + tokensOfWrapped +}; diff --git a/.storybook/purescript-indexer/output-es/PureScript.CST.TokenStream/index.js b/.storybook/purescript-indexer/output-es/PureScript.CST.TokenStream/index.js new file mode 100644 index 0000000..a12c4a0 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/PureScript.CST.TokenStream/index.js @@ -0,0 +1,48 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dLazy from "../Data.Lazy/index.js"; +import * as Data$dList$dTypes from "../Data.List.Types/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +import * as PureScript$dCST$dTypes from "../PureScript.CST.Types/index.js"; +const $TokenStep = (tag, _1, _2, _3, _4) => ({tag, _1, _2, _3, _4}); +const TokenEOF = value0 => value1 => $TokenStep("TokenEOF", value0, value1); +const TokenError = value0 => value1 => value2 => value3 => $TokenStep("TokenError", value0, value1, value2, value3); +const TokenCons = value0 => value1 => value2 => value3 => $TokenStep("TokenCons", value0, value1, value2, value3); +const TokenStream = x => x; +const newtypeTokenStream = {Coercible0: () => undefined}; +const step = x => Data$dLazy.force(x); +const unwindLayout = pos => eof => { + const go = stk => Data$dLazy.defer(v => { + if (stk.tag === "Nil") { return Data$dLazy.force(eof); } + if (stk.tag === "Cons") { + if (stk._1._2.tag === "LytRoot") { return Data$dLazy.force(eof); } + if ( + stk._1._2.tag === "LytLet" || ( + stk._1._2.tag === "LytLetStmt" || (stk._1._2.tag === "LytWhere" || (stk._1._2.tag === "LytOf" || (stk._1._2.tag === "LytDo" || stk._1._2.tag === "LytAdo"))) + ) + ) { + return $TokenStep( + "TokenCons", + {range: {start: pos, end: pos}, leadingComments: [], trailingComments: [], value: PureScript$dCST$dTypes.$Token("TokLayoutEnd", stk._1._1.column)}, + pos, + go(stk._2), + stk._2 + ); + } + return Data$dLazy.force(go(stk._2)); + } + $runtime.fail(); + }); + return go; +}; +const layoutStack = stream => { + const v = Data$dLazy.force(stream); + if (v.tag === "TokenEOF") { return Data$dList$dTypes.Nil; } + if (v.tag === "TokenError") { return v._4; } + if (v.tag === "TokenCons") { return v._4; } + $runtime.fail(); +}; +const consTokens = dictFoldable => { + const $1 = dictFoldable.foldr(v => v1 => Data$dTuple.$Tuple(v._1.range.start, Data$dLazy.defer(v2 => $TokenStep("TokenCons", v._1, v1._1, v1._2, v._2)))); + return b => a => $1(a)(b); +}; +export {$TokenStep, TokenCons, TokenEOF, TokenError, TokenStream, consTokens, layoutStack, newtypeTokenStream, step, unwindLayout}; diff --git a/.storybook/purescript-indexer/output-es/PureScript.CST.Traversal/index.js b/.storybook/purescript-indexer/output-es/PureScript.CST.Traversal/index.js new file mode 100644 index 0000000..3bbbe3f --- /dev/null +++ b/.storybook/purescript-indexer/output-es/PureScript.CST.Traversal/index.js @@ -0,0 +1,889 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dFree from "../Control.Monad.Free/index.js"; +import * as Data$dBitraversable from "../Data.Bitraversable/index.js"; +import * as Data$dCatList from "../Data.CatList/index.js"; +import * as Data$dCatQueue from "../Data.CatQueue/index.js"; +import * as Data$dConst from "../Data.Const/index.js"; +import * as Data$dFunctor$dCompose from "../Data.Functor.Compose/index.js"; +import * as Data$dIdentity from "../Data.Identity/index.js"; +import * as Data$dList$dTypes from "../Data.List.Types/index.js"; +import * as Data$dTraversable from "../Data.Traversable/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +import * as Data$dUnit from "../Data.Unit/index.js"; +import * as PureScript$dCST$dTypes from "../PureScript.CST.Types/index.js"; +import * as Unsafe$dCoerce from "../Unsafe.Coerce/index.js"; +const applicativeReaderT = /* #__PURE__ */ (() => { + const functorReaderT1 = {map: x => v => x$1 => x(v(x$1))}; + const applyReaderT1 = {apply: v => v1 => r => v(r)(v1(r)), Functor0: () => functorReaderT1}; + return {pure: x => v => x, Apply0: () => applyReaderT1}; +})(); +const applyCompose = dictApply1 => { + const $1 = dictApply1.Functor0(); + const functorCompose2 = { + map: f => v => { + const $4 = $1.map(f); + return Control$dMonad$dFree.$Free( + v._1, + Data$dCatList.link(v._2)(Data$dCatList.$CatList( + "CatCons", + x => Control$dMonad$dFree.$Free(Control$dMonad$dFree.$FreeView("Return", $4(x)), Data$dCatList.CatNil), + Data$dCatQueue.$CatQueue(Data$dList$dTypes.Nil, Data$dList$dTypes.Nil) + )) + ); + } + }; + return { + apply: v => v1 => Control$dMonad$dFree.freeApply.apply(Control$dMonad$dFree.$Free( + v._1, + Data$dCatList.link(v._2)(Data$dCatList.$CatList( + "CatCons", + x => Control$dMonad$dFree.$Free(Control$dMonad$dFree.$FreeView("Return", dictApply1.apply(x)), Data$dCatList.CatNil), + Data$dCatQueue.$CatQueue(Data$dList$dTypes.Nil, Data$dList$dTypes.Nil) + )) + ))(v1), + Functor0: () => functorCompose2 + }; +}; +const applicativeCompose = /* #__PURE__ */ Data$dFunctor$dCompose.applicativeCompose(Control$dMonad$dFree.freeApplicative); +const identity = x => x; +const traverseWrapped = dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + return k => v => map(value => ({open: v.open, value: value, close: v.close}))(k(v.value)); +}; +const traverseSeparated = dictApplicative => { + const Apply0 = dictApplicative.Apply0(); + const map = Apply0.Functor0().map; + const traverse4 = Data$dTraversable.traversableArray.traverse(dictApplicative); + const traverse5 = Data$dTraversable.traversableTuple.traverse(dictApplicative); + return k => v => Apply0.apply(map(v1 => v2 => ({head: v1, tail: v2}))(k(v.head)))(traverse4(traverse5(k))(v.tail)); +}; +const traverseRecordUpdate = dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + const map$1 = dictApplicative.Apply0().Functor0().map; + const traverseSeparated1 = traverseSeparated(dictApplicative); + return k => v => { + if (v.tag === "RecordUpdateLeaf") { return map(PureScript$dCST$dTypes.RecordUpdateLeaf(v._1)(v._2))(k.onExpr(v._3)); } + if (v.tag === "RecordUpdateBranch") { + return map(PureScript$dCST$dTypes.RecordUpdateBranch(v._1))(map$1(value => ({open: v._2.open, value: value, close: v._2.close}))(traverseSeparated1(traverseRecordUpdate(dictApplicative)(k))(v._2.value))); + } + $runtime.fail(); + }; +}; +const traverseRecordLabeled = dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + return k => v => { + if (v.tag === "RecordPun") { return dictApplicative.pure(PureScript$dCST$dTypes.$RecordLabeled("RecordPun", v._1)); } + if (v.tag === "RecordField") { return map(PureScript$dCST$dTypes.RecordField(v._1)(v._2))(k(v._3)); } + $runtime.fail(); + }; +}; +const traverseRecordAccessor = dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + return k => r => map(v => ({expr: v, dot: r.dot, path: r.path}))(k.onExpr(r.expr)); +}; +const traversePatternGuard = dictApplicative => { + const Apply0 = dictApplicative.Apply0(); + const map = Apply0.Functor0().map; + const traverse4 = Data$dTraversable.traversableMaybe.traverse(dictApplicative); + const bitraverse2 = Data$dBitraversable.bitraversableTuple.bitraverse(dictApplicative); + return k => v => Apply0.apply(map(binder => expr => ({binder: binder, expr: expr}))(traverse4(bitraverse2(k.onBinder)(dictApplicative.pure))(v.binder)))(k.onExpr(v.expr)); +}; +const traverseModuleBody = dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + const traverse4 = Data$dTraversable.traversableArray.traverse(dictApplicative); + return k => v => map(decls => ({decls: decls, trailingComments: v.trailingComments, end: v.end}))(traverse4(k.onDecl)(v.decls)); +}; +const traverseModule = dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + const traverseModuleBody1 = traverseModuleBody(dictApplicative); + return k => v => map(body => ({header: v.header, body: body}))(traverseModuleBody1(k)(v.body)); +}; +const traverseModule1 = /* #__PURE__ */ traverseModule(Control$dMonad$dFree.freeApplicative); +const traverseLambda = dictApplicative => { + const Apply0 = dictApplicative.Apply0(); + const map = Apply0.Functor0().map; + const traverse4 = Data$dTraversable.traversableArray.traverse(dictApplicative); + return k => l => Apply0.apply(map(v => v1 => ({binders: v, body: v1, arrow: l.arrow, symbol: l.symbol}))(traverse4(k.onBinder)(l.binders)))(k.onExpr(l.body)); +}; +const traverseLabeled = dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + return k => v => map(value => ({label: v.label, separator: v.separator, value: value}))(k(v.value)); +}; +const traverseRow = dictApplicative => { + const Apply0 = dictApplicative.Apply0(); + const map = Apply0.Functor0().map; + const traverse4 = Data$dTraversable.traversableMaybe.traverse(dictApplicative); + const traverseSeparated1 = traverseSeparated(dictApplicative); + const map$1 = dictApplicative.Apply0().Functor0().map; + const traverse5 = Data$dTraversable.traversableTuple.traverse(dictApplicative); + return k => v => Apply0.apply(map(labels => tail => ({labels: labels, tail: tail}))(traverse4(traverseSeparated1(v$1 => map$1(value => ( + {label: v$1.label, separator: v$1.separator, value: value} + ))(k.onType(v$1.value))))(v.labels)))(traverse4(traverse5(k.onType))(v.tail)); +}; +const traverseTypeVarBinding = dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + const map$1 = dictApplicative.Apply0().Functor0().map; + const map$2 = dictApplicative.Apply0().Functor0().map; + return k => v => { + if (v.tag === "TypeVarKinded") { + return map(PureScript$dCST$dTypes.TypeVarKinded)(map$1(value => ({open: v._1.open, value: value, close: v._1.close}))(map$2(value => ( + {label: v._1.value.label, separator: v._1.value.separator, value: value} + ))(k.onType(v._1.value.value)))); + } + if (v.tag === "TypeVarName") { return dictApplicative.pure(PureScript$dCST$dTypes.$TypeVarBinding("TypeVarName", v._1)); } + $runtime.fail(); + }; +}; +const traverseType = dictApplicative => { + const Apply0 = dictApplicative.Apply0(); + const Functor0 = Apply0.Functor0(); + const map = dictApplicative.Apply0().Functor0().map; + const traverseWrapped1 = (k, v) => map(value => ({open: v.open, value: value, close: v.close}))(k(v.value)); + const traverseRow1 = traverseRow(dictApplicative); + const traverse4 = Data$dTraversable.traversableArray.traverse(dictApplicative); + const traverseTypeVarBinding1 = traverseTypeVarBinding(dictApplicative); + const traverse5 = Data$dTraversable.traversableTuple.traverse(dictApplicative); + return k => v => { + if (v.tag === "TypeRow") { return Functor0.map(PureScript$dCST$dTypes.TypeRow)(traverseWrapped1(traverseRow1(k), v._1)); } + if (v.tag === "TypeRecord") { return Functor0.map(PureScript$dCST$dTypes.TypeRecord)(traverseWrapped1(traverseRow1(k), v._1)); } + if (v.tag === "TypeForall") { + return Apply0.apply(Functor0.map(f => f(v._3))(Functor0.map(PureScript$dCST$dTypes.TypeForall(v._1))(traverse4(traverseTypeVarBinding1(k))(v._2))))(k.onType(v._4)); + } + if (v.tag === "TypeKinded") { return Apply0.apply(Functor0.map(f => f(v._2))(Functor0.map(PureScript$dCST$dTypes.TypeKinded)(k.onType(v._1))))(k.onType(v._3)); } + if (v.tag === "TypeApp") { return Apply0.apply(Functor0.map(PureScript$dCST$dTypes.TypeApp)(k.onType(v._1)))(traverse4(k.onType)(v._2)); } + if (v.tag === "TypeOp") { return Apply0.apply(Functor0.map(PureScript$dCST$dTypes.TypeOp)(k.onType(v._1)))(traverse4(traverse5(k.onType))(v._2)); } + if (v.tag === "TypeArrow") { return Apply0.apply(Functor0.map(f => f(v._2))(Functor0.map(PureScript$dCST$dTypes.TypeArrow)(k.onType(v._1))))(k.onType(v._3)); } + if (v.tag === "TypeConstrained") { return Apply0.apply(Functor0.map(f => f(v._2))(Functor0.map(PureScript$dCST$dTypes.TypeConstrained)(k.onType(v._1))))(k.onType(v._3)); } + if (v.tag === "TypeParens") { return Functor0.map(PureScript$dCST$dTypes.TypeParens)(traverseWrapped1(k.onType, v._1)); } + return dictApplicative.pure(v); + }; +}; +const traverseType1 = /* #__PURE__ */ traverseType(applicativeReaderT); +const traverseType2 = /* #__PURE__ */ traverseType(Control$dMonad$dFree.freeApplicative); +const traverseIfThenElse = dictApplicative => { + const Apply0 = dictApplicative.Apply0(); + const map = Apply0.Functor0().map; + return k => r => Apply0.apply(Apply0.apply(map(v => v1 => v2 => ({cond: v, true: v1, false: v2, else: r.else, keyword: r.keyword, then: r.then}))(k.onExpr(r.cond)))(k.onExpr(r.true)))(k.onExpr(r.false)); +}; +const traverseWhere = dictApplicative => { + const Apply0 = dictApplicative.Apply0(); + const map = Apply0.Functor0().map; + const traverse4 = Data$dTraversable.traversableMaybe.traverse(dictApplicative); + const traverse5 = Data$dTraversable.traversableTuple.traverse(dictApplicative); + const traverse6 = Data$dTraversable.traversableArray.traverse(dictApplicative); + return k => v => Apply0.apply(map(expr => bindings => ({expr: expr, bindings: bindings}))(k.onExpr(v.expr)))(traverse4(traverse5(traverse6(traverseLetBinding(dictApplicative)(k))))(v.bindings)); +}; +const traverseValueBindingFields = dictApplicative => { + const Apply0 = dictApplicative.Apply0(); + const map = Apply0.Functor0().map; + const traverse4 = Data$dTraversable.traversableArray.traverse(dictApplicative); + return k => v => Apply0.apply(map(v1 => v2 => ({binders: v1, guarded: v2, name: v.name}))(traverse4(k.onBinder)(v.binders)))(traverseGuarded(dictApplicative)(k)(v.guarded)); +}; +const traverseLetBinding = dictApplicative => { + const Apply0 = dictApplicative.Apply0(); + const Functor0 = Apply0.Functor0(); + const map = dictApplicative.Apply0().Functor0().map; + return k => v => { + if (v.tag === "LetBindingSignature") { + return Functor0.map(PureScript$dCST$dTypes.LetBindingSignature)(map(value => ({label: v._1.label, separator: v._1.separator, value: value}))(k.onType(v._1.value))); + } + if (v.tag === "LetBindingName") { return Functor0.map(PureScript$dCST$dTypes.LetBindingName)(traverseValueBindingFields(dictApplicative)(k)(v._1)); } + if (v.tag === "LetBindingPattern") { + return Apply0.apply(Functor0.map(f => f(v._2))(Functor0.map(PureScript$dCST$dTypes.LetBindingPattern)(k.onBinder(v._1))))(traverseWhere(dictApplicative)(k)(v._3)); + } + if (v.tag === "LetBindingError") { return dictApplicative.pure(PureScript$dCST$dTypes.$LetBinding("LetBindingError", v._1)); } + $runtime.fail(); + }; +}; +const traverseGuardedExpr = dictApplicative => { + const Apply0 = dictApplicative.Apply0(); + const map = Apply0.Functor0().map; + const traverseSeparated1 = traverseSeparated(dictApplicative); + const traversePatternGuard1 = traversePatternGuard(dictApplicative); + return k => v => Apply0.apply(map(ps => wh => ({bar: v.bar, patterns: ps, separator: v.separator, where: wh}))(traverseSeparated1(traversePatternGuard1(k))(v.patterns)))(traverseWhere(dictApplicative)(k)(v.where)); +}; +const traverseGuarded = dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + const traverse4 = Data$dTraversable.traversableArray.traverse(dictApplicative); + return k => v => { + if (v.tag === "Unconditional") { return map(PureScript$dCST$dTypes.Unconditional(v._1))(traverseWhere(dictApplicative)(k)(v._2)); } + if (v.tag === "Guarded") { return map(PureScript$dCST$dTypes.Guarded)(traverse4(traverseGuardedExpr(dictApplicative)(k))(v._1)); } + $runtime.fail(); + }; +}; +const traverseInstanceBinding = dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + const map$1 = dictApplicative.Apply0().Functor0().map; + const traverseValueBindingFields1 = traverseValueBindingFields(dictApplicative); + return k => v => { + if (v.tag === "InstanceBindingSignature") { + return map(PureScript$dCST$dTypes.InstanceBindingSignature)(map$1(value => ({label: v._1.label, separator: v._1.separator, value: value}))(k.onType(v._1.value))); + } + if (v.tag === "InstanceBindingName") { return map(PureScript$dCST$dTypes.InstanceBindingName)(traverseValueBindingFields1(k)(v._1)); } + $runtime.fail(); + }; +}; +const traverseLetIn = dictApplicative => { + const Apply0 = dictApplicative.Apply0(); + const map = Apply0.Functor0().map; + const traverse4 = Data$dTraversable.traversableArray.traverse(dictApplicative); + const traverseLetBinding1 = traverseLetBinding(dictApplicative); + return k => l => Apply0.apply(map(v => v1 => ({bindings: v, body: v1, in: l.in, keyword: l.keyword}))(traverse4(traverseLetBinding1(k))(l.bindings)))(k.onExpr(l.body)); +}; +const traverseForeign = dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + const map$1 = dictApplicative.Apply0().Functor0().map; + const traverseLabeled1 = (k, v) => map$1(value => ({label: v.label, separator: v.separator, value: value}))(k(v.value)); + return k => v => { + if (v.tag === "ForeignValue") { return map(PureScript$dCST$dTypes.ForeignValue)(traverseLabeled1(k.onType, v._1)); } + if (v.tag === "ForeignData") { return map(PureScript$dCST$dTypes.ForeignData(v._1))(traverseLabeled1(k.onType, v._2)); } + if (v.tag === "ForeignKind") { return dictApplicative.pure(v); } + $runtime.fail(); + }; +}; +const traverseDoStatement = dictApplicative => { + const Apply0 = dictApplicative.Apply0(); + const Functor0 = Apply0.Functor0(); + const traverse4 = Data$dTraversable.traversableArray.traverse(dictApplicative); + const traverseLetBinding1 = traverseLetBinding(dictApplicative); + return k => v => { + if (v.tag === "DoLet") { return Functor0.map(PureScript$dCST$dTypes.DoLet(v._1))(traverse4(traverseLetBinding1(k))(v._2)); } + if (v.tag === "DoDiscard") { return Functor0.map(PureScript$dCST$dTypes.DoDiscard)(k.onExpr(v._1)); } + if (v.tag === "DoBind") { return Apply0.apply(Functor0.map(f => f(v._2))(Functor0.map(PureScript$dCST$dTypes.DoBind)(k.onBinder(v._1))))(k.onExpr(v._3)); } + if (v.tag === "DoError") { return dictApplicative.pure(PureScript$dCST$dTypes.$DoStatement("DoError", v._1)); } + $runtime.fail(); + }; +}; +const traverseDoBlock = dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + const traverse4 = Data$dTraversable.traversableArray.traverse(dictApplicative); + const traverseDoStatement1 = traverseDoStatement(dictApplicative); + return k => d => map(v => ({statements: v, keyword: d.keyword}))(traverse4(traverseDoStatement1(k))(d.statements)); +}; +const traverseDelimitedNonEmpty = dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + const traverseSeparated1 = traverseSeparated(dictApplicative); + return k => { + const $4 = traverseSeparated1(k); + return v => map(value => ({open: v.open, value: value, close: v.close}))($4(v.value)); + }; +}; +const traverseOneOrDelimited = dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + const traverseDelimitedNonEmpty1 = traverseDelimitedNonEmpty(dictApplicative); + return k => v => { + if (v.tag === "One") { return map(PureScript$dCST$dTypes.One)(k(v._1)); } + if (v.tag === "Many") { return map(PureScript$dCST$dTypes.Many)(traverseDelimitedNonEmpty1(k)(v._1)); } + $runtime.fail(); + }; +}; +const traverseInstanceHead = dictApplicative => { + const Apply0 = dictApplicative.Apply0(); + const map = Apply0.Functor0().map; + const traverse4 = Data$dTraversable.traversableMaybe.traverse(dictApplicative); + const bitraverse2 = Data$dBitraversable.bitraversableTuple.bitraverse(dictApplicative); + const traverseOneOrDelimited1 = traverseOneOrDelimited(dictApplicative); + const traverse5 = Data$dTraversable.traversableArray.traverse(dictApplicative); + return k => head => Apply0.apply(map(v => v1 => ({constraints: v, types: v1, className: head.className, keyword: head.keyword, name: head.name}))(traverse4(bitraverse2(traverseOneOrDelimited1(k.onType))(dictApplicative.pure))(head.constraints)))(traverse5(k.onType)(head.types)); +}; +const traverseInstance = dictApplicative => { + const Apply0 = dictApplicative.Apply0(); + const map = Apply0.Functor0().map; + const traverseInstanceHead1 = traverseInstanceHead(dictApplicative); + const traverse4 = Data$dTraversable.traversableMaybe.traverse(dictApplicative); + const traverse5 = Data$dTraversable.traversableTuple.traverse(dictApplicative); + const traverse6 = Data$dTraversable.traversableArray.traverse(dictApplicative); + const traverseInstanceBinding1 = traverseInstanceBinding(dictApplicative); + return k => v => Apply0.apply(map(head => body => ({head: head, body: body}))(traverseInstanceHead1(k)(v.head)))(traverse4(traverse5(traverse6(traverseInstanceBinding1(k))))(v.body)); +}; +const traverseDelimited = dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + const traverse4 = Data$dTraversable.traversableMaybe.traverse(dictApplicative); + const traverseSeparated1 = traverseSeparated(dictApplicative); + return k => { + const $5 = traverse4(traverseSeparated1(k)); + return v => map(value => ({open: v.open, value: value, close: v.close}))($5(v.value)); + }; +}; +const traverseDataHead = dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + const traverse4 = Data$dTraversable.traversableArray.traverse(dictApplicative); + const traverseTypeVarBinding1 = traverseTypeVarBinding(dictApplicative); + return k => head => map(v => ({vars: v, keyword: head.keyword, name: head.name}))(traverse4(traverseTypeVarBinding1(k))(head.vars)); +}; +const traverseDataCtor = dictApplicative => { + const map = dictApplicative.Apply0().Functor0().map; + const traverse4 = Data$dTraversable.traversableArray.traverse(dictApplicative); + return k => v => map(fields => ({name: v.name, fields: fields}))(traverse4(k.onType)(v.fields)); +}; +const traverseClassHead = dictApplicative => { + const Apply0 = dictApplicative.Apply0(); + const map = Apply0.Functor0().map; + const traverse4 = Data$dTraversable.traversableMaybe.traverse(dictApplicative); + const bitraverse2 = Data$dBitraversable.bitraversableTuple.bitraverse(dictApplicative); + const traverseOneOrDelimited1 = traverseOneOrDelimited(dictApplicative); + const traverse5 = Data$dTraversable.traversableArray.traverse(dictApplicative); + const traverseTypeVarBinding1 = traverseTypeVarBinding(dictApplicative); + return k => head => Apply0.apply(map(v => v1 => ({super: v, vars: v1, fundeps: head.fundeps, keyword: head.keyword, name: head.name}))(traverse4(bitraverse2(traverseOneOrDelimited1(k.onType))(dictApplicative.pure))(head.super)))(traverse5(traverseTypeVarBinding1(k))(head.vars)); +}; +const traverseDecl = dictApplicative => { + const Apply0 = dictApplicative.Apply0(); + const Functor0 = Apply0.Functor0(); + const traverseDataHead1 = traverseDataHead(dictApplicative); + const traverse4 = Data$dTraversable.traversableMaybe.traverse(dictApplicative); + const traverse5 = Data$dTraversable.traversableTuple.traverse(dictApplicative); + const traverseSeparated1 = traverseSeparated(dictApplicative); + const traverseDataCtor1 = traverseDataCtor(dictApplicative); + const traverseClassHead1 = traverseClassHead(dictApplicative); + const traverse6 = Data$dTraversable.traversableArray.traverse(dictApplicative); + const map = dictApplicative.Apply0().Functor0().map; + const traverseLabeled1 = k => v => map(value => ({label: v.label, separator: v.separator, value: value}))(k(v.value)); + const traverseInstance1 = traverseInstance(dictApplicative); + const traverseInstanceHead1 = traverseInstanceHead(dictApplicative); + const traverseValueBindingFields1 = traverseValueBindingFields(dictApplicative); + const traverseForeign1 = traverseForeign(dictApplicative); + return k => v => { + if (v.tag === "DeclData") { + return Apply0.apply(Functor0.map(PureScript$dCST$dTypes.DeclData)(traverseDataHead1(k)(v._1)))(traverse4(traverse5(traverseSeparated1(traverseDataCtor1(k))))(v._2)); + } + if (v.tag === "DeclType") { return Apply0.apply(Functor0.map(f => f(v._2))(Functor0.map(PureScript$dCST$dTypes.DeclType)(traverseDataHead1(k)(v._1))))(k.onType(v._3)); } + if (v.tag === "DeclNewtype") { + return Apply0.apply(Functor0.map(f => f(v._3))(Functor0.map(f => f(v._2))(Functor0.map(PureScript$dCST$dTypes.DeclNewtype)(traverseDataHead1(k)(v._1)))))(k.onType(v._4)); + } + if (v.tag === "DeclClass") { + return Apply0.apply(Functor0.map(PureScript$dCST$dTypes.DeclClass)(traverseClassHead1(k)(v._1)))(traverse4(traverse5(traverse6(traverseLabeled1(k.onType))))(v._2)); + } + if (v.tag === "DeclInstanceChain") { return Functor0.map(PureScript$dCST$dTypes.DeclInstanceChain)(traverseSeparated1(traverseInstance1(k))(v._1)); } + if (v.tag === "DeclDerive") { return Functor0.map(PureScript$dCST$dTypes.DeclDerive(v._1)(v._2))(traverseInstanceHead1(k)(v._3)); } + if (v.tag === "DeclKindSignature") { return Functor0.map(PureScript$dCST$dTypes.DeclKindSignature(v._1))(traverseLabeled1(k.onType)(v._2)); } + if (v.tag === "DeclSignature") { return Functor0.map(PureScript$dCST$dTypes.DeclSignature)(traverseLabeled1(k.onType)(v._1)); } + if (v.tag === "DeclValue") { return Functor0.map(PureScript$dCST$dTypes.DeclValue)(traverseValueBindingFields1(k)(v._1)); } + if (v.tag === "DeclForeign") { return Functor0.map(PureScript$dCST$dTypes.DeclForeign(v._1)(v._2))(traverseForeign1(k)(v._3)); } + return dictApplicative.pure(v); + }; +}; +const traverseDecl1 = /* #__PURE__ */ traverseDecl(applicativeReaderT); +const traverseDecl2 = /* #__PURE__ */ traverseDecl(Control$dMonad$dFree.freeApplicative); +const traverseCaseOf = dictApplicative => { + const Apply0 = dictApplicative.Apply0(); + const map = Apply0.Functor0().map; + const traverseSeparated1 = traverseSeparated(dictApplicative); + const traverse4 = Data$dTraversable.traversableArray.traverse(dictApplicative); + const bitraverse1 = Data$dBitraversable.bitraversableTuple.bitraverse(dictApplicative); + const traverseGuarded1 = traverseGuarded(dictApplicative); + return k => r => Apply0.apply(map(v => v1 => ({head: v, branches: v1, keyword: r.keyword, of: r.of}))(traverseSeparated1(k.onExpr)(r.head)))(traverse4(bitraverse1(traverseSeparated1(k.onBinder))(traverseGuarded1(k)))(r.branches)); +}; +const traverseBinder = dictApplicative => { + const Apply0 = dictApplicative.Apply0(); + const Functor0 = Apply0.Functor0(); + const traverse4 = Data$dTraversable.traversableArray.traverse(dictApplicative); + const traverseDelimited1 = traverseDelimited(dictApplicative); + const traverseRecordLabeled1 = traverseRecordLabeled(dictApplicative); + const map = dictApplicative.Apply0().Functor0().map; + const traverse5 = Data$dTraversable.traversableArray.traverse(dictApplicative); + const traverse6 = Data$dTraversable.traversableTuple.traverse(dictApplicative); + return k => v => { + if (v.tag === "BinderNamed") { return Functor0.map(PureScript$dCST$dTypes.BinderNamed(v._1)(v._2))(k.onBinder(v._3)); } + if (v.tag === "BinderConstructor") { return Functor0.map(PureScript$dCST$dTypes.BinderConstructor(v._1))(traverse4(k.onBinder)(v._2)); } + if (v.tag === "BinderArray") { return Functor0.map(PureScript$dCST$dTypes.BinderArray)(traverseDelimited1(k.onBinder)(v._1)); } + if (v.tag === "BinderRecord") { return Functor0.map(PureScript$dCST$dTypes.BinderRecord)(traverseDelimited1(traverseRecordLabeled1(k.onBinder))(v._1)); } + if (v.tag === "BinderParens") { + return Functor0.map(PureScript$dCST$dTypes.BinderParens)(map(value => ({open: v._1.open, value: value, close: v._1.close}))(k.onBinder(v._1.value))); + } + if (v.tag === "BinderTyped") { return Apply0.apply(Functor0.map(f => f(v._2))(Functor0.map(PureScript$dCST$dTypes.BinderTyped)(k.onBinder(v._1))))(k.onType(v._3)); } + if (v.tag === "BinderOp") { return Apply0.apply(Functor0.map(PureScript$dCST$dTypes.BinderOp)(k.onBinder(v._1)))(traverse5(traverse6(k.onBinder))(v._2)); } + return dictApplicative.pure(v); + }; +}; +const traverseBinder1 = /* #__PURE__ */ traverseBinder(applicativeReaderT); +const traverseBinder2 = /* #__PURE__ */ traverseBinder(Control$dMonad$dFree.freeApplicative); +const traverseAdoBlock = dictApplicative => { + const Apply0 = dictApplicative.Apply0(); + const map = Apply0.Functor0().map; + const traverse4 = Data$dTraversable.traversableArray.traverse(dictApplicative); + const traverseDoStatement1 = traverseDoStatement(dictApplicative); + return k => a => Apply0.apply(map(v => v1 => ({statements: v, result: v1, in: a.in, keyword: a.keyword}))(traverse4(traverseDoStatement1(k))(a.statements)))(k.onExpr(a.result)); +}; +const traverseExpr = dictApplicative => { + const Apply0 = dictApplicative.Apply0(); + const Functor0 = Apply0.Functor0(); + const traverseDelimited1 = traverseDelimited(dictApplicative); + const traverseRecordLabeled1 = traverseRecordLabeled(dictApplicative); + const map = dictApplicative.Apply0().Functor0().map; + const traverseWrapped1 = k => v => map(value => ({open: v.open, value: value, close: v.close}))(k(v.value)); + const traverse4 = Data$dTraversable.traversableArray.traverse(dictApplicative); + const bitraverse1 = Data$dBitraversable.bitraversableTuple.bitraverse(dictApplicative); + const traverse5 = Data$dTraversable.traversableTuple.traverse(dictApplicative); + const map$1 = dictApplicative.Apply0().Functor0().map; + const traverseSeparated1 = traverseSeparated(dictApplicative); + const traverseRecordUpdate1 = traverseRecordUpdate(dictApplicative); + const traverseLambda1 = traverseLambda(dictApplicative); + const Apply0$1 = dictApplicative.Apply0(); + const map$2 = Apply0$1.Functor0().map; + const traverseCaseOf1 = traverseCaseOf(dictApplicative); + const traverseLetIn1 = traverseLetIn(dictApplicative); + const traverseDoBlock1 = traverseDoBlock(dictApplicative); + const traverseAdoBlock1 = traverseAdoBlock(dictApplicative); + return k => v => { + if (v.tag === "ExprArray") { return Functor0.map(PureScript$dCST$dTypes.ExprArray)(traverseDelimited1(k.onExpr)(v._1)); } + if (v.tag === "ExprRecord") { return Functor0.map(PureScript$dCST$dTypes.ExprRecord)(traverseDelimited1(traverseRecordLabeled1(k.onExpr))(v._1)); } + if (v.tag === "ExprParens") { return Functor0.map(PureScript$dCST$dTypes.ExprParens)(traverseWrapped1(k.onExpr)(v._1)); } + if (v.tag === "ExprTyped") { return Apply0.apply(Functor0.map(f => f(v._2))(Functor0.map(PureScript$dCST$dTypes.ExprTyped)(k.onExpr(v._1))))(k.onType(v._3)); } + if (v.tag === "ExprInfix") { + return Apply0.apply(Functor0.map(PureScript$dCST$dTypes.ExprInfix)(k.onExpr(v._1)))(traverse4(bitraverse1(traverseWrapped1(k.onExpr))(k.onExpr))(v._2)); + } + if (v.tag === "ExprOp") { return Apply0.apply(Functor0.map(PureScript$dCST$dTypes.ExprOp)(k.onExpr(v._1)))(traverse4(traverse5(k.onExpr))(v._2)); } + if (v.tag === "ExprNegate") { return Functor0.map(PureScript$dCST$dTypes.ExprNegate(v._1))(k.onExpr(v._2)); } + if (v.tag === "ExprRecordAccessor") { + return Functor0.map(PureScript$dCST$dTypes.ExprRecordAccessor)(map$1(v$1 => ({expr: v$1, dot: v._1.dot, path: v._1.path}))(k.onExpr(v._1.expr))); + } + if (v.tag === "ExprRecordUpdate") { + return Apply0.apply(Functor0.map(PureScript$dCST$dTypes.ExprRecordUpdate)(k.onExpr(v._1)))(traverseWrapped1(traverseSeparated1(traverseRecordUpdate1(k)))(v._2)); + } + if (v.tag === "ExprApp") { return Apply0.apply(Functor0.map(PureScript$dCST$dTypes.ExprApp)(k.onExpr(v._1)))(traverse4(k.onExpr)(v._2)); } + if (v.tag === "ExprLambda") { return Functor0.map(PureScript$dCST$dTypes.ExprLambda)(traverseLambda1(k)(v._1)); } + if (v.tag === "ExprIf") { + return Functor0.map(PureScript$dCST$dTypes.ExprIf)(Apply0$1.apply(Apply0$1.apply(map$2(v$1 => v1 => v2 => ( + {cond: v$1, true: v1, false: v2, else: v._1.else, keyword: v._1.keyword, then: v._1.then} + ))(k.onExpr(v._1.cond)))(k.onExpr(v._1.true)))(k.onExpr(v._1.false))); + } + if (v.tag === "ExprCase") { return Functor0.map(PureScript$dCST$dTypes.ExprCase)(traverseCaseOf1(k)(v._1)); } + if (v.tag === "ExprLet") { return Functor0.map(PureScript$dCST$dTypes.ExprLet)(traverseLetIn1(k)(v._1)); } + if (v.tag === "ExprDo") { return Functor0.map(PureScript$dCST$dTypes.ExprDo)(traverseDoBlock1(k)(v._1)); } + if (v.tag === "ExprAdo") { return Functor0.map(PureScript$dCST$dTypes.ExprAdo)(traverseAdoBlock1(k)(v._1)); } + return dictApplicative.pure(v); + }; +}; +const traverseExpr1 = /* #__PURE__ */ traverseExpr(applicativeReaderT); +const traverseExpr2 = /* #__PURE__ */ traverseExpr(Control$dMonad$dFree.freeApplicative); +const topDownTraversalWithContextM = dictMonad => { + const bind2 = dictMonad.Bind1().bind; + const $2 = dictMonad.Applicative0(); + const $3 = $2.Apply0(); + const $4 = $3.Functor0(); + const functorReaderT1 = { + map: x => { + const $6 = $4.map(x); + return v => x$1 => $6(v(x$1)); + } + }; + const applyReaderT1 = {apply: v => v1 => r => $3.apply(v(r))(v1(r)), Functor0: () => functorReaderT1}; + const applicativeReaderT1 = { + pure: x => { + const $8 = $2.pure(x); + return v => $8; + }, + Apply0: () => applyReaderT1 + }; + const traverseBinder3 = traverseBinder(applicativeReaderT1); + const traverseExpr3 = traverseExpr(applicativeReaderT1); + const traverseDecl3 = traverseDecl(applicativeReaderT1); + const traverseType3 = traverseType(applicativeReaderT1); + return visitor => { + const visitor$p = { + onBinder: a => ctx => bind2(visitor.onBinder(ctx)(a))((() => { + const $16 = traverseBinder3(visitor$p); + return v => $16(v._2)(v._1); + })()), + onExpr: a => ctx => bind2(visitor.onExpr(ctx)(a))((() => { + const $16 = traverseExpr3(visitor$p); + return v => $16(v._2)(v._1); + })()), + onDecl: a => ctx => bind2(visitor.onDecl(ctx)(a))((() => { + const $16 = traverseDecl3(visitor$p); + return v => $16(v._2)(v._1); + })()), + onType: a => ctx => bind2(visitor.onType(ctx)(a))((() => { + const $16 = traverseType3(visitor$p); + return v => $16(v._2)(v._1); + })()) + }; + return visitor$p; + }; +}; +const topDownTraversalWithContext = visitor => { + const visitor$p = { + onBinder: a => ctx => { + const $4 = visitor.onBinder(ctx)(a); + return traverseBinder1(visitor$p)($4._2)($4._1); + }, + onExpr: a => ctx => { + const $4 = visitor.onExpr(ctx)(a); + return traverseExpr1(visitor$p)($4._2)($4._1); + }, + onDecl: a => ctx => { + const $4 = visitor.onDecl(ctx)(a); + return traverseDecl1(visitor$p)($4._2)($4._1); + }, + onType: a => ctx => { + const $4 = visitor.onType(ctx)(a); + return traverseType1(visitor$p)($4._2)($4._1); + } + }; + return visitor$p; +}; +const topDownTraversal = dictMonad => { + const bind2 = dictMonad.Bind1().bind; + const Applicative0 = dictMonad.Applicative0(); + const traverseBinder3 = traverseBinder(Applicative0); + const traverseExpr3 = traverseExpr(Applicative0); + const traverseType3 = traverseType(Applicative0); + const traverseDecl3 = traverseDecl(Applicative0); + return visitor => { + const visitor$p = { + onBinder: a => bind2(visitor.onBinder(a))(traverseBinder3(visitor$p)), + onExpr: a => bind2(visitor.onExpr(a))(traverseExpr3(visitor$p)), + onType: a => bind2(visitor.onType(a))(traverseType3(visitor$p)), + onDecl: a => bind2(visitor.onDecl(a))(traverseDecl3(visitor$p)) + }; + return visitor$p; + }; +}; +const topDownPureTraversal = visitor => { + const visitor$p = { + onBinder: a => Control$dMonad$dFree.$Free( + Control$dMonad$dFree.$FreeView("Return", visitor.onBinder(a)), + Data$dCatList.link(Data$dCatList.CatNil)(Data$dCatList.$CatList("CatCons", traverseBinder2(visitor$p), Data$dCatQueue.$CatQueue(Data$dList$dTypes.Nil, Data$dList$dTypes.Nil))) + ), + onExpr: a => Control$dMonad$dFree.$Free( + Control$dMonad$dFree.$FreeView("Return", visitor.onExpr(a)), + Data$dCatList.link(Data$dCatList.CatNil)(Data$dCatList.$CatList("CatCons", traverseExpr2(visitor$p), Data$dCatQueue.$CatQueue(Data$dList$dTypes.Nil, Data$dList$dTypes.Nil))) + ), + onType: a => Control$dMonad$dFree.$Free( + Control$dMonad$dFree.$FreeView("Return", visitor.onType(a)), + Data$dCatList.link(Data$dCatList.CatNil)(Data$dCatList.$CatList("CatCons", traverseType2(visitor$p), Data$dCatQueue.$CatQueue(Data$dList$dTypes.Nil, Data$dList$dTypes.Nil))) + ), + onDecl: a => Control$dMonad$dFree.$Free( + Control$dMonad$dFree.$FreeView("Return", visitor.onDecl(a)), + Data$dCatList.link(Data$dCatList.CatNil)(Data$dCatList.$CatList("CatCons", traverseDecl2(visitor$p), Data$dCatQueue.$CatQueue(Data$dList$dTypes.Nil, Data$dList$dTypes.Nil))) + ) + }; + return visitor$p; +}; +const rewriteWithContextM = dictMonad => { + const topDownTraversalWithContextM1 = topDownTraversalWithContextM(dictMonad); + const map = dictMonad.Bind1().Apply0().Functor0().map; + return traversal => visitor => ctx => g => map(Data$dTuple.Tuple(ctx))(traversal(topDownTraversalWithContextM1(visitor))(g)(ctx)); +}; +const rewriteWithContext = traversal => visitor => ctx => g => Data$dTuple.$Tuple(ctx, traversal(topDownTraversalWithContext(visitor))(g)(ctx)); +const rewriteTypeWithContextM = dictMonad => rewriteWithContextM(dictMonad)(v => v.onType); +const rewriteTypeWithContext = visitor => ctx => g => Data$dTuple.$Tuple(ctx, topDownTraversalWithContext(visitor).onType(g)(ctx)); +const rewriteTopDownM = dictMonad => { + const topDownTraversal1 = topDownTraversal(dictMonad); + return traversal => visitor => traversal(topDownTraversal1(visitor)); +}; +const rewriteTypeTopDownM = dictMonad => { + const topDownTraversal1 = topDownTraversal(dictMonad); + return visitor => topDownTraversal1(visitor).onType; +}; +const rewriteTopDown = traversal => visitor => { + const $2 = Control$dMonad$dFree.runFree(Data$dIdentity.functorIdentity)(Unsafe$dCoerce.unsafeCoerce); + const $3 = traversal(topDownPureTraversal(visitor)); + return x => $2($3(x)); +}; +const rewriteTypeTopDown = /* #__PURE__ */ rewriteTopDown(v => v.onType); +const rewriteModuleWithContextM = dictMonad => rewriteWithContextM(dictMonad)(traverseModule((() => { + const $1 = dictMonad.Applicative0(); + const $2 = $1.Apply0(); + const $3 = $2.Functor0(); + const functorReaderT1 = { + map: x => { + const $5 = $3.map(x); + return v => x$1 => $5(v(x$1)); + } + }; + const applyReaderT1 = {apply: v => v1 => r => $2.apply(v(r))(v1(r)), Functor0: () => functorReaderT1}; + return { + pure: x => { + const $7 = $1.pure(x); + return v => $7; + }, + Apply0: () => applyReaderT1 + }; +})())); +const rewriteModuleWithContext = /* #__PURE__ */ rewriteWithContext(/* #__PURE__ */ traverseModule(applicativeReaderT)); +const rewriteModuleTopDownM = dictMonad => { + const topDownTraversal1 = topDownTraversal(dictMonad); + const $2 = traverseModule(dictMonad.Applicative0()); + return visitor => $2(topDownTraversal1(visitor)); +}; +const rewriteModuleTopDown = /* #__PURE__ */ rewriteTopDown(traverseModule1); +const rewriteExprWithContextM = dictMonad => rewriteWithContextM(dictMonad)(v => v.onExpr); +const rewriteExprWithContext = visitor => ctx => g => Data$dTuple.$Tuple(ctx, topDownTraversalWithContext(visitor).onExpr(g)(ctx)); +const rewriteExprTopDownM = dictMonad => { + const topDownTraversal1 = topDownTraversal(dictMonad); + return visitor => topDownTraversal1(visitor).onExpr; +}; +const rewriteExprTopDown = /* #__PURE__ */ rewriteTopDown(v => v.onExpr); +const rewriteDeclWithContextM = dictMonad => rewriteWithContextM(dictMonad)(v => v.onDecl); +const rewriteDeclWithContext = visitor => ctx => g => Data$dTuple.$Tuple(ctx, topDownTraversalWithContext(visitor).onDecl(g)(ctx)); +const rewriteDeclTopDownM = dictMonad => { + const topDownTraversal1 = topDownTraversal(dictMonad); + return visitor => topDownTraversal1(visitor).onDecl; +}; +const rewriteDeclTopDown = /* #__PURE__ */ rewriteTopDown(v => v.onDecl); +const rewriteBinderWithContextM = dictMonad => rewriteWithContextM(dictMonad)(v => v.onBinder); +const rewriteBinderWithContext = visitor => ctx => g => Data$dTuple.$Tuple(ctx, topDownTraversalWithContext(visitor).onBinder(g)(ctx)); +const rewriteBinderTopDownM = dictMonad => { + const topDownTraversal1 = topDownTraversal(dictMonad); + return visitor => topDownTraversal1(visitor).onBinder; +}; +const rewriteBinderTopDown = /* #__PURE__ */ rewriteTopDown(v => v.onBinder); +const defer = dictMonad => { + const bind2 = dictMonad.Bind1().bind; + const pure2 = dictMonad.Applicative0().pure; + return v => bind2(pure2(Data$dUnit.unit))(v); +}; +const defer1 = /* #__PURE__ */ defer(Control$dMonad$dFree.freeMonad); +const topDownMonoidalTraversal = dictMonoid => { + const apply = applyCompose((() => { + const $1 = dictMonoid.Semigroup0(); + return {apply: v => v1 => $1.append(v)(v1), Functor0: () => Data$dConst.functorConst}; + })()).apply; + const applicativeCompose1 = applicativeCompose(Data$dConst.applicativeConst(dictMonoid)); + const traverseBinder3 = traverseBinder(applicativeCompose1); + const traverseExpr3 = traverseExpr(applicativeCompose1); + const traverseDecl3 = traverseDecl(applicativeCompose1); + const traverseType3 = traverseType(applicativeCompose1); + return visitor => { + const visitor$p = { + onBinder: a => apply(Control$dMonad$dFree.$Free(Control$dMonad$dFree.$FreeView("Return", visitor.onBinder(a)), Data$dCatList.CatNil))(defer1(v => traverseBinder3(visitor$p)(a))), + onExpr: a => apply(Control$dMonad$dFree.$Free(Control$dMonad$dFree.$FreeView("Return", visitor.onExpr(a)), Data$dCatList.CatNil))(defer1(v => traverseExpr3(visitor$p)(a))), + onDecl: a => apply(Control$dMonad$dFree.$Free(Control$dMonad$dFree.$FreeView("Return", visitor.onDecl(a)), Data$dCatList.CatNil))(defer1(v => traverseDecl3(visitor$p)(a))), + onType: a => apply(Control$dMonad$dFree.$Free(Control$dMonad$dFree.$FreeView("Return", visitor.onType(a)), Data$dCatList.CatNil))(defer1(v => traverseType3(visitor$p)(a))) + }; + return visitor$p; + }; +}; +const monoidalRewrite = dictMonoid => { + const topDownMonoidalTraversal1 = topDownMonoidalTraversal(dictMonoid); + return traversal => visitor => g => Control$dMonad$dFree.runFree(Data$dIdentity.functorIdentity)(Unsafe$dCoerce.unsafeCoerce)(traversal(topDownMonoidalTraversal1(visitor))(g)); +}; +const foldMapBinder = dictMonoid => monoidalRewrite(dictMonoid)(v => v.onBinder); +const foldMapDecl = dictMonoid => monoidalRewrite(dictMonoid)(v => v.onDecl); +const foldMapExpr = dictMonoid => monoidalRewrite(dictMonoid)(v => v.onExpr); +const foldMapModule = dictMonoid => monoidalRewrite(dictMonoid)(traverseModule(applicativeCompose(Data$dConst.applicativeConst(dictMonoid)))); +const foldMapType = dictMonoid => monoidalRewrite(dictMonoid)(v => v.onType); +const defaultVisitorWithContextM = dictMonad => { + const pure2 = dictMonad.Applicative0().pure; + return {onBinder: Data$dTuple.curry(pure2), onDecl: Data$dTuple.curry(pure2), onExpr: Data$dTuple.curry(pure2), onType: Data$dTuple.curry(pure2)}; +}; +const defaultVisitorWithContext = { + onBinder: /* #__PURE__ */ Data$dTuple.curry(identity), + onDecl: /* #__PURE__ */ Data$dTuple.curry(identity), + onExpr: /* #__PURE__ */ Data$dTuple.curry(identity), + onType: /* #__PURE__ */ Data$dTuple.curry(identity) +}; +const defaultVisitorM = dictApplicative => ({onBinder: dictApplicative.pure, onDecl: dictApplicative.pure, onExpr: dictApplicative.pure, onType: dictApplicative.pure}); +const defaultVisitor = {onBinder: identity, onDecl: identity, onExpr: identity, onType: identity}; +const defaultMonoidalVisitor = dictMonoid => ({onBinder: v => dictMonoid.mempty, onDecl: v => dictMonoid.mempty, onExpr: v => dictMonoid.mempty, onType: v => dictMonoid.mempty}); +const bottomUpTraversal = dictMonad => { + const $1 = dictMonad.Bind1(); + const defer2 = defer(dictMonad); + const Applicative0 = dictMonad.Applicative0(); + const traverseBinder3 = traverseBinder(Applicative0); + const traverseExpr3 = traverseExpr(Applicative0); + const traverseType3 = traverseType(Applicative0); + const traverseDecl3 = traverseDecl(Applicative0); + return visitor => { + const visitor$p = { + onBinder: a => $1.bind(defer2(v => traverseBinder3(visitor$p)(a)))(visitor.onBinder), + onExpr: a => $1.bind(defer2(v => traverseExpr3(visitor$p)(a)))(visitor.onExpr), + onType: a => $1.bind(defer2(v => traverseType3(visitor$p)(a)))(visitor.onType), + onDecl: a => $1.bind(defer2(v => traverseDecl3(visitor$p)(a)))(visitor.onDecl) + }; + return visitor$p; + }; +}; +const rewriteBottomUpM = dictMonad => { + const bottomUpTraversal1 = bottomUpTraversal(dictMonad); + return traversal => visitor => traversal(bottomUpTraversal1(visitor)); +}; +const rewriteBinderBottomUpM = dictMonad => { + const bottomUpTraversal1 = bottomUpTraversal(dictMonad); + return visitor => bottomUpTraversal1(visitor).onBinder; +}; +const rewriteDeclBottomUpM = dictMonad => { + const bottomUpTraversal1 = bottomUpTraversal(dictMonad); + return visitor => bottomUpTraversal1(visitor).onDecl; +}; +const rewriteExprBottomUpM = dictMonad => { + const bottomUpTraversal1 = bottomUpTraversal(dictMonad); + return visitor => bottomUpTraversal1(visitor).onExpr; +}; +const rewriteModuleBottomUpM = dictMonad => { + const bottomUpTraversal1 = bottomUpTraversal(dictMonad); + const $2 = traverseModule(dictMonad.Applicative0()); + return visitor => $2(bottomUpTraversal1(visitor)); +}; +const rewriteTypeBottomUpM = dictMonad => { + const bottomUpTraversal1 = bottomUpTraversal(dictMonad); + return visitor => bottomUpTraversal1(visitor).onType; +}; +const bottomUpPureTraversal = visitor => { + const visitor$p = { + onBinder: a => { + const $3 = traverseBinder2(visitor$p)(a); + return Control$dMonad$dFree.$Free( + $3._1, + Data$dCatList.link($3._2)(Data$dCatList.$CatList( + "CatCons", + x => Control$dMonad$dFree.$Free(Control$dMonad$dFree.$FreeView("Return", visitor.onBinder(x)), Data$dCatList.CatNil), + Data$dCatQueue.$CatQueue(Data$dList$dTypes.Nil, Data$dList$dTypes.Nil) + )) + ); + }, + onExpr: a => { + const $3 = traverseExpr2(visitor$p)(a); + return Control$dMonad$dFree.$Free( + $3._1, + Data$dCatList.link($3._2)(Data$dCatList.$CatList( + "CatCons", + x => Control$dMonad$dFree.$Free(Control$dMonad$dFree.$FreeView("Return", visitor.onExpr(x)), Data$dCatList.CatNil), + Data$dCatQueue.$CatQueue(Data$dList$dTypes.Nil, Data$dList$dTypes.Nil) + )) + ); + }, + onType: a => { + const $3 = traverseType2(visitor$p)(a); + return Control$dMonad$dFree.$Free( + $3._1, + Data$dCatList.link($3._2)(Data$dCatList.$CatList( + "CatCons", + x => Control$dMonad$dFree.$Free(Control$dMonad$dFree.$FreeView("Return", visitor.onType(x)), Data$dCatList.CatNil), + Data$dCatQueue.$CatQueue(Data$dList$dTypes.Nil, Data$dList$dTypes.Nil) + )) + ); + }, + onDecl: a => { + const $3 = traverseDecl2(visitor$p)(a); + return Control$dMonad$dFree.$Free( + $3._1, + Data$dCatList.link($3._2)(Data$dCatList.$CatList( + "CatCons", + x => Control$dMonad$dFree.$Free(Control$dMonad$dFree.$FreeView("Return", visitor.onDecl(x)), Data$dCatList.CatNil), + Data$dCatQueue.$CatQueue(Data$dList$dTypes.Nil, Data$dList$dTypes.Nil) + )) + ); + } + }; + return visitor$p; +}; +const rewriteBottomUp = traversal => visitor => { + const $2 = Control$dMonad$dFree.runFree(Data$dIdentity.functorIdentity)(Unsafe$dCoerce.unsafeCoerce); + const $3 = traversal(bottomUpPureTraversal(visitor)); + return x => $2($3(x)); +}; +const rewriteBinderBottomUp = /* #__PURE__ */ rewriteBottomUp(v => v.onBinder); +const rewriteDeclBottomUp = /* #__PURE__ */ rewriteBottomUp(v => v.onDecl); +const rewriteExprBottomUp = /* #__PURE__ */ rewriteBottomUp(v => v.onExpr); +const rewriteModuleBottomUp = /* #__PURE__ */ rewriteBottomUp(traverseModule1); +const rewriteTypeBottomUp = /* #__PURE__ */ rewriteBottomUp(v => v.onType); +export { + applicativeCompose, + applicativeReaderT, + applyCompose, + bottomUpPureTraversal, + bottomUpTraversal, + defaultMonoidalVisitor, + defaultVisitor, + defaultVisitorM, + defaultVisitorWithContext, + defaultVisitorWithContextM, + defer, + defer1, + foldMapBinder, + foldMapDecl, + foldMapExpr, + foldMapModule, + foldMapType, + identity, + monoidalRewrite, + rewriteBinderBottomUp, + rewriteBinderBottomUpM, + rewriteBinderTopDown, + rewriteBinderTopDownM, + rewriteBinderWithContext, + rewriteBinderWithContextM, + rewriteBottomUp, + rewriteBottomUpM, + rewriteDeclBottomUp, + rewriteDeclBottomUpM, + rewriteDeclTopDown, + rewriteDeclTopDownM, + rewriteDeclWithContext, + rewriteDeclWithContextM, + rewriteExprBottomUp, + rewriteExprBottomUpM, + rewriteExprTopDown, + rewriteExprTopDownM, + rewriteExprWithContext, + rewriteExprWithContextM, + rewriteModuleBottomUp, + rewriteModuleBottomUpM, + rewriteModuleTopDown, + rewriteModuleTopDownM, + rewriteModuleWithContext, + rewriteModuleWithContextM, + rewriteTopDown, + rewriteTopDownM, + rewriteTypeBottomUp, + rewriteTypeBottomUpM, + rewriteTypeTopDown, + rewriteTypeTopDownM, + rewriteTypeWithContext, + rewriteTypeWithContextM, + rewriteWithContext, + rewriteWithContextM, + topDownMonoidalTraversal, + topDownPureTraversal, + topDownTraversal, + topDownTraversalWithContext, + topDownTraversalWithContextM, + traverseAdoBlock, + traverseBinder, + traverseBinder1, + traverseBinder2, + traverseCaseOf, + traverseClassHead, + traverseDataCtor, + traverseDataHead, + traverseDecl, + traverseDecl1, + traverseDecl2, + traverseDelimited, + traverseDelimitedNonEmpty, + traverseDoBlock, + traverseDoStatement, + traverseExpr, + traverseExpr1, + traverseExpr2, + traverseForeign, + traverseGuarded, + traverseGuardedExpr, + traverseIfThenElse, + traverseInstance, + traverseInstanceBinding, + traverseInstanceHead, + traverseLabeled, + traverseLambda, + traverseLetBinding, + traverseLetIn, + traverseModule, + traverseModule1, + traverseModuleBody, + traverseOneOrDelimited, + traversePatternGuard, + traverseRecordAccessor, + traverseRecordLabeled, + traverseRecordUpdate, + traverseRow, + traverseSeparated, + traverseType, + traverseType1, + traverseType2, + traverseTypeVarBinding, + traverseValueBindingFields, + traverseWhere, + traverseWrapped +}; diff --git a/.storybook/purescript-indexer/output-es/PureScript.CST.Types/index.js b/.storybook/purescript-indexer/output-es/PureScript.CST.Types/index.js new file mode 100644 index 0000000..087fcdd --- /dev/null +++ b/.storybook/purescript-indexer/output-es/PureScript.CST.Types/index.js @@ -0,0 +1,681 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dEq from "../Data.Eq/index.js"; +import * as Data$dOrd from "../Data.Ord/index.js"; +const $Binder = (tag, _1, _2, _3) => ({tag, _1, _2, _3}); +const $ClassFundep = (tag, _1, _2, _3) => ({tag, _1, _2, _3}); +const $Comment = (tag, _1, _2) => ({tag, _1, _2}); +const $DataMembers = (tag, _1) => ({tag, _1}); +const $Declaration = (tag, _1, _2, _3, _4) => ({tag, _1, _2, _3, _4}); +const $DoStatement = (tag, _1, _2, _3) => ({tag, _1, _2, _3}); +const $Export = (tag, _1, _2) => ({tag, _1, _2}); +const $Expr = (tag, _1, _2, _3) => ({tag, _1, _2, _3}); +const $Fixity = tag => ({tag}); +const $FixityOp = (tag, _1, _2, _3, _4) => ({tag, _1, _2, _3, _4}); +const $Foreign = (tag, _1, _2) => ({tag, _1, _2}); +const $Guarded = (tag, _1, _2) => ({tag, _1, _2}); +const $Import = (tag, _1, _2) => ({tag, _1, _2}); +const $InstanceBinding = (tag, _1) => ({tag, _1}); +const $IntValue = (tag, _1) => ({tag, _1}); +const $LetBinding = (tag, _1, _2, _3) => ({tag, _1, _2, _3}); +const $LineFeed = tag => ({tag}); +const $OneOrDelimited = (tag, _1) => ({tag, _1}); +const $RecordLabeled = (tag, _1, _2, _3) => ({tag, _1, _2, _3}); +const $RecordUpdate = (tag, _1, _2, _3) => ({tag, _1, _2, _3}); +const $Role = tag => ({tag}); +const $SourceStyle = tag => ({tag}); +const $Token = (tag, _1, _2) => ({tag, _1, _2}); +const $Type = (tag, _1, _2, _3, _4) => ({tag, _1, _2, _3, _4}); +const $TypeVarBinding = (tag, _1) => ({tag, _1}); +const ASCII = /* #__PURE__ */ $SourceStyle("ASCII"); +const Unicode = /* #__PURE__ */ $SourceStyle("Unicode"); +const Nominal = /* #__PURE__ */ $Role("Nominal"); +const Representational = /* #__PURE__ */ $Role("Representational"); +const Phantom = /* #__PURE__ */ $Role("Phantom"); +const Proper = x => x; +const Operator = x => x; +const ModuleName = x => x; +const LF = /* #__PURE__ */ $LineFeed("LF"); +const CRLF = /* #__PURE__ */ $LineFeed("CRLF"); +const Label = x => x; +const SmallInt = value0 => $IntValue("SmallInt", value0); +const $$BigInt = value0 => $IntValue("BigInt", value0); +const BigHex = value0 => $IntValue("BigHex", value0); +const TokLeftParen = /* #__PURE__ */ $Token("TokLeftParen"); +const TokRightParen = /* #__PURE__ */ $Token("TokRightParen"); +const TokLeftBrace = /* #__PURE__ */ $Token("TokLeftBrace"); +const TokRightBrace = /* #__PURE__ */ $Token("TokRightBrace"); +const TokLeftSquare = /* #__PURE__ */ $Token("TokLeftSquare"); +const TokRightSquare = /* #__PURE__ */ $Token("TokRightSquare"); +const TokLeftArrow = value0 => $Token("TokLeftArrow", value0); +const TokRightArrow = value0 => $Token("TokRightArrow", value0); +const TokRightFatArrow = value0 => $Token("TokRightFatArrow", value0); +const TokDoubleColon = value0 => $Token("TokDoubleColon", value0); +const TokForall = value0 => $Token("TokForall", value0); +const TokEquals = /* #__PURE__ */ $Token("TokEquals"); +const TokPipe = /* #__PURE__ */ $Token("TokPipe"); +const TokTick = /* #__PURE__ */ $Token("TokTick"); +const TokDot = /* #__PURE__ */ $Token("TokDot"); +const TokComma = /* #__PURE__ */ $Token("TokComma"); +const TokUnderscore = /* #__PURE__ */ $Token("TokUnderscore"); +const TokBackslash = /* #__PURE__ */ $Token("TokBackslash"); +const TokAt = /* #__PURE__ */ $Token("TokAt"); +const TokLowerName = value0 => value1 => $Token("TokLowerName", value0, value1); +const TokUpperName = value0 => value1 => $Token("TokUpperName", value0, value1); +const TokOperator = value0 => value1 => $Token("TokOperator", value0, value1); +const TokSymbolName = value0 => value1 => $Token("TokSymbolName", value0, value1); +const TokSymbolArrow = value0 => $Token("TokSymbolArrow", value0); +const TokHole = value0 => $Token("TokHole", value0); +const TokChar = value0 => value1 => $Token("TokChar", value0, value1); +const TokString = value0 => value1 => $Token("TokString", value0, value1); +const TokRawString = value0 => $Token("TokRawString", value0); +const TokInt = value0 => value1 => $Token("TokInt", value0, value1); +const TokNumber = value0 => value1 => $Token("TokNumber", value0, value1); +const TokLayoutStart = value0 => $Token("TokLayoutStart", value0); +const TokLayoutSep = value0 => $Token("TokLayoutSep", value0); +const TokLayoutEnd = value0 => $Token("TokLayoutEnd", value0); +const Ident = x => x; +const Infix = /* #__PURE__ */ $Fixity("Infix"); +const Infixl = /* #__PURE__ */ $Fixity("Infixl"); +const Infixr = /* #__PURE__ */ $Fixity("Infixr"); +const Comment = value0 => $Comment("Comment", value0); +const Space = value0 => $Comment("Space", value0); +const Line = value0 => value1 => $Comment("Line", value0, value1); +const Labeled = x => x; +const Name = x => x; +const QualifiedName = x => x; +const FixityValue = value0 => value1 => value2 => $FixityOp("FixityValue", value0, value1, value2); +const FixityType = value0 => value1 => value2 => value3 => $FixityOp("FixityType", value0, value1, value2, value3); +const RecordPun = value0 => $RecordLabeled("RecordPun", value0); +const RecordField = value0 => value1 => value2 => $RecordLabeled("RecordField", value0, value1, value2); +const Separated = x => x; +const Wrapped = x => x; +const DataAll = value0 => $DataMembers("DataAll", value0); +const DataEnumerated = value0 => $DataMembers("DataEnumerated", value0); +const ExportValue = value0 => $Export("ExportValue", value0); +const ExportOp = value0 => $Export("ExportOp", value0); +const ExportType = value0 => value1 => $Export("ExportType", value0, value1); +const ExportTypeOp = value0 => value1 => $Export("ExportTypeOp", value0, value1); +const ExportClass = value0 => value1 => $Export("ExportClass", value0, value1); +const ExportModule = value0 => value1 => $Export("ExportModule", value0, value1); +const ExportError = value0 => $Export("ExportError", value0); +const ImportValue = value0 => $Import("ImportValue", value0); +const ImportOp = value0 => $Import("ImportOp", value0); +const ImportType = value0 => value1 => $Import("ImportType", value0, value1); +const ImportTypeOp = value0 => value1 => $Import("ImportTypeOp", value0, value1); +const ImportClass = value0 => value1 => $Import("ImportClass", value0, value1); +const ImportError = value0 => $Import("ImportError", value0); +const ImportDecl = x => x; +const ModuleHeader = x => x; +const One = value0 => $OneOrDelimited("One", value0); +const Many = value0 => $OneOrDelimited("Many", value0); +const TypeVarKinded = value0 => $TypeVarBinding("TypeVarKinded", value0); +const TypeVarName = value0 => $TypeVarBinding("TypeVarName", value0); +const TypeVar = value0 => $Type("TypeVar", value0); +const TypeConstructor = value0 => $Type("TypeConstructor", value0); +const TypeWildcard = value0 => $Type("TypeWildcard", value0); +const TypeHole = value0 => $Type("TypeHole", value0); +const TypeString = value0 => value1 => $Type("TypeString", value0, value1); +const TypeInt = value0 => value1 => value2 => $Type("TypeInt", value0, value1, value2); +const TypeRow = value0 => $Type("TypeRow", value0); +const TypeRecord = value0 => $Type("TypeRecord", value0); +const TypeForall = value0 => value1 => value2 => value3 => $Type("TypeForall", value0, value1, value2, value3); +const TypeKinded = value0 => value1 => value2 => $Type("TypeKinded", value0, value1, value2); +const TypeApp = value0 => value1 => $Type("TypeApp", value0, value1); +const TypeOp = value0 => value1 => $Type("TypeOp", value0, value1); +const TypeOpName = value0 => $Type("TypeOpName", value0); +const TypeArrow = value0 => value1 => value2 => $Type("TypeArrow", value0, value1, value2); +const TypeArrowName = value0 => $Type("TypeArrowName", value0); +const TypeConstrained = value0 => value1 => value2 => $Type("TypeConstrained", value0, value1, value2); +const TypeParens = value0 => $Type("TypeParens", value0); +const $$TypeError = value0 => $Type("TypeError", value0); +const Row = x => x; +const DataCtor = x => x; +const ForeignValue = value0 => $Foreign("ForeignValue", value0); +const ForeignData = value0 => value1 => $Foreign("ForeignData", value0, value1); +const ForeignKind = value0 => value1 => $Foreign("ForeignKind", value0, value1); +const FundepDetermined = value0 => value1 => $ClassFundep("FundepDetermined", value0, value1); +const FundepDetermines = value0 => value1 => value2 => $ClassFundep("FundepDetermines", value0, value1, value2); +const BinderWildcard = value0 => $Binder("BinderWildcard", value0); +const BinderVar = value0 => $Binder("BinderVar", value0); +const BinderNamed = value0 => value1 => value2 => $Binder("BinderNamed", value0, value1, value2); +const BinderConstructor = value0 => value1 => $Binder("BinderConstructor", value0, value1); +const BinderBoolean = value0 => value1 => $Binder("BinderBoolean", value0, value1); +const BinderChar = value0 => value1 => $Binder("BinderChar", value0, value1); +const BinderString = value0 => value1 => $Binder("BinderString", value0, value1); +const BinderInt = value0 => value1 => value2 => $Binder("BinderInt", value0, value1, value2); +const BinderNumber = value0 => value1 => value2 => $Binder("BinderNumber", value0, value1, value2); +const BinderArray = value0 => $Binder("BinderArray", value0); +const BinderRecord = value0 => $Binder("BinderRecord", value0); +const BinderParens = value0 => $Binder("BinderParens", value0); +const BinderTyped = value0 => value1 => value2 => $Binder("BinderTyped", value0, value1, value2); +const BinderOp = value0 => value1 => $Binder("BinderOp", value0, value1); +const BinderError = value0 => $Binder("BinderError", value0); +const DoLet = value0 => value1 => $DoStatement("DoLet", value0, value1); +const DoDiscard = value0 => $DoStatement("DoDiscard", value0); +const DoBind = value0 => value1 => value2 => $DoStatement("DoBind", value0, value1, value2); +const DoError = value0 => $DoStatement("DoError", value0); +const LetBindingSignature = value0 => $LetBinding("LetBindingSignature", value0); +const LetBindingName = value0 => $LetBinding("LetBindingName", value0); +const LetBindingPattern = value0 => value1 => value2 => $LetBinding("LetBindingPattern", value0, value1, value2); +const LetBindingError = value0 => $LetBinding("LetBindingError", value0); +const Unconditional = value0 => value1 => $Guarded("Unconditional", value0, value1); +const Guarded = value0 => $Guarded("Guarded", value0); +const Where = x => x; +const ExprHole = value0 => $Expr("ExprHole", value0); +const ExprSection = value0 => $Expr("ExprSection", value0); +const ExprIdent = value0 => $Expr("ExprIdent", value0); +const ExprConstructor = value0 => $Expr("ExprConstructor", value0); +const ExprBoolean = value0 => value1 => $Expr("ExprBoolean", value0, value1); +const ExprChar = value0 => value1 => $Expr("ExprChar", value0, value1); +const ExprString = value0 => value1 => $Expr("ExprString", value0, value1); +const ExprInt = value0 => value1 => $Expr("ExprInt", value0, value1); +const ExprNumber = value0 => value1 => $Expr("ExprNumber", value0, value1); +const ExprArray = value0 => $Expr("ExprArray", value0); +const ExprRecord = value0 => $Expr("ExprRecord", value0); +const ExprParens = value0 => $Expr("ExprParens", value0); +const ExprTyped = value0 => value1 => value2 => $Expr("ExprTyped", value0, value1, value2); +const ExprInfix = value0 => value1 => $Expr("ExprInfix", value0, value1); +const ExprOp = value0 => value1 => $Expr("ExprOp", value0, value1); +const ExprOpName = value0 => $Expr("ExprOpName", value0); +const ExprNegate = value0 => value1 => $Expr("ExprNegate", value0, value1); +const ExprRecordAccessor = value0 => $Expr("ExprRecordAccessor", value0); +const ExprRecordUpdate = value0 => value1 => $Expr("ExprRecordUpdate", value0, value1); +const ExprApp = value0 => value1 => $Expr("ExprApp", value0, value1); +const ExprLambda = value0 => $Expr("ExprLambda", value0); +const ExprIf = value0 => $Expr("ExprIf", value0); +const ExprCase = value0 => $Expr("ExprCase", value0); +const ExprLet = value0 => $Expr("ExprLet", value0); +const ExprDo = value0 => $Expr("ExprDo", value0); +const ExprAdo = value0 => $Expr("ExprAdo", value0); +const ExprError = value0 => $Expr("ExprError", value0); +const RecordUpdateLeaf = value0 => value1 => value2 => $RecordUpdate("RecordUpdateLeaf", value0, value1, value2); +const RecordUpdateBranch = value0 => value1 => $RecordUpdate("RecordUpdateBranch", value0, value1); +const GuardedExpr = x => x; +const PatternGuard = x => x; +const InstanceBindingSignature = value0 => $InstanceBinding("InstanceBindingSignature", value0); +const InstanceBindingName = value0 => $InstanceBinding("InstanceBindingName", value0); +const Instance = x => x; +const DeclData = value0 => value1 => $Declaration("DeclData", value0, value1); +const DeclType = value0 => value1 => value2 => $Declaration("DeclType", value0, value1, value2); +const DeclNewtype = value0 => value1 => value2 => value3 => $Declaration("DeclNewtype", value0, value1, value2, value3); +const DeclClass = value0 => value1 => $Declaration("DeclClass", value0, value1); +const DeclInstanceChain = value0 => $Declaration("DeclInstanceChain", value0); +const DeclDerive = value0 => value1 => value2 => $Declaration("DeclDerive", value0, value1, value2); +const DeclKindSignature = value0 => value1 => $Declaration("DeclKindSignature", value0, value1); +const DeclSignature = value0 => $Declaration("DeclSignature", value0); +const DeclValue = value0 => $Declaration("DeclValue", value0); +const DeclFixity = value0 => $Declaration("DeclFixity", value0); +const DeclForeign = value0 => value1 => value2 => $Declaration("DeclForeign", value0, value1, value2); +const DeclRole = value0 => value1 => value2 => value3 => $Declaration("DeclRole", value0, value1, value2, value3); +const DeclError = value0 => $Declaration("DeclError", value0); +const ModuleBody = x => x; +const Module = x => x; +const ordProper = Data$dOrd.ordString; +const ordOperator = Data$dOrd.ordString; +const ordModuleName = Data$dOrd.ordString; +const ordLabel = Data$dOrd.ordString; +const ordIdent = Data$dOrd.ordString; +const newtypeWrapped = {Coercible0: () => undefined}; +const newtypeWhere = {Coercible0: () => undefined}; +const newtypeSeparated = {Coercible0: () => undefined}; +const newtypeRow = {Coercible0: () => undefined}; +const newtypeQualifiedName = {Coercible0: () => undefined}; +const newtypeProper = {Coercible0: () => undefined}; +const newtypePatternGuard = {Coercible0: () => undefined}; +const newtypeOperator = {Coercible0: () => undefined}; +const newtypeName = {Coercible0: () => undefined}; +const newtypeModuleName = {Coercible0: () => undefined}; +const newtypeModuleHeader = {Coercible0: () => undefined}; +const newtypeModuleBody = {Coercible0: () => undefined}; +const newtypeModule = {Coercible0: () => undefined}; +const newtypeLabeled = {Coercible0: () => undefined}; +const newtypeLabel = {Coercible0: () => undefined}; +const newtypeInstance = {Coercible0: () => undefined}; +const newtypeImportDecl = {Coercible0: () => undefined}; +const newtypeIdent = {Coercible0: () => undefined}; +const newtypeGuardedExpr = {Coercible0: () => undefined}; +const newtypeDataCtor = {Coercible0: () => undefined}; +const eqSourceStyle = { + eq: x => y => { + if (x.tag === "ASCII") { return y.tag === "ASCII"; } + if (x.tag === "Unicode") { return y.tag === "Unicode"; } + return false; + } +}; +const eqProper = Data$dEq.eqString; +const eqOperator = Data$dEq.eqString; +const eqModuleName = Data$dEq.eqString; +const eqLabel = Data$dEq.eqString; +const eqIntValue = { + eq: x => y => { + if (x.tag === "SmallInt") { + if (y.tag === "SmallInt") { return x._1 === y._1; } + return false; + } + if (x.tag === "BigInt") { + if (y.tag === "BigInt") { return x._1 === y._1; } + return false; + } + if (x.tag === "BigHex") { + if (y.tag === "BigHex") { return x._1 === y._1; } + return false; + } + return false; + } +}; +const eqToken = { + eq: x => y => { + if (x.tag === "TokLeftParen") { return y.tag === "TokLeftParen"; } + if (x.tag === "TokRightParen") { return y.tag === "TokRightParen"; } + if (x.tag === "TokLeftBrace") { return y.tag === "TokLeftBrace"; } + if (x.tag === "TokRightBrace") { return y.tag === "TokRightBrace"; } + if (x.tag === "TokLeftSquare") { return y.tag === "TokLeftSquare"; } + if (x.tag === "TokRightSquare") { return y.tag === "TokRightSquare"; } + if (x.tag === "TokLeftArrow") { + if (y.tag === "TokLeftArrow") { + if (x._1.tag === "ASCII") { return y._1.tag === "ASCII"; } + if (x._1.tag === "Unicode") { return y._1.tag === "Unicode"; } + return false; + } + return false; + } + if (x.tag === "TokRightArrow") { + if (y.tag === "TokRightArrow") { + if (x._1.tag === "ASCII") { return y._1.tag === "ASCII"; } + if (x._1.tag === "Unicode") { return y._1.tag === "Unicode"; } + return false; + } + return false; + } + if (x.tag === "TokRightFatArrow") { + if (y.tag === "TokRightFatArrow") { + if (x._1.tag === "ASCII") { return y._1.tag === "ASCII"; } + if (x._1.tag === "Unicode") { return y._1.tag === "Unicode"; } + return false; + } + return false; + } + if (x.tag === "TokDoubleColon") { + if (y.tag === "TokDoubleColon") { + if (x._1.tag === "ASCII") { return y._1.tag === "ASCII"; } + if (x._1.tag === "Unicode") { return y._1.tag === "Unicode"; } + return false; + } + return false; + } + if (x.tag === "TokForall") { + if (y.tag === "TokForall") { + if (x._1.tag === "ASCII") { return y._1.tag === "ASCII"; } + if (x._1.tag === "Unicode") { return y._1.tag === "Unicode"; } + return false; + } + return false; + } + if (x.tag === "TokEquals") { return y.tag === "TokEquals"; } + if (x.tag === "TokPipe") { return y.tag === "TokPipe"; } + if (x.tag === "TokTick") { return y.tag === "TokTick"; } + if (x.tag === "TokDot") { return y.tag === "TokDot"; } + if (x.tag === "TokComma") { return y.tag === "TokComma"; } + if (x.tag === "TokUnderscore") { return y.tag === "TokUnderscore"; } + if (x.tag === "TokBackslash") { return y.tag === "TokBackslash"; } + if (x.tag === "TokAt") { return y.tag === "TokAt"; } + if (x.tag === "TokLowerName") { + if (y.tag === "TokLowerName") { + return (() => { + if (x._1.tag === "Nothing") { return y._1.tag === "Nothing"; } + if (x._1.tag === "Just") { + if (y._1.tag === "Just") { return x._1._1 === y._1._1; } + return false; + } + return false; + })() && x._2 === y._2; + } + return false; + } + if (x.tag === "TokUpperName") { + if (y.tag === "TokUpperName") { + return (() => { + if (x._1.tag === "Nothing") { return y._1.tag === "Nothing"; } + if (x._1.tag === "Just") { + if (y._1.tag === "Just") { return x._1._1 === y._1._1; } + return false; + } + return false; + })() && x._2 === y._2; + } + return false; + } + if (x.tag === "TokOperator") { + if (y.tag === "TokOperator") { + return (() => { + if (x._1.tag === "Nothing") { return y._1.tag === "Nothing"; } + if (x._1.tag === "Just") { + if (y._1.tag === "Just") { return x._1._1 === y._1._1; } + return false; + } + return false; + })() && x._2 === y._2; + } + return false; + } + if (x.tag === "TokSymbolName") { + if (y.tag === "TokSymbolName") { + return (() => { + if (x._1.tag === "Nothing") { return y._1.tag === "Nothing"; } + if (x._1.tag === "Just") { + if (y._1.tag === "Just") { return x._1._1 === y._1._1; } + return false; + } + return false; + })() && x._2 === y._2; + } + return false; + } + if (x.tag === "TokSymbolArrow") { + if (y.tag === "TokSymbolArrow") { + if (x._1.tag === "ASCII") { return y._1.tag === "ASCII"; } + if (x._1.tag === "Unicode") { return y._1.tag === "Unicode"; } + return false; + } + return false; + } + if (x.tag === "TokHole") { + if (y.tag === "TokHole") { return x._1 === y._1; } + return false; + } + if (x.tag === "TokChar") { + if (y.tag === "TokChar") { return x._1 === y._1 && x._2 === y._2; } + return false; + } + if (x.tag === "TokString") { + if (y.tag === "TokString") { return x._1 === y._1 && x._2 === y._2; } + return false; + } + if (x.tag === "TokRawString") { + if (y.tag === "TokRawString") { return x._1 === y._1; } + return false; + } + if (x.tag === "TokInt") { + if (y.tag === "TokInt") { + return x._1 === y._1 && (() => { + if (x._2.tag === "SmallInt") { + if (y._2.tag === "SmallInt") { return x._2._1 === y._2._1; } + return false; + } + if (x._2.tag === "BigInt") { + if (y._2.tag === "BigInt") { return x._2._1 === y._2._1; } + return false; + } + if (x._2.tag === "BigHex") { + if (y._2.tag === "BigHex") { return x._2._1 === y._2._1; } + return false; + } + return false; + })(); + } + return false; + } + if (x.tag === "TokNumber") { + if (y.tag === "TokNumber") { return x._1 === y._1 && x._2 === y._2; } + return false; + } + if (x.tag === "TokLayoutStart") { + if (y.tag === "TokLayoutStart") { return x._1 === y._1; } + return false; + } + if (x.tag === "TokLayoutSep") { + if (y.tag === "TokLayoutSep") { return x._1 === y._1; } + return false; + } + if (x.tag === "TokLayoutEnd") { + if (y.tag === "TokLayoutEnd") { return x._1 === y._1; } + return false; + } + return false; + } +}; +const eqIdent = Data$dEq.eqString; +export { + $Binder, + $ClassFundep, + $Comment, + $DataMembers, + $Declaration, + $DoStatement, + $Export, + $Expr, + $Fixity, + $FixityOp, + $Foreign, + $Guarded, + $Import, + $InstanceBinding, + $IntValue, + $LetBinding, + $LineFeed, + $OneOrDelimited, + $RecordLabeled, + $RecordUpdate, + $Role, + $SourceStyle, + $Token, + $Type, + $TypeVarBinding, + ASCII, + BigHex, + $$BigInt as BigInt, + BinderArray, + BinderBoolean, + BinderChar, + BinderConstructor, + BinderError, + BinderInt, + BinderNamed, + BinderNumber, + BinderOp, + BinderParens, + BinderRecord, + BinderString, + BinderTyped, + BinderVar, + BinderWildcard, + CRLF, + Comment, + DataAll, + DataCtor, + DataEnumerated, + DeclClass, + DeclData, + DeclDerive, + DeclError, + DeclFixity, + DeclForeign, + DeclInstanceChain, + DeclKindSignature, + DeclNewtype, + DeclRole, + DeclSignature, + DeclType, + DeclValue, + DoBind, + DoDiscard, + DoError, + DoLet, + ExportClass, + ExportError, + ExportModule, + ExportOp, + ExportType, + ExportTypeOp, + ExportValue, + ExprAdo, + ExprApp, + ExprArray, + ExprBoolean, + ExprCase, + ExprChar, + ExprConstructor, + ExprDo, + ExprError, + ExprHole, + ExprIdent, + ExprIf, + ExprInfix, + ExprInt, + ExprLambda, + ExprLet, + ExprNegate, + ExprNumber, + ExprOp, + ExprOpName, + ExprParens, + ExprRecord, + ExprRecordAccessor, + ExprRecordUpdate, + ExprSection, + ExprString, + ExprTyped, + FixityType, + FixityValue, + ForeignData, + ForeignKind, + ForeignValue, + FundepDetermined, + FundepDetermines, + Guarded, + GuardedExpr, + Ident, + ImportClass, + ImportDecl, + ImportError, + ImportOp, + ImportType, + ImportTypeOp, + ImportValue, + Infix, + Infixl, + Infixr, + Instance, + InstanceBindingName, + InstanceBindingSignature, + LF, + Label, + Labeled, + LetBindingError, + LetBindingName, + LetBindingPattern, + LetBindingSignature, + Line, + Many, + Module, + ModuleBody, + ModuleHeader, + ModuleName, + Name, + Nominal, + One, + Operator, + PatternGuard, + Phantom, + Proper, + QualifiedName, + RecordField, + RecordPun, + RecordUpdateBranch, + RecordUpdateLeaf, + Representational, + Row, + Separated, + SmallInt, + Space, + TokAt, + TokBackslash, + TokChar, + TokComma, + TokDot, + TokDoubleColon, + TokEquals, + TokForall, + TokHole, + TokInt, + TokLayoutEnd, + TokLayoutSep, + TokLayoutStart, + TokLeftArrow, + TokLeftBrace, + TokLeftParen, + TokLeftSquare, + TokLowerName, + TokNumber, + TokOperator, + TokPipe, + TokRawString, + TokRightArrow, + TokRightBrace, + TokRightFatArrow, + TokRightParen, + TokRightSquare, + TokString, + TokSymbolArrow, + TokSymbolName, + TokTick, + TokUnderscore, + TokUpperName, + TypeApp, + TypeArrow, + TypeArrowName, + TypeConstrained, + TypeConstructor, + $$TypeError as TypeError, + TypeForall, + TypeHole, + TypeInt, + TypeKinded, + TypeOp, + TypeOpName, + TypeParens, + TypeRecord, + TypeRow, + TypeString, + TypeVar, + TypeVarKinded, + TypeVarName, + TypeWildcard, + Unconditional, + Unicode, + Where, + Wrapped, + eqIdent, + eqIntValue, + eqLabel, + eqModuleName, + eqOperator, + eqProper, + eqSourceStyle, + eqToken, + newtypeDataCtor, + newtypeGuardedExpr, + newtypeIdent, + newtypeImportDecl, + newtypeInstance, + newtypeLabel, + newtypeLabeled, + newtypeModule, + newtypeModuleBody, + newtypeModuleHeader, + newtypeModuleName, + newtypeName, + newtypeOperator, + newtypePatternGuard, + newtypeProper, + newtypeQualifiedName, + newtypeRow, + newtypeSeparated, + newtypeWhere, + newtypeWrapped, + ordIdent, + ordLabel, + ordModuleName, + ordOperator, + ordProper +}; diff --git a/.storybook/purescript-indexer/output-es/PureScript.CST/index.js b/.storybook/purescript-indexer/output-es/PureScript.CST/index.js new file mode 100644 index 0000000..69bc558 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/PureScript.CST/index.js @@ -0,0 +1,87 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dEither from "../Data.Either/index.js"; +import * as Data$dFoldable from "../Data.Foldable/index.js"; +import * as Data$dLazy from "../Data.Lazy/index.js"; +import * as Data$dMonoid from "../Data.Monoid/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +import * as PureScript$dCST$dLexer from "../PureScript.CST.Lexer/index.js"; +import * as PureScript$dCST$dParser from "../PureScript.CST.Parser/index.js"; +import * as PureScript$dCST$dParser$dMonad from "../PureScript.CST.Parser.Monad/index.js"; +import * as PureScript$dCST$dPrint from "../PureScript.CST.Print/index.js"; +import * as PureScript$dCST$dRange from "../PureScript.CST.Range/index.js"; +import * as PureScript$dCST$dRange$dTokenList from "../PureScript.CST.Range.TokenList/index.js"; +import * as Unsafe$dCoerce from "../Unsafe.Coerce/index.js"; +const $RecoveredParserResult = (tag, _1, _2) => ({tag, _1, _2}); +const foldMap = /* #__PURE__ */ (() => Data$dFoldable.foldableArray.foldMap(Data$dMonoid.monoidString))(); +const ParseSucceeded = value0 => $RecoveredParserResult("ParseSucceeded", value0); +const ParseSucceededWithErrors = value0 => value1 => $RecoveredParserResult("ParseSucceededWithErrors", value0, value1); +const ParseFailed = value0 => $RecoveredParserResult("ParseFailed", value0); +const PartialModule = x => x; +const toRecoveredParserResult = v => { + if (v.tag === "Right") { + if (v._1._2.length > 0) { return $RecoveredParserResult("ParseSucceededWithErrors", v._1._1, v._1._2); } + if (v.tag === "Right") { return $RecoveredParserResult("ParseSucceeded", v._1._1); } + if (v.tag === "Left") { return $RecoveredParserResult("ParseFailed", v._1); } + $runtime.fail(); + } + if (v.tag === "Right") { return $RecoveredParserResult("ParseSucceeded", v._1._1); } + if (v.tag === "Left") { return $RecoveredParserResult("ParseFailed", v._1); } + $runtime.fail(); +}; +const toRecovered = Unsafe$dCoerce.unsafeCoerce; +const runRecoveredParser = p => x => toRecoveredParserResult(PureScript$dCST$dParser$dMonad.fromParserResult(PureScript$dCST$dParser$dMonad.runParser$p({ + consumed: false, + errors: [], + stream: PureScript$dCST$dLexer.lex(x) +})(p))); +const printModule = dictTokensOf => { + const tokensOf = PureScript$dCST$dRange.tokensOfModule(dictTokensOf).tokensOf; + return mod => foldMap(PureScript$dCST$dPrint.printSourceTokenWithOption(PureScript$dCST$dPrint.HideLayout))(PureScript$dCST$dRange$dTokenList.toArray(tokensOf(mod))) + foldMap(PureScript$dCST$dPrint.printComment(PureScript$dCST$dPrint.printLineFeed))(mod.body.trailingComments); +}; +const parseType = /* #__PURE__ */ runRecoveredParser(PureScript$dCST$dParser.parseType); +const parsePartialModule = src => toRecoveredParserResult((() => { + const v = PureScript$dCST$dParser$dMonad.runParser$p({consumed: false, errors: [], stream: PureScript$dCST$dLexer.lex(src)})(PureScript$dCST$dParser.parseModuleHeader); + if (v.tag === "ParseSucc") { + return Data$dEither.$Either( + "Right", + Data$dTuple.$Tuple( + { + header: v._1, + full: Data$dLazy.defer(v1 => toRecoveredParserResult(PureScript$dCST$dParser$dMonad.fromParserResult(PureScript$dCST$dParser$dMonad.runParser$p(v._2)(( + state1, + more, + resume, + done + ) => PureScript$dCST$dParser.parseModuleBody(state1, more, resume, (state2, a) => more(v1$1 => done(state2, {header: v._1, body: a}))))))) + }, + v._2.errors + ) + ); + } + if (v.tag === "ParseFail") { return Data$dEither.$Either("Left", v._1); } + $runtime.fail(); +})()); +const parseModule = /* #__PURE__ */ runRecoveredParser(PureScript$dCST$dParser.parseModule); +const parseImportDecl = /* #__PURE__ */ runRecoveredParser(PureScript$dCST$dParser.parseImportDecl); +const parseExpr = /* #__PURE__ */ runRecoveredParser(PureScript$dCST$dParser.parseExpr); +const parseDecl = /* #__PURE__ */ runRecoveredParser(PureScript$dCST$dParser.parseDecl); +const parseBinder = /* #__PURE__ */ runRecoveredParser(PureScript$dCST$dParser.parseBinder); +export { + $RecoveredParserResult, + ParseFailed, + ParseSucceeded, + ParseSucceededWithErrors, + PartialModule, + foldMap, + parseBinder, + parseDecl, + parseExpr, + parseImportDecl, + parseModule, + parsePartialModule, + parseType, + printModule, + runRecoveredParser, + toRecovered, + toRecoveredParserResult +}; diff --git a/.storybook/purescript-indexer/output-es/PureScriptCSFIndexer/index.js b/.storybook/purescript-indexer/output-es/PureScriptCSFIndexer/index.js new file mode 100644 index 0000000..b90b00a --- /dev/null +++ b/.storybook/purescript-indexer/output-es/PureScriptCSFIndexer/index.js @@ -0,0 +1,140 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dArray from "../Data.Array/index.js"; +import * as Data$dConst from "../Data.Const/index.js"; +import * as Data$dFoldable from "../Data.Foldable/index.js"; +import * as Data$dList$dTypes from "../Data.List.Types/index.js"; +import * as Data$dMap from "../Data.Map/index.js"; +import * as Data$dMap$dInternal from "../Data.Map.Internal/index.js"; +import * as Data$dMonoid from "../Data.Monoid/index.js"; +import * as Data$dOrd from "../Data.Ord/index.js"; +import * as Data$dSemigroup$dFirst from "../Data.Semigroup.First/index.js"; +import * as Data$dString$dCodeUnits from "../Data.String.CodeUnits/index.js"; +import * as Data$dString$dCommon from "../Data.String.Common/index.js"; +import * as Data$dString$dRegex from "../Data.String.Regex/index.js"; +import * as Data$dString$dRegex$dUnsafe from "../Data.String.Regex.Unsafe/index.js"; +import * as Effect$dAff from "../Effect.Aff/index.js"; +import * as Effect$dConsole from "../Effect.Console/index.js"; +import * as Effect$dException from "../Effect.Exception/index.js"; +import * as Node$dEncoding from "../Node.Encoding/index.js"; +import * as Node$dFS$dAff from "../Node.FS.Aff/index.js"; +import * as Node$dFS$dAsync from "../Node.FS.Async/index.js"; +import * as Node$dPath from "../Node.Path/index.js"; +import * as PureScript$dCST from "../PureScript.CST/index.js"; +import * as PureScript$dCST$dParser from "../PureScript.CST.Parser/index.js"; +import * as PureScript$dCST$dTraversal from "../PureScript.CST.Traversal/index.js"; +import * as Record$dUnsafe$dUnion from "../Record.Unsafe.Union/index.js"; +import * as Storybook$dCSFTools from "../Storybook.CSFTools/index.js"; +import * as Yoga$dJSON from "../Yoga.JSON/index.js"; +import * as Yoga$dJSON$dError from "../Yoga.JSON.Error/index.js"; +const monoidSemigroupMap = /* #__PURE__ */ Data$dMap.monoidSemigroupMap(Data$dOrd.ordString)(Data$dSemigroup$dFirst.semigroupFirst); +const intercalateMap = /* #__PURE__ */ (() => { + const foldMap12 = Data$dList$dTypes.foldable1NonEmptyList.foldMap1({append: v => v1 => j => v(j) + (j + v1(j))}); + return j => f => foldable => foldMap12(x => { + const $5 = f(x); + return v => $5; + })(foldable)(j); +})(); +const readForeignArray = /* #__PURE__ */ Yoga$dJSON.readForeignArray(Yoga$dJSON.readForeignString); +const readJSON = /* #__PURE__ */ Yoga$dJSON.readJSON(/* #__PURE__ */ Yoga$dJSON.readForeignRecord()(/* #__PURE__ */ Yoga$dJSON.readForeignFieldsCons({reflectSymbol: () => "file"})(Yoga$dJSON.readForeignString)(/* #__PURE__ */ Yoga$dJSON.readForeignFieldsCons({ + reflectSymbol: () => "mappings" +})(Yoga$dJSON.readForeignString)(/* #__PURE__ */ Yoga$dJSON.readForeignFieldsCons({reflectSymbol: () => "names"})(readForeignArray)(/* #__PURE__ */ Yoga$dJSON.readForeignFieldsCons({ + reflectSymbol: () => "sourceRoot" +})(/* #__PURE__ */ Yoga$dJSON.readForeignMaybe(Yoga$dJSON.readForeignString))(/* #__PURE__ */ Yoga$dJSON.readForeignFieldsCons({reflectSymbol: () => "sources"})(readForeignArray)(/* #__PURE__ */ Yoga$dJSON.readForeignFieldsCons({ + reflectSymbol: () => "version" +})(Yoga$dJSON.readForeignInt)(Yoga$dJSON.readForeignFieldsNilRowRo)()())()())()())()())()())()())); +const for_ = /* #__PURE__ */ Data$dFoldable.for_(Effect$dAff.applicativeAff); +const for_1 = /* #__PURE__ */ for_(Data$dFoldable.foldableArray); +const for_2 = /* #__PURE__ */ for_(Data$dFoldable.foldableMaybe); +const intercalate = /* #__PURE__ */ Data$dArray.intercalate1(Data$dMonoid.monoidString); +const getTopLevelValueDeclarations = /* #__PURE__ */ PureScript$dCST$dTraversal.monoidalRewrite(monoidSemigroupMap)(/* #__PURE__ */ PureScript$dCST$dTraversal.traverseModule(/* #__PURE__ */ PureScript$dCST$dTraversal.applicativeCompose(/* #__PURE__ */ Data$dConst.applicativeConst(monoidSemigroupMap))))({ + onBinder: v => monoidSemigroupMap.mempty, + onDecl: v1 => { + if (v1.tag === "DeclValue") { return Data$dMap$dInternal.$Map("Two", Data$dMap$dInternal.Leaf, v1._1.name.name, v1._1.name.token.range, Data$dMap$dInternal.Leaf); } + return monoidSemigroupMap.mempty; + }, + onExpr: v => monoidSemigroupMap.mempty, + onType: v => monoidSemigroupMap.mempty +}); +const enrichWithPureScriptInfo = fileName => parsed => { + const $2 = intercalateMap("\n")(Yoga$dJSON$dError.renderHumanError); + return Effect$dAff.try(Effect$dAff._bind(Node$dFS$dAff.toAff2(Node$dFS$dAsync.readTextFile)(Node$dEncoding.UTF8)(fileName + ".map"))(sourceMapText => Effect$dAff._bind((() => { + const $4 = readJSON(sourceMapText); + if ($4.tag === "Left") { return Effect$dAff._throwError(Effect$dException.error($2($4._1))); } + if ($4.tag === "Right") { return Effect$dAff._pure($4._1); } + $runtime.fail(); + })())(v => Effect$dAff._bind((() => { + const $5 = Effect$dAff._throwError(Effect$dException.error("empty source path")); + const $6 = Data$dArray.index(v.sources)(0); + if ($6.tag === "Nothing") { return $5; } + if ($6.tag === "Just") { return Effect$dAff._pure($6._1); } + $runtime.fail(); + })())(sourcePath => Effect$dAff._bind(Effect$dAff._liftEffect(Node$dPath.resolve([Node$dPath.dirname(fileName)])(sourcePath)))(absoluteSourcePath => Effect$dAff._bind(Node$dFS$dAff.toAff2(Node$dFS$dAsync.readTextFile)(Node$dEncoding.UTF8)(absoluteSourcePath))(psFile => Effect$dAff._bind((() => { + const v1 = PureScript$dCST.runRecoveredParser(PureScript$dCST$dParser.parseModule)(psFile); + if (v1.tag === "ParseSucceeded") { return Effect$dAff._pure(v1._1); } + return Effect$dAff._throwError(Effect$dException.error("failed to parse PureScript module " + psFile)); + })())(cst => { + const topLevelDecls = getTopLevelValueDeclarations(cst); + return Effect$dAff._bind(Effect$dAff._liftEffect(Storybook$dCSFTools.getStoryNames(parsed)))(storyNames => Effect$dAff._bind(Effect$dAff._liftEffect(() => ({value: parsed})))(resultRef => { + const lines = Data$dString$dCommon.split("\n")(psFile); + return Effect$dAff._bind(for_1(storyNames)(storyName => for_2(Data$dMap$dInternal.lookup(Data$dOrd.ordString)(storyName)(topLevelDecls))(v1 => Effect$dAff._liftEffect((() => { + const completeLines = Data$dArray.slice(v1.start.line)(v1.end.line - 2 | 0)(lines); + const v3 = Data$dArray.index(lines)(v1.end.line); + const v4 = Data$dArray.index(lines)(v1.start.line); + if (v4.tag === "Just") { + if (v3.tag === "Just") { + const code = Data$dString$dCodeUnits.drop(v1.start.column)(v4._1) + ( + "\n" + (intercalate("\n")(completeLines) + ("\n" + Data$dString$dCodeUnits.take(v1.end.column)(v3._1))) + ); + return () => { + const before = resultRef.value; + const after = Storybook$dCSFTools.setStoryCode({storyName: storyName, code: code})(before)(); + return resultRef.value = after; + }; + } + return Effect$dConsole.error("weird"); + } + return Effect$dConsole.error("weird"); + })()))))(() => Effect$dAff._bind(Effect$dAff._liftEffect(() => resultRef.value))(result => Effect$dAff._pure(result))); + })); + }))))))); +}; +const defaultVariableRecordRegex = /* #__PURE__ */ Data$dString$dRegex$dUnsafe.unsafeRegex("^var \\$\\$default =[^\\{]+\\{((?:.*\\n)+?)(^\\}\\);)")({ + global: true, + ignoreCase: false, + multiline: true, + dotAll: false, + sticky: false, + unicode: false +}); +const adjustSourceForStorybook = /* #__PURE__ */ Data$dString$dRegex.replace(defaultVariableRecordRegex)("var $$$$default = { $1 };"); +const indexer = fileName => options => Effect$dAff._bind(Node$dFS$dAff.toAff2(Node$dFS$dAsync.readTextFile)(Node$dEncoding.UTF8)(fileName))(fileContent => Effect$dAff._bind(Effect$dAff._liftEffect(Storybook$dCSFTools.parseCsf(adjustSourceForStorybook(fileContent))({ + ...options, + fileName: fileName +})))(parsed => Effect$dAff._bind(enrichWithPureScriptInfo(fileName)(parsed))(enriched => Effect$dAff._bind((() => { + if (enriched.tag === "Left") { + return Effect$dAff._bind(Effect$dAff._liftEffect(Effect$dConsole.error(Effect$dException.showErrorImpl(enriched._1))))(() => Effect$dAff._pure(parsed)); + } + if (enriched.tag === "Right") { return Effect$dAff._pure(enriched._1); } + $runtime.fail(); +})())(csf => Effect$dAff._liftEffect((() => { + const $6 = Storybook$dCSFTools.formatCsf(csf); + return () => { + const formatted = $6(); + return Storybook$dCSFTools.parseCsf(formatted)(options)(); + }; +})()))))); +export { + adjustSourceForStorybook, + defaultVariableRecordRegex, + enrichWithPureScriptInfo, + for_, + for_1, + for_2, + getTopLevelValueDeclarations, + indexer, + intercalate, + intercalateMap, + monoidSemigroupMap, + readForeignArray, + readJSON +}; diff --git a/.storybook/purescript-indexer/output-es/Record.Builder/foreign.js b/.storybook/purescript-indexer/output-es/Record.Builder/foreign.js new file mode 100644 index 0000000..bae6e96 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Record.Builder/foreign.js @@ -0,0 +1,44 @@ +export function copyRecord(rec) { + var copy = {}; + for (var key in rec) { + if ({}.hasOwnProperty.call(rec, key)) { + copy[key] = rec[key]; + } + } + return copy; +} + +export function unsafeInsert(l) { + return function(a) { + return function(rec) { + rec[l] = a; + return rec; + }; + }; +} + +export function unsafeModify(l) { + return function (f) { + return function(rec) { + rec[l] = f(rec[l]); + return rec; + }; + }; +} + +export function unsafeDelete(l) { + return function(rec) { + delete rec[l]; + return rec; + }; +} + +export function unsafeRename(l1) { + return function (l2) { + return function (rec) { + rec[l2] = rec[l1]; + delete rec[l1]; + return rec; + }; + }; +} diff --git a/.storybook/purescript-indexer/output-es/Record.Builder/index.js b/.storybook/purescript-indexer/output-es/Record.Builder/index.js new file mode 100644 index 0000000..97dae8d --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Record.Builder/index.js @@ -0,0 +1,21 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dCategory from "../Control.Category/index.js"; +import * as Control$dSemigroupoid from "../Control.Semigroupoid/index.js"; +import * as Record$dUnsafe$dUnion from "../Record.Unsafe.Union/index.js"; +import * as Unsafe$dCoerce from "../Unsafe.Coerce/index.js"; +import {copyRecord, unsafeDelete, unsafeInsert, unsafeModify, unsafeRename} from "./foreign.js"; +const union = () => r1 => r2 => Record$dUnsafe$dUnion.unsafeUnionFn(r1, r2); +const semigroupoidBuilder = Control$dSemigroupoid.semigroupoidFn; +const rename = dictIsSymbol => dictIsSymbol1 => () => () => () => () => l1 => l2 => r1 => unsafeRename(dictIsSymbol.reflectSymbol(l1))(dictIsSymbol1.reflectSymbol(l2))(r1); +const nub = () => Unsafe$dCoerce.unsafeCoerce; +const modify = () => () => dictIsSymbol => l => f => r1 => unsafeModify(dictIsSymbol.reflectSymbol(l))(f)(r1); +const merge = () => () => r1 => r2 => Record$dUnsafe$dUnion.unsafeUnionFn(r1, r2); +const insert = () => () => dictIsSymbol => l => a => r1 => unsafeInsert(dictIsSymbol.reflectSymbol(l))(a)(r1); +const disjointUnion = () => () => r1 => r2 => Record$dUnsafe$dUnion.unsafeUnionFn(r1, r2); +const $$delete = dictIsSymbol => () => () => l => r2 => unsafeDelete(dictIsSymbol.reflectSymbol(l))(r2); +const categoryBuilder = Control$dCategory.categoryFn; +const build = v => r1 => v(copyRecord(r1)); +const buildFromScratch = a => a({}); +const flip = f => b => a => f(a)(copyRecord(b)); +export {build, buildFromScratch, categoryBuilder, $$delete as delete, disjointUnion, flip, insert, merge, modify, nub, rename, semigroupoidBuilder, union}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Record.Unsafe.Union/foreign.js b/.storybook/purescript-indexer/output-es/Record.Unsafe.Union/foreign.js new file mode 100644 index 0000000..01efccf --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Record.Unsafe.Union/foreign.js @@ -0,0 +1,14 @@ +export function unsafeUnionFn(r1, r2) { + var copy = {}; + for (var k1 in r2) { + if ({}.hasOwnProperty.call(r2, k1)) { + copy[k1] = r2[k1]; + } + } + for (var k2 in r1) { + if ({}.hasOwnProperty.call(r1, k2)) { + copy[k2] = r1[k2]; + } + } + return copy; +} diff --git a/.storybook/purescript-indexer/output-es/Record.Unsafe.Union/index.js b/.storybook/purescript-indexer/output-es/Record.Unsafe.Union/index.js new file mode 100644 index 0000000..ea333d4 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Record.Unsafe.Union/index.js @@ -0,0 +1,5 @@ +import * as $runtime from "../runtime.js"; +import {unsafeUnionFn} from "./foreign.js"; +const unsafeUnion = $0 => $1 => unsafeUnionFn($0, $1); +export {unsafeUnion}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Record.Unsafe/foreign.js b/.storybook/purescript-indexer/output-es/Record.Unsafe/foreign.js new file mode 100644 index 0000000..af2d506 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Record.Unsafe/foreign.js @@ -0,0 +1,38 @@ +export const unsafeHas = function (label) { + return function (rec) { + return {}.hasOwnProperty.call(rec, label); + }; +}; + +export const unsafeGet = function (label) { + return function (rec) { + return rec[label]; + }; +}; + +export const unsafeSet = function (label) { + return function (value) { + return function (rec) { + var copy = {}; + for (var key in rec) { + if ({}.hasOwnProperty.call(rec, key)) { + copy[key] = rec[key]; + } + } + copy[label] = value; + return copy; + }; + }; +}; + +export const unsafeDelete = function (label) { + return function (rec) { + var copy = {}; + for (var key in rec) { + if (key !== label && {}.hasOwnProperty.call(rec, key)) { + copy[key] = rec[key]; + } + } + return copy; + }; +}; diff --git a/.storybook/purescript-indexer/output-es/Record.Unsafe/index.js b/.storybook/purescript-indexer/output-es/Record.Unsafe/index.js new file mode 100644 index 0000000..06ef078 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Record.Unsafe/index.js @@ -0,0 +1,10 @@ +// | The functions in this module are highly unsafe as they treat records like +// | stringly-keyed maps and can coerce the row of labels that a record has. +// | +// | These function are intended for situations where there is some other way of +// | proving things about the structure of the record - for example, when using +// | `RowToList`. **They should never be used for general record manipulation.** +import * as $runtime from "../runtime.js"; +import {unsafeDelete, unsafeGet, unsafeHas, unsafeSet} from "./foreign.js"; +export {}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Record/index.js b/.storybook/purescript-indexer/output-es/Record/index.js new file mode 100644 index 0000000..8d10884 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Record/index.js @@ -0,0 +1,24 @@ +import * as $runtime from "../runtime.js"; +import * as Record$dUnsafe from "../Record.Unsafe/index.js"; +import * as Record$dUnsafe$dUnion from "../Record.Unsafe.Union/index.js"; +import * as Type$dProxy from "../Type.Proxy/index.js"; +import * as Unsafe$dCoerce from "../Unsafe.Coerce/index.js"; +const union = () => l => r => Record$dUnsafe$dUnion.unsafeUnionFn(l, r); +const $$set = dictIsSymbol => () => () => l => b => r => Record$dUnsafe.unsafeSet(dictIsSymbol.reflectSymbol(l))(b)(r); +const nub = () => Unsafe$dCoerce.unsafeCoerce; +const merge = () => () => l => r => Record$dUnsafe$dUnion.unsafeUnionFn(l, r); +const insert = dictIsSymbol => () => () => l => a => r => Record$dUnsafe.unsafeSet(dictIsSymbol.reflectSymbol(l))(a)(r); +const $$get = dictIsSymbol => () => l => r => Record$dUnsafe.unsafeGet(dictIsSymbol.reflectSymbol(l))(r); +const modify = dictIsSymbol => () => () => l => f => r => Record$dUnsafe.unsafeSet(dictIsSymbol.reflectSymbol(l))(f(Record$dUnsafe.unsafeGet(dictIsSymbol.reflectSymbol(l))(r)))(r); +const equalFieldsNil = {equalFields: v => v1 => v2 => true}; +const equalFields = dict => dict.equalFields; +const equalFieldsCons = dictIsSymbol => dictEq => () => dictEqualFields => ( + { + equalFields: v => a => b => dictEq.eq(Record$dUnsafe.unsafeGet(dictIsSymbol.reflectSymbol(Type$dProxy.Proxy))(a))(Record$dUnsafe.unsafeGet(dictIsSymbol.reflectSymbol(Type$dProxy.Proxy))(b)) && dictEqualFields.equalFields(Type$dProxy.Proxy)(a)(b) + } +); +const equal = () => dictEqualFields => a => b => dictEqualFields.equalFields(Type$dProxy.Proxy)(a)(b); +const disjointUnion = () => () => l => r => Record$dUnsafe$dUnion.unsafeUnionFn(l, r); +const $$delete = dictIsSymbol => () => () => l => r => Record$dUnsafe.unsafeDelete(dictIsSymbol.reflectSymbol(l))(r); +const rename = dictIsSymbol => dictIsSymbol1 => () => () => () => () => prev => next => record => Record$dUnsafe.unsafeSet(dictIsSymbol1.reflectSymbol(next))(Record$dUnsafe.unsafeGet(dictIsSymbol.reflectSymbol(prev))(record))(Record$dUnsafe.unsafeDelete(dictIsSymbol.reflectSymbol(prev))(record)); +export {$$delete as delete, disjointUnion, equal, equalFields, equalFieldsCons, equalFieldsNil, $$get as get, insert, merge, modify, nub, rename, $$set as set, union}; diff --git a/.storybook/purescript-indexer/output-es/Safe.Coerce/index.js b/.storybook/purescript-indexer/output-es/Safe.Coerce/index.js new file mode 100644 index 0000000..8e5f371 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Safe.Coerce/index.js @@ -0,0 +1,4 @@ +import * as $runtime from "../runtime.js"; +import * as Unsafe$dCoerce from "../Unsafe.Coerce/index.js"; +const coerce = () => Unsafe$dCoerce.unsafeCoerce; +export {coerce}; diff --git a/.storybook/purescript-indexer/output-es/SourceMap.Types/index.js b/.storybook/purescript-indexer/output-es/SourceMap.Types/index.js new file mode 100644 index 0000000..2d3a7c9 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/SourceMap.Types/index.js @@ -0,0 +1,2 @@ +import * as $runtime from "../runtime.js"; +export {}; diff --git a/.storybook/purescript-indexer/output-es/SourceMap/foreign.js b/.storybook/purescript-indexer/output-es/SourceMap/foreign.js new file mode 100644 index 0000000..715dd8d --- /dev/null +++ b/.storybook/purescript-indexer/output-es/SourceMap/foreign.js @@ -0,0 +1,4 @@ +import { SourceMapConsumer } from "source-map" + +export const withSourceMapConsumerImpl = + (fn, data) => SourceMapConsumer.with(data, null, fn) diff --git a/.storybook/purescript-indexer/output-es/SourceMap/index.js b/.storybook/purescript-indexer/output-es/SourceMap/index.js new file mode 100644 index 0000000..ce8939b --- /dev/null +++ b/.storybook/purescript-indexer/output-es/SourceMap/index.js @@ -0,0 +1,27 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dPromise from "../Control.Promise/index.js"; +import * as Data$dFunctor from "../Data.Functor/index.js"; +import * as Effect$dAff from "../Effect.Aff/index.js"; +import * as Type$dProxy from "../Type.Proxy/index.js"; +import * as Unsafe$dCoerce from "../Unsafe.Coerce/index.js"; +import * as Yoga$dJSON from "../Yoga.JSON/index.js"; +import {withSourceMapConsumerImpl} from "./foreign.js"; +const writeForeignArray = {writeImpl: xs => Data$dFunctor.arrayMap(Unsafe$dCoerce.unsafeCoerce)(xs)}; +const write = /* #__PURE__ */ (() => { + const $0 = Yoga$dJSON.writeForeignFieldsCons({reflectSymbol: () => "file"})(Yoga$dJSON.writeForeignString)(Yoga$dJSON.writeForeignFieldsCons({reflectSymbol: () => "mappings"})(Yoga$dJSON.writeForeignString)(Yoga$dJSON.writeForeignFieldsCons({ + reflectSymbol: () => "names" + })(writeForeignArray)(Yoga$dJSON.writeForeignFieldsCons({reflectSymbol: () => "sourceRoot"})({ + writeImpl: v2 => { + if (v2.tag === "Nothing") { return Yoga$dJSON._undefined; } + if (v2.tag === "Just") { return v2._1; } + $runtime.fail(); + } + })(Yoga$dJSON.writeForeignFieldsCons({reflectSymbol: () => "sources"})(writeForeignArray)(Yoga$dJSON.writeForeignFieldsCons({reflectSymbol: () => "version"})(Yoga$dJSON.writeForeignInt)(Yoga$dJSON.writeForeignFieldsNilRowR)()()())()()())()()())()()())()()())()()(); + return rec => $0.writeImplFields(Type$dProxy.Proxy)(rec)({}); +})(); +const withSourceMapConsumer = handler => map => Effect$dAff._bind(Effect$dAff._liftEffect((() => { + const $2 = write(map); + return () => withSourceMapConsumerImpl(x => Control$dPromise.fromAff(handler(x))(), $2); +})()))(Control$dPromise.toAff$p(Control$dPromise.coerce)); +export {withSourceMapConsumer, write, writeForeignArray}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Storybook.CSFTools.Types/index.js b/.storybook/purescript-indexer/output-es/Storybook.CSFTools.Types/index.js new file mode 100644 index 0000000..2d3a7c9 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Storybook.CSFTools.Types/index.js @@ -0,0 +1,2 @@ +import * as $runtime from "../runtime.js"; +export {}; diff --git a/.storybook/purescript-indexer/output-es/Storybook.CSFTools/foreign.js b/.storybook/purescript-indexer/output-es/Storybook.CSFTools/foreign.js new file mode 100644 index 0000000..8d31376 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Storybook.CSFTools/foreign.js @@ -0,0 +1,22 @@ +import * as CSF from '@storybook/csf-tools'; + +export const parseCsf = code => options => () => CSF.loadCsf(code, options).parse() + +export const formatCsf = file => () => CSF.formatCsf(file) + +export const getStoryNames = csf => () => Object.keys(csf._stories) + +export const setStoryCode = ({ storyName, code }) => csf => () => { + console.log("schdori", JSON.stringify(csf._stories[storyName], null, 2)) + //docs: { + // source: { + // code: 'some string here' + // } + // } + if (!csf._stories[storyName]) return csf; + if (!csf._stories[storyName].parameters) { csf._stories[storyName].parameters = {} } + if (!csf._stories[storyName].parameters.docs) { csf._stories[storyName].parameters.docs = {} } + if (!csf._stories[storyName].parameters.docs.source) { csf._stories[storyName].parameters.docs.source = {} } + csf._stories[storyName].parameters.docs.source.code = code + return csf +} diff --git a/.storybook/purescript-indexer/output-es/Storybook.CSFTools/index.js b/.storybook/purescript-indexer/output-es/Storybook.CSFTools/index.js new file mode 100644 index 0000000..37176f2 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Storybook.CSFTools/index.js @@ -0,0 +1,4 @@ +import * as $runtime from "../runtime.js"; +import {formatCsf, getStoryNames, parseCsf, setStoryCode} from "./foreign.js"; +export {}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Test.Main/index.js b/.storybook/purescript-indexer/output-es/Test.Main/index.js new file mode 100644 index 0000000..72a627b --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Test.Main/index.js @@ -0,0 +1,10 @@ +import * as $runtime from "../runtime.js"; +import * as Effect$dConsole from "../Effect.Console/index.js"; +const main = /* #__PURE__ */ (() => { + const $0 = Effect$dConsole.log("🍝"); + return () => { + $0(); + return Effect$dConsole.log("You should add some tests.")(); + }; +})(); +export {main}; diff --git a/.storybook/purescript-indexer/output-es/Tidy.Doc/index.js b/.storybook/purescript-indexer/output-es/Tidy.Doc/index.js new file mode 100644 index 0000000..2c9f73f --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Tidy.Doc/index.js @@ -0,0 +1,578 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dAlternative from "../Control.Alternative/index.js"; +import * as Data$dArray from "../Data.Array/index.js"; +import * as Data$dFoldable from "../Data.Foldable/index.js"; +import * as Data$dFunctor from "../Data.Functor/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dMonoid from "../Data.Monoid/index.js"; +import * as Data$dOrd from "../Data.Ord/index.js"; +import * as Data$dOrdering from "../Data.Ordering/index.js"; +import * as Data$dString$dCodePoints from "../Data.String.CodePoints/index.js"; +import * as Data$dString$dCodeUnits from "../Data.String.CodeUnits/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +import * as Dodo from "../Dodo/index.js"; +import * as Dodo$dInternal from "../Dodo.Internal/index.js"; +import * as Tidy$dUtil from "../Tidy.Util/index.js"; +const $ForceBreak = tag => ({tag}); +const guard = /* #__PURE__ */ Control$dAlternative.guard(Data$dMaybe.alternativeMaybe); +const power = /* #__PURE__ */ Data$dMonoid.power(Data$dMonoid.monoidString); +const lines = /* #__PURE__ */ Data$dFoldable.foldrArray(Dodo.appendBreak)(Dodo$dInternal.Empty); +const intercalate = sep => xs => Data$dFoldable.foldlArray(v => v1 => { + if (v.init) { return {init: false, acc: v1}; } + return {init: false, acc: Dodo$dInternal.semigroupDoc.append(v.acc)(Dodo$dInternal.semigroupDoc.append(sep)(v1))}; +})({init: true, acc: Dodo$dInternal.Empty})(xs).acc; +const max = x => y => { + const v = Data$dOrd.ordInt.compare(x)(y); + if (v.tag === "LT") { return y; } + if (v.tag === "EQ") { return x; } + if (v.tag === "GT") { return x; } + $runtime.fail(); +}; +const min = x => y => { + const v = Data$dOrd.ordInt.compare(x)(y); + if (v.tag === "LT") { return x; } + if (v.tag === "EQ") { return x; } + if (v.tag === "GT") { return y; } + $runtime.fail(); +}; +const identity = x => x; +const ForceNone = /* #__PURE__ */ $ForceBreak("ForceNone"); +const ForceSpace = /* #__PURE__ */ $ForceBreak("ForceSpace"); +const ForceBreak = /* #__PURE__ */ $ForceBreak("ForceBreak"); +const LeadingComment = x => x; +const TrailingComment = x => x; +const FormatDoc = x => x; +const sourceBreak = n => v => ( + { + doc: v.doc, + isEmpty: false, + leading: {doc: v.leading.doc, left: v.leading.left, lines: v.leading.lines + n | 0, multiline: v.leading.multiline, right: v.leading.right}, + multiline: v.multiline, + trailing: v.trailing + } +); +const mapDoc = k => v => { + if (v.isEmpty) { return v; } + return {doc: k(v.doc), isEmpty: v.isEmpty, leading: v.leading, multiline: v.multiline, trailing: v.trailing}; +}; +const locally = k => v => ( + {doc: Dodo$dInternal.$Doc("Local", options => Data$dTuple.$Tuple(k(options), v.doc)), isEmpty: v.isEmpty, leading: v.leading, multiline: v.multiline, trailing: v.trailing} +); +const indent = v => { + if (v.isEmpty) { return v; } + return { + doc: (() => { + if (v.doc.tag === "Empty") { return Dodo$dInternal.Empty; } + return Dodo$dInternal.$Doc("Indent", v.doc); + })(), + isEmpty: v.isEmpty, + leading: { + doc: (() => { + if (v.leading.doc.tag === "Empty") { return Dodo$dInternal.Empty; } + return Dodo$dInternal.$Doc("Indent", v.leading.doc); + })(), + left: v.leading.left, + lines: v.leading.lines, + multiline: v.leading.multiline, + right: v.leading.right + }, + multiline: v.multiline, + trailing: { + doc: (() => { + if (v.trailing.doc.tag === "Empty") { return Dodo$dInternal.Empty; } + return Dodo$dInternal.$Doc("Indent", v.trailing.doc); + })(), + left: v.trailing.left, + multiline: v.trailing.multiline, + right: v.trailing.right + } + }; +}; +const formatBlockComment = x => { + const $1 = Data$dArray.uncons(Tidy$dUtil.splitLines(x)); + if ($1.tag === "Nothing") { return Data$dTuple.$Tuple(false, Dodo$dInternal.Empty); } + if ($1.tag === "Just") { + const prefixSpaces = Data$dArray.index(Data$dArray.sortBy(Data$dOrd.ordInt.compare)(Data$dArray.mapMaybe(str => { + const spaces = Data$dString$dCodeUnits.length(Data$dString$dCodePoints.take(Data$dString$dCodePoints.countPrefix(y => 32 === y)(str))(str)); + if (guard(spaces < Data$dString$dCodeUnits.length(str)).tag === "Just") { return Data$dMaybe.$Maybe("Just", spaces); } + return Data$dMaybe.Nothing; + })($1._1.tail)))(0); + if (prefixSpaces.tag === "Nothing") { + return Data$dTuple.$Tuple( + false, + (() => { + if ($1._1.head === "") { return Dodo$dInternal.Empty; } + return Dodo$dInternal.$Doc("Text", Data$dString$dCodePoints.toCodePointArray($1._1.head).length, $1._1.head); + })() + ); + } + if (prefixSpaces.tag === "Just") { + return Data$dTuple.$Tuple( + true, + Dodo$dInternal.$Doc( + "WithPosition", + pos => { + const newIndent = (() => { + if (prefixSpaces._1 < pos.indent) { return 0; } + return prefixSpaces._1; + })(); + const spaces = power(" ")(newIndent); + return lines([ + (() => { + if ($1._1.head === "") { return Dodo$dInternal.Empty; } + return Dodo$dInternal.$Doc("Text", Data$dString$dCodePoints.toCodePointArray($1._1.head).length, $1._1.head); + })(), + (() => { + const $6 = intercalate(Dodo$dInternal.Break)(Data$dFunctor.arrayMap(str => { + const $7 = Data$dString$dCodeUnits.stripPrefix(spaces)(str); + const $8 = (() => { + if ($7.tag === "Nothing") { return str; } + if ($7.tag === "Just") { return $7._1; } + $runtime.fail(); + })(); + if ($8 === "") { return Dodo$dInternal.Empty; } + return Dodo$dInternal.$Doc("Text", Data$dString$dCodePoints.toCodePointArray($8).length, $8); + })($1._1.tail)); + return Dodo$dInternal.$Doc( + "Local", + options => Data$dTuple.$Tuple( + (() => { + if (newIndent < options.indent) { + return { + indent: newIndent, + indentSpaces: spaces, + indentUnit: options.indentUnit, + indentWidth: options.indentWidth, + pageWidth: options.pageWidth, + ribbonRatio: options.ribbonRatio + }; + } + return options; + })(), + $6 + ) + ); + })() + ]); + } + ) + ); + } + $runtime.fail(); + } + $runtime.fail(); +}; +const forceMinSourceBreaks = n => v => { + if (v.isEmpty) { return v; } + return { + doc: v.doc, + isEmpty: v.isEmpty, + leading: {doc: v.leading.doc, left: v.leading.left, lines: max(v.leading.lines)(n), multiline: v.leading.multiline, right: v.leading.right}, + multiline: v.multiline, + trailing: v.trailing + }; +}; +const force = k => f => m => doc => { + if (f.tag === "ForceBreak") { return Data$dTuple.$Tuple(true, Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break)(doc)); } + return Data$dTuple.$Tuple(m, k(doc)); +}; +const flexGroup = v => { + if (v.multiline) { return v; } + return {doc: Dodo.flexGroup(v.doc), isEmpty: v.isEmpty, leading: v.leading, multiline: v.multiline, trailing: v.trailing}; +}; +const flattenMax = n => v => ( + { + doc: v.doc, + isEmpty: v.isEmpty, + leading: {doc: v.leading.doc, left: v.leading.left, lines: min(v.leading.lines)(n), multiline: v.leading.multiline, right: v.leading.right}, + multiline: v.multiline, + trailing: v.trailing + } +); +const flatten = /* #__PURE__ */ flattenMax(0); +const eqForceBreak = { + eq: x => y => { + if (x.tag === "ForceNone") { return y.tag === "ForceNone"; } + if (x.tag === "ForceSpace") { return y.tag === "ForceSpace"; } + if (x.tag === "ForceBreak") { return y.tag === "ForceBreak"; } + return false; + } +}; +const ordForceBreak = { + compare: x => y => { + if (x.tag === "ForceNone") { + if (y.tag === "ForceNone") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "ForceNone") { return Data$dOrdering.GT; } + if (x.tag === "ForceSpace") { + if (y.tag === "ForceSpace") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "ForceSpace") { return Data$dOrdering.GT; } + if (x.tag === "ForceBreak") { + if (y.tag === "ForceBreak") { return Data$dOrdering.EQ; } + $runtime.fail(); + } + $runtime.fail(); + }, + Eq0: () => eqForceBreak +}; +const max1 = x => y => { + const v = ordForceBreak.compare(x)(y); + if (v.tag === "LT") { return y; } + if (v.tag === "EQ") { return x; } + if (v.tag === "GT") { return x; } + $runtime.fail(); +}; +const breaks = fl => n => { + if (n >= 2) { return Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break)(Dodo$dInternal.Break); } + if (n === 1) { return Dodo$dInternal.Break; } + if (fl.tag === "ForceBreak") { return Dodo$dInternal.Break; } + if (fl.tag === "ForceSpace") { return Dodo$dInternal.$Doc("Text", 1, " "); } + if (fl.tag === "ForceNone") { return Dodo$dInternal.Empty; } + $runtime.fail(); +}; +const breakDoc = br => doc => { + if (doc.tag === "Empty") { return doc; } + if (br.tag === "ForceBreak") { return Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break)(doc); } + if (br.tag === "ForceSpace") { return Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " "))(doc); } + if (br.tag === "ForceNone") { return doc; } + $runtime.fail(); +}; +const flexDoubleBreak = v => v1 => { + if (v.isEmpty) { return v1; } + if (v1.isEmpty) { return v; } + const docLeft = Dodo$dInternal.semigroupDoc.append(v.doc)(breakDoc(v.trailing.left)(v.trailing.doc)); + const docRight = Dodo$dInternal.semigroupDoc.append(v1.leading.doc)(breakDoc(v1.leading.right)(v1.doc)); + if (v1.leading.lines >= 2 || v.multiline) { + return { + doc: Dodo$dInternal.semigroupDoc.append(docLeft)(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break)(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break)(docRight))), + isEmpty: v.isEmpty, + leading: v.leading, + multiline: true, + trailing: v1.trailing + }; + } + return { + doc: Dodo$dInternal.semigroupDoc.append((() => { + if (docLeft.tag === "Empty") { return Dodo$dInternal.Empty; } + return Dodo$dInternal.$Doc("FlexSelect", docLeft, Dodo$dInternal.Empty, Dodo$dInternal.Break); + })())(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break)(docRight)), + isEmpty: v.isEmpty, + leading: v.leading, + multiline: true, + trailing: v1.trailing + }; +}; +const joinDoc = spaceFn => v => v1 => { + if (v.isEmpty) { return v1; } + if (v1.isEmpty) { return v; } + const docLeft = Dodo$dInternal.semigroupDoc.append(v.doc)(breakDoc(v.trailing.left)(v.trailing.doc)); + const docRight = Dodo$dInternal.semigroupDoc.append(v1.leading.doc)(breakDoc(v1.leading.right)(v1.doc)); + if (v1.leading.lines > 0) { + return { + doc: Dodo$dInternal.semigroupDoc.append(docLeft)(Dodo$dInternal.semigroupDoc.append(breaks(ForceBreak)(v1.leading.lines))(docRight)), + isEmpty: v.isEmpty, + leading: v.leading, + multiline: true, + trailing: v1.trailing + }; + } + const v2 = spaceFn(max1(v.trailing.right)(v1.leading.left))(v1.leading.multiline || v1.multiline)(docRight); + return { + doc: Dodo$dInternal.semigroupDoc.append(docLeft)(v2._2), + isEmpty: v.isEmpty, + leading: v.leading, + multiline: v.trailing.multiline || (v.multiline || v2._1), + trailing: v1.trailing + }; +}; +const flexSoftBreak = /* #__PURE__ */ joinDoc(f => m => doc => { + if (f.tag === "ForceBreak") { return Data$dTuple.$Tuple(true, Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break)(doc)); } + if (f.tag === "ForceSpace") { + if (m) { return Data$dTuple.$Tuple(true, Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " "))(doc)); } + return Data$dTuple.$Tuple( + false, + Dodo.flexGroup(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("FlexAlt", Dodo$dInternal.$Doc("Text", 1, " "), Dodo$dInternal.Break))(doc)) + ); + } + if (f.tag === "ForceNone") { + if (m) { return Data$dTuple.$Tuple(true, Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break)(doc)); } + return Data$dTuple.$Tuple(false, Dodo.flexGroup(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("FlexAlt", Dodo$dInternal.Empty, Dodo$dInternal.Break))(doc))); + } + $runtime.fail(); +}); +const flexSoftSpace = /* #__PURE__ */ joinDoc(f => m => doc => { + if (f.tag === "ForceBreak") { return Data$dTuple.$Tuple(true, Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break)(doc)); } + if (f.tag === "ForceSpace") { + if (m) { return Data$dTuple.$Tuple(true, Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " "))(doc)); } + return Data$dTuple.$Tuple(false, Dodo.flexGroup(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " "))(doc))); + } + if (f.tag === "ForceNone") { + if (m) { return Data$dTuple.$Tuple(true, Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("FlexAlt", Dodo$dInternal.Empty, Dodo$dInternal.$Doc("Text", 1, " ")))(doc)); } + return Data$dTuple.$Tuple( + false, + Dodo.flexGroup(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("FlexAlt", Dodo$dInternal.Empty, Dodo$dInternal.$Doc("Text", 1, " ")))(doc)) + ); + } + $runtime.fail(); +}); +const flexSpaceBreak = /* #__PURE__ */ joinDoc(f => m => doc => { + if (f.tag === "ForceBreak") { return Data$dTuple.$Tuple(true, Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break)(doc)); } + if (m) { return Data$dTuple.$Tuple(true, Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("FlexAlt", Dodo$dInternal.$Doc("Text", 1, " "), Dodo$dInternal.Break))(doc)); } + return Data$dTuple.$Tuple( + false, + Dodo.flexGroup(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("FlexAlt", Dodo$dInternal.$Doc("Text", 1, " "), Dodo$dInternal.Break))(doc)) + ); +}); +const semigroupFormatDoc = {append: /* #__PURE__ */ joinDoc(/* #__PURE__ */ force(identity))}; +const softBreak = /* #__PURE__ */ joinDoc(f => m => doc => { + if (f.tag === "ForceBreak") { return Data$dTuple.$Tuple(true, Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break)(doc)); } + if (f.tag === "ForceSpace") { + return Data$dTuple.$Tuple(m, Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("FlexAlt", Dodo$dInternal.$Doc("Text", 1, " "), Dodo$dInternal.Break))(doc)); + } + if (f.tag === "ForceNone") { return Data$dTuple.$Tuple(m, Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("FlexAlt", Dodo$dInternal.Empty, Dodo$dInternal.Break))(doc)); } + $runtime.fail(); +}); +const softSpace = /* #__PURE__ */ joinDoc(f => m => doc => { + if (f.tag === "ForceBreak") { return Data$dTuple.$Tuple(true, Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break)(doc)); } + if (f.tag === "ForceSpace") { return Data$dTuple.$Tuple(m, Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " "))(doc)); } + if (f.tag === "ForceNone") { + return Data$dTuple.$Tuple(m, Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("FlexAlt", Dodo$dInternal.Empty, Dodo$dInternal.$Doc("Text", 1, " ")))(doc)); + } + $runtime.fail(); +}); +const space = /* #__PURE__ */ (() => joinDoc(force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " ")))))(); +const spaceBreak = /* #__PURE__ */ (() => joinDoc(force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("FlexAlt", Dodo$dInternal.$Doc("Text", 1, " "), Dodo$dInternal.Break)))))(); +const toDoc = v => { + if (v.isEmpty) { return Dodo$dInternal.Empty; } + return Dodo$dInternal.semigroupDoc.append(v.leading.doc)(Dodo$dInternal.semigroupDoc.append(breakDoc(v.leading.right)(v.doc))(breakDoc(v.trailing.left)(v.trailing.doc))); +}; +const semigroupLeadingComment = { + append: v => v1 => { + if (v.doc.tag === "Empty") { return {doc: v1.doc, left: max1(v.left)(v1.left), lines: v.lines + v1.lines | 0, multiline: v1.multiline, right: v1.right}; } + if (v1.doc.tag === "Empty") { + return { + doc: Dodo$dInternal.semigroupDoc.append(v.doc)(breaks(ForceNone)(v1.lines)), + left: v.left, + lines: v.lines, + multiline: v.multiline || v1.lines > 0, + right: (() => { + if (v1.lines > 0) { return ForceNone; } + return max1(v.right)(v1.right); + })() + }; + } + const br = max1(v.right)(v1.left); + if (v1.lines > 0 || br.tag === "ForceBreak") { + return { + doc: Dodo$dInternal.semigroupDoc.append(v.doc)(Dodo$dInternal.semigroupDoc.append(breaks(ForceBreak)(v1.lines))(v1.doc)), + left: v.left, + lines: v.lines, + multiline: true, + right: v1.right + }; + } + return {doc: Dodo$dInternal.semigroupDoc.append(v.doc)(breakDoc(br)(v1.doc)), left: v.left, lines: v.lines, multiline: v.multiline || v1.multiline, right: v1.right}; + } +}; +const leadingBlockComment = str => v => { + const v1 = formatBlockComment(str); + return { + doc: v.doc, + isEmpty: false, + leading: semigroupLeadingComment.append({doc: v1._2, left: ForceSpace, lines: 0, multiline: v1._1, right: ForceSpace})(v.leading), + multiline: v.multiline, + trailing: v.trailing + }; +}; +const leadingLineComment = str => v => ( + { + doc: v.doc, + isEmpty: false, + leading: semigroupLeadingComment.append({ + doc: (() => { + if (str === "") { return Dodo$dInternal.Empty; } + return Dodo$dInternal.$Doc("Text", Data$dString$dCodePoints.toCodePointArray(str).length, str); + })(), + left: ForceBreak, + lines: 0, + multiline: false, + right: ForceBreak + })(v.leading), + multiline: v.multiline, + trailing: v.trailing + } +); +const monoidLeadingComment = {mempty: {doc: Dodo$dInternal.Empty, left: ForceNone, lines: 0, multiline: false, right: ForceNone}, Semigroup0: () => semigroupLeadingComment}; +const semigroupTrailingComment = { + append: v => v1 => { + if (v.doc.tag === "Empty") { return {doc: v1.doc, left: max1(v.left)(v1.left), multiline: v1.multiline, right: v1.right}; } + if (v1.doc.tag === "Empty") { return {doc: v.doc, left: v.left, multiline: v.multiline, right: max1(v.right)(v1.right)}; } + return {doc: Dodo$dInternal.semigroupDoc.append(v.doc)(breakDoc(max1(v.right)(v1.left))(v1.doc)), left: v.left, multiline: v.multiline || v1.multiline, right: v1.right}; + } +}; +const trailingBlockComment = str => v => { + const v1 = formatBlockComment(str); + return { + doc: v.doc, + isEmpty: false, + leading: v.leading, + multiline: v.multiline, + trailing: semigroupTrailingComment.append({doc: v1._2, left: ForceSpace, multiline: v1._1, right: ForceSpace})(v.trailing) + }; +}; +const trailingLineComment = str => v => ( + { + doc: v.doc, + isEmpty: false, + leading: v.leading, + multiline: v.multiline, + trailing: semigroupTrailingComment.append({ + doc: (() => { + if (str === "") { return Dodo$dInternal.Empty; } + return Dodo$dInternal.$Doc("Text", Data$dString$dCodePoints.toCodePointArray(str).length, str); + })(), + left: ForceSpace, + multiline: false, + right: ForceBreak + })(v.trailing) + } +); +const monoidTrailingComment = {mempty: {doc: Dodo$dInternal.Empty, left: ForceNone, multiline: false, right: ForceNone}, Semigroup0: () => semigroupTrailingComment}; +const monoidFormatDoc = /* #__PURE__ */ (() => ( + { + mempty: {doc: Dodo$dInternal.Empty, leading: monoidLeadingComment.mempty, isEmpty: true, multiline: false, trailing: monoidTrailingComment.mempty}, + Semigroup0: () => semigroupFormatDoc + } +))(); +const fromDoc = doc => { + if (doc.tag === "Empty") { return monoidFormatDoc.mempty; } + return {doc: doc, leading: monoidLeadingComment.mempty, isEmpty: false, multiline: false, trailing: monoidTrailingComment.mempty}; +}; +const text = x => { + const $1 = (() => { + if (x === "") { return Dodo$dInternal.Empty; } + return Dodo$dInternal.$Doc("Text", Data$dString$dCodePoints.toCodePointArray(x).length, x); + })(); + if ($1.tag === "Empty") { return monoidFormatDoc.mempty; } + return {doc: $1, leading: monoidLeadingComment.mempty, isEmpty: false, multiline: false, trailing: monoidTrailingComment.mempty}; +}; +const joinWithMap = dictFoldable => op => k => dictFoldable.foldl(a => b => { + if (a.isEmpty) { return k(b); } + return op(a)(k(b)); +})(monoidFormatDoc.mempty); +const joinWith = dictFoldable => a => joinWithMap(dictFoldable)(a)(identity); +const $$break = /* #__PURE__ */ (() => joinDoc(force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break))))(); +const anchor = v => { + if (v.leading.lines > 0) { + return { + doc: v.doc, + isEmpty: v.isEmpty, + leading: {doc: v.leading.doc, left: v.leading.left, lines: 0, multiline: v.leading.multiline, right: v.leading.right}, + multiline: true, + trailing: v.trailing + }; + } + return v; +}; +const alignCurrentColumn = v => { + if (v.isEmpty) { return v; } + return { + doc: (() => { + if (v.doc.tag === "Empty") { return Dodo$dInternal.Empty; } + return Dodo$dInternal.$Doc("WithPosition", pos => Dodo.align(pos.column - pos.nextIndent | 0)(v.doc)); + })(), + isEmpty: v.isEmpty, + leading: { + doc: (() => { + if (v.leading.doc.tag === "Empty") { return Dodo$dInternal.Empty; } + return Dodo$dInternal.$Doc("WithPosition", pos => Dodo.align(pos.column - pos.nextIndent | 0)(v.leading.doc)); + })(), + left: v.leading.left, + lines: v.leading.lines, + multiline: v.leading.multiline, + right: v.leading.right + }, + multiline: v.multiline, + trailing: { + doc: (() => { + if (v.trailing.doc.tag === "Empty") { return Dodo$dInternal.Empty; } + return Dodo$dInternal.$Doc("WithPosition", pos => Dodo.align(pos.column - pos.nextIndent | 0)(v.trailing.doc)); + })(), + left: v.trailing.left, + multiline: v.trailing.multiline, + right: v.trailing.right + } + }; +}; +const align = x => v => { + if (v.isEmpty) { return v; } + return { + doc: Dodo.align(x)(v.doc), + isEmpty: v.isEmpty, + leading: {doc: Dodo.align(x)(v.leading.doc), left: v.leading.left, lines: v.leading.lines, multiline: v.leading.multiline, right: v.leading.right}, + multiline: v.multiline, + trailing: {doc: Dodo.align(x)(v.trailing.doc), left: v.trailing.left, multiline: v.trailing.multiline, right: v.trailing.right} + }; +}; +export { + $ForceBreak, + ForceBreak, + ForceNone, + ForceSpace, + FormatDoc, + LeadingComment, + TrailingComment, + align, + alignCurrentColumn, + anchor, + $$break as break, + breakDoc, + breaks, + eqForceBreak, + flatten, + flattenMax, + flexDoubleBreak, + flexGroup, + flexSoftBreak, + flexSoftSpace, + flexSpaceBreak, + force, + forceMinSourceBreaks, + formatBlockComment, + fromDoc, + guard, + identity, + indent, + intercalate, + joinDoc, + joinWith, + joinWithMap, + leadingBlockComment, + leadingLineComment, + lines, + locally, + mapDoc, + max, + max1, + min, + monoidFormatDoc, + monoidLeadingComment, + monoidTrailingComment, + ordForceBreak, + power, + semigroupFormatDoc, + semigroupLeadingComment, + semigroupTrailingComment, + softBreak, + softSpace, + sourceBreak, + space, + spaceBreak, + text, + toDoc, + trailingBlockComment, + trailingLineComment +}; diff --git a/.storybook/purescript-indexer/output-es/Tidy.Hang/index.js b/.storybook/purescript-indexer/output-es/Tidy.Hang/index.js new file mode 100644 index 0000000..5eab8a2 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Tidy.Hang/index.js @@ -0,0 +1,844 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dArray from "../Data.Array/index.js"; +import * as Data$dFoldable from "../Data.Foldable/index.js"; +import * as Data$dSemigroup from "../Data.Semigroup/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +import * as Dodo$dInternal from "../Dodo.Internal/index.js"; +import * as Tidy$dDoc from "../Tidy.Doc/index.js"; +const $HangingDoc = (tag, _1, _2, _3) => ({tag, _1, _2, _3}); +const $HangingOp = (_1, _2, _3) => ({tag: "HangingOp", _1, _2, _3}); +const max = x => y => { + const v = Tidy$dDoc.ordForceBreak.compare(x)(y); + if (v.tag === "LT") { return y; } + if (v.tag === "EQ") { return x; } + if (v.tag === "GT") { return x; } + $runtime.fail(); +}; +const identity = x => x; +const HangBreak = value0 => $HangingDoc("HangBreak", value0); +const HangOps = value0 => value1 => value2 => $HangingDoc("HangOps", value0, value1, value2); +const HangApp = value0 => value1 => value2 => $HangingDoc("HangApp", value0, value1, value2); +const HangingOp = value0 => value1 => value2 => $HangingOp(value0, value1, value2); +const overHangHead = f => { + const go = v => { + if (v.tag === "HangBreak") { return $HangingDoc("HangBreak", f(v._1)); } + if (v.tag === "HangOps") { return $HangingDoc("HangOps", v._1, go(v._2), v._3); } + if (v.tag === "HangApp") { return $HangingDoc("HangApp", v._1, go(v._2), v._3); } + $runtime.fail(); + }; + return go; +}; +const hangWithIndent = ind => a => { + const $2 = HangApp(ind)(a); + return x => { + if (x.length > 0) { return $2(x); } + return a; + }; +}; +const hangOps = /* #__PURE__ */ HangOps(Tidy$dDoc.indent); +const hangHead = hangHead$a0$copy => { + let hangHead$a0 = hangHead$a0$copy, hangHead$c = true, hangHead$r; + while (hangHead$c) { + const v = hangHead$a0; + if (v.tag === "HangBreak") { + hangHead$c = false; + hangHead$r = v._1; + continue; + } + if (v.tag === "HangOps") { + hangHead$a0 = v._2; + continue; + } + if (v.tag === "HangApp") { + hangHead$a0 = v._2; + continue; + } + $runtime.fail(); + }; + return hangHead$r; +}; +const hangConcatApp = a => b => { + if (a.tag === "HangApp") { return $HangingDoc("HangApp", a._1, a._2, Data$dSemigroup.concatArray(a._3)(b)); } + return $HangingDoc("HangApp", Tidy$dDoc.indent, a, b); +}; +const hangBreak = x => $HangingDoc("HangBreak", Tidy$dDoc.flexGroup(x)); +const hangApp = /* #__PURE__ */ HangApp(Tidy$dDoc.indent); +const hang = a => { + const $1 = HangApp(Tidy$dDoc.indent)($HangingDoc("HangBreak", Tidy$dDoc.flexGroup(a))); + return x => $1([x]); +}; +const breaks = fl => n => { + if (fl.tag === "ForceBreak" || n > 0) { + if (n >= 2) { return Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break)(Dodo$dInternal.Break); } + return Dodo$dInternal.Break; + } + if (fl.tag === "ForceSpace") { return Dodo$dInternal.$Doc("Text", 1, " "); } + return Dodo$dInternal.Empty; +}; +const toFormatDoc = /* #__PURE__ */ (() => { + const realignOp = realignOp$a0$copy => realignOp$a1$copy => { + let realignOp$a0 = realignOp$a0$copy, realignOp$a1 = realignOp$a1$copy, realignOp$c = true, realignOp$r; + while (realignOp$c) { + const op = realignOp$a0, doc = realignOp$a1; + const v = hangHead(doc); + if ( + (op.leading.left.tag === "ForceNone" || (op.leading.left.tag === "ForceSpace" || !(op.leading.left.tag === "ForceBreak"))) && ( + op.leading.lines === 0 && ( + (op.trailing.right.tag === "ForceNone" || (op.trailing.right.tag === "ForceSpace" || !(op.trailing.right.tag === "ForceBreak"))) && ( + (v.leading.left.tag === "ForceNone" || (v.leading.left.tag === "ForceSpace" || !(v.leading.left.tag === "ForceBreak"))) && v.leading.lines > 0 + ) + ) + ) + ) { + realignOp$a0 = Tidy$dDoc.forceMinSourceBreaks(1)(op); + realignOp$a1 = overHangHead(Tidy$dDoc.flattenMax(0))(doc); + continue; + } + if (doc.tag === "HangBreak") { + if ( + (op.trailing.right.tag === "ForceNone" || (op.trailing.right.tag === "ForceSpace" || !(op.trailing.right.tag === "ForceBreak"))) && ( + (v.leading.left.tag === "ForceNone" || (v.leading.left.tag === "ForceSpace" || !(v.leading.left.tag === "ForceBreak"))) && ( + v.leading.lines === 0 && (v.leading.multiline || op.multiline) + ) + ) + ) { + realignOp$c = false; + realignOp$r = Data$dTuple.$Tuple(op, overHangHead(Tidy$dDoc.forceMinSourceBreaks(1))(doc)); + continue; + } + realignOp$c = false; + realignOp$r = Data$dTuple.$Tuple(op, doc); + continue; + } + realignOp$c = false; + realignOp$r = Data$dTuple.$Tuple(op, doc); + continue; + }; + return realignOp$r; + }; + const goLastOperand = prevAlgn => prevInd => v => { + if (v.tag === "HangBreak") { + const doc$p = Tidy$dDoc.flexGroup((() => { + if (v._1.isEmpty) { return v._1; } + if ( + (() => { + if (v._1.leading.left.tag === "ForceNone") { return false; } + if (v._1.leading.left.tag === "ForceSpace") { return false; } + return v._1.leading.left.tag === "ForceBreak"; + })() || v._1.leading.lines > 0 + ) { + return v._1; + } + if (v._1.leading.multiline || v._1.multiline) { return Tidy$dDoc.forceMinSourceBreaks(1)(v._1); } + return { + doc: Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("FlexAlt", Dodo$dInternal.$Doc("Text", 1, " "), Dodo$dInternal.Break))(Dodo$dInternal.semigroupDoc.append(v._1.leading.doc)(Tidy$dDoc.breakDoc(v._1.leading.right)(v._1.doc))), + isEmpty: v._1.isEmpty, + leading: Tidy$dDoc.monoidLeadingComment.mempty, + multiline: v._1.multiline, + trailing: v._1.trailing + }; + })()); + return Data$dTuple.$Tuple(doc$p, prevInd(doc$p)); + } + if (v.tag === "HangApp") { + const $5 = Data$dArray.unsnoc(v._3); + const v1 = (() => { + if ($5.tag === "Just") { return $5._1; } + $runtime.fail(); + })(); + const $$this = goInit((() => { + if (v._2.tag === "HangApp") { return overHangHead(Tidy$dDoc.forceMinSourceBreaks(1))(v._2); } + return v._2; + })())._1; + const next = Data$dFoldable.foldrArray(goInitApp)(goLastApp(v1.last))(v1.init); + const docIndent = (() => { + if (v._2.tag === "HangApp") { return next._1; } + return v._1(next._1); + })(); + return Data$dTuple.$Tuple( + (() => { + const doc1$p = Dodo$dInternal.semigroupDoc.append((() => { + if ( + (() => { + if ($$this.leading.left.tag === "ForceNone") { return false; } + if ($$this.leading.left.tag === "ForceSpace") { return false; } + return $$this.leading.left.tag === "ForceBreak"; + })() || $$this.leading.lines > 0 + ) { + return Dodo$dInternal.Break; + } + return Dodo$dInternal.$Doc("FlexAlt", Dodo$dInternal.$Doc("Text", 1, " "), Dodo$dInternal.Break); + })())(Dodo$dInternal.semigroupDoc.append($$this.leading.doc)(Dodo$dInternal.semigroupDoc.append(Tidy$dDoc.breakDoc($$this.leading.right)($$this.doc))(Tidy$dDoc.breakDoc($$this.trailing.left)($$this.trailing.doc)))); + const doc2$p = Dodo$dInternal.semigroupDoc.append(breaks(max($$this.trailing.right)(next._1.leading.left))(next._1.leading.lines))(Dodo$dInternal.semigroupDoc.append(next._1.leading.doc)(Dodo$dInternal.semigroupDoc.append(Tidy$dDoc.breakDoc(next._1.leading.right)(next._1.doc))(Tidy$dDoc.breakDoc(next._1.trailing.left)(next._1.trailing.doc)))); + return { + doc: (() => { + const $12 = Dodo$dInternal.semigroupDoc.append(breaks(max($$this.trailing.right)(docIndent.leading.left))(docIndent.leading.lines))(Dodo$dInternal.semigroupDoc.append(docIndent.leading.doc)(Dodo$dInternal.semigroupDoc.append(Tidy$dDoc.breakDoc(next._1.leading.right)(docIndent.doc))(Tidy$dDoc.breakDoc(docIndent.trailing.left)(docIndent.trailing.doc)))); + if (doc1$p.tag === "Empty") { return doc2$p; } + return Dodo$dInternal.$Doc("FlexSelect", doc1$p, doc2$p, $12); + })(), + leading: Tidy$dDoc.monoidLeadingComment.mempty, + isEmpty: false, + multiline: $$this.leading.multiline || ($$this.multiline || $$this.trailing.multiline) || ( + next._1.leading.multiline || (next._1.multiline || next._1.trailing.multiline) + ) && (docIndent.leading.multiline || (docIndent.multiline || docIndent.trailing.multiline)), + trailing: {doc: Dodo$dInternal.Empty, left: Tidy$dDoc.ForceNone, multiline: false, right: max(next._1.trailing.right)(docIndent.trailing.right)} + }; + })(), + (() => { + const $10 = prevInd($$this); + const $11 = prevAlgn(docIndent); + const $12 = prevInd(docIndent); + const doc1$p = Dodo$dInternal.semigroupDoc.append((() => { + if ( + (() => { + if ($10.leading.left.tag === "ForceNone") { return false; } + if ($10.leading.left.tag === "ForceSpace") { return false; } + return $10.leading.left.tag === "ForceBreak"; + })() || $10.leading.lines > 0 + ) { + return Dodo$dInternal.Break; + } + return Dodo$dInternal.$Doc("FlexAlt", Dodo$dInternal.$Doc("Text", 1, " "), Dodo$dInternal.Break); + })())(Dodo$dInternal.semigroupDoc.append($10.leading.doc)(Dodo$dInternal.semigroupDoc.append(Tidy$dDoc.breakDoc($10.leading.right)($10.doc))(Tidy$dDoc.breakDoc($10.trailing.left)($10.trailing.doc)))); + const doc2$p = Dodo$dInternal.semigroupDoc.append(breaks(max($10.trailing.right)($11.leading.left))($11.leading.lines))(Dodo$dInternal.semigroupDoc.append($11.leading.doc)(Dodo$dInternal.semigroupDoc.append(Tidy$dDoc.breakDoc($11.leading.right)($11.doc))(Tidy$dDoc.breakDoc($11.trailing.left)($11.trailing.doc)))); + return { + doc: (() => { + const $15 = Dodo$dInternal.semigroupDoc.append(breaks(max($10.trailing.right)($12.leading.left))($12.leading.lines))(Dodo$dInternal.semigroupDoc.append($12.leading.doc)(Dodo$dInternal.semigroupDoc.append(Tidy$dDoc.breakDoc($11.leading.right)($12.doc))(Tidy$dDoc.breakDoc($12.trailing.left)($12.trailing.doc)))); + if (doc1$p.tag === "Empty") { return doc2$p; } + return Dodo$dInternal.$Doc("FlexSelect", doc1$p, doc2$p, $15); + })(), + leading: Tidy$dDoc.monoidLeadingComment.mempty, + isEmpty: false, + multiline: $10.leading.multiline || ($10.multiline || $10.trailing.multiline) || ($11.leading.multiline || ($11.multiline || $11.trailing.multiline)) && ( + $12.leading.multiline || ($12.multiline || $12.trailing.multiline) + ), + trailing: {doc: Dodo$dInternal.Empty, left: Tidy$dDoc.ForceNone, multiline: false, right: max($11.trailing.right)($12.trailing.right)} + }; + })() + ); + } + if (v.tag === "HangOps") { + const $5 = Data$dArray.unsnoc(v._3); + const v1 = (() => { + if ($5.tag === "Just") { return $5._1; } + $runtime.fail(); + })(); + const $$this = goInit(v._2)._1; + const next = Data$dFoldable.foldrArray(goInitOp(v._1))(goLastOp(v._1)(v1.last))(v1.init); + const docIndent = v._1(next._1); + return Data$dTuple.$Tuple( + (() => { + const doc1$p = Dodo$dInternal.semigroupDoc.append((() => { + if ( + (() => { + if ($$this.leading.left.tag === "ForceNone") { return false; } + if ($$this.leading.left.tag === "ForceSpace") { return false; } + return $$this.leading.left.tag === "ForceBreak"; + })() || $$this.leading.lines > 0 + ) { + return Dodo$dInternal.Break; + } + return Dodo$dInternal.$Doc("FlexAlt", Dodo$dInternal.$Doc("Text", 1, " "), Dodo$dInternal.Break); + })())(Dodo$dInternal.semigroupDoc.append($$this.leading.doc)(Dodo$dInternal.semigroupDoc.append(Tidy$dDoc.breakDoc($$this.leading.right)($$this.doc))(Tidy$dDoc.breakDoc($$this.trailing.left)($$this.trailing.doc)))); + const doc2$p = Dodo$dInternal.semigroupDoc.append(breaks(max($$this.trailing.right)(next._1.leading.left))(next._1.leading.lines))(Dodo$dInternal.semigroupDoc.append(next._1.leading.doc)(Dodo$dInternal.semigroupDoc.append(Tidy$dDoc.breakDoc(next._1.leading.right)(next._1.doc))(Tidy$dDoc.breakDoc(next._1.trailing.left)(next._1.trailing.doc)))); + return { + doc: (() => { + const $12 = Dodo$dInternal.semigroupDoc.append(breaks(max($$this.trailing.right)(docIndent.leading.left))(docIndent.leading.lines))(Dodo$dInternal.semigroupDoc.append(docIndent.leading.doc)(Dodo$dInternal.semigroupDoc.append(Tidy$dDoc.breakDoc(next._1.leading.right)(docIndent.doc))(Tidy$dDoc.breakDoc(docIndent.trailing.left)(docIndent.trailing.doc)))); + if (doc1$p.tag === "Empty") { return doc2$p; } + return Dodo$dInternal.$Doc("FlexSelect", doc1$p, doc2$p, $12); + })(), + leading: Tidy$dDoc.monoidLeadingComment.mempty, + isEmpty: false, + multiline: $$this.leading.multiline || ($$this.multiline || $$this.trailing.multiline) || ( + next._1.leading.multiline || (next._1.multiline || next._1.trailing.multiline) + ) && (docIndent.leading.multiline || (docIndent.multiline || docIndent.trailing.multiline)), + trailing: {doc: Dodo$dInternal.Empty, left: Tidy$dDoc.ForceNone, multiline: false, right: max(next._1.trailing.right)(docIndent.trailing.right)} + }; + })(), + (() => { + const $10 = prevInd($$this); + const $11 = prevAlgn(docIndent); + const $12 = prevInd(docIndent); + const doc1$p = Dodo$dInternal.semigroupDoc.append((() => { + if ( + (() => { + if ($10.leading.left.tag === "ForceNone") { return false; } + if ($10.leading.left.tag === "ForceSpace") { return false; } + return $10.leading.left.tag === "ForceBreak"; + })() || $10.leading.lines > 0 + ) { + return Dodo$dInternal.Break; + } + return Dodo$dInternal.$Doc("FlexAlt", Dodo$dInternal.$Doc("Text", 1, " "), Dodo$dInternal.Break); + })())(Dodo$dInternal.semigroupDoc.append($10.leading.doc)(Dodo$dInternal.semigroupDoc.append(Tidy$dDoc.breakDoc($10.leading.right)($10.doc))(Tidy$dDoc.breakDoc($10.trailing.left)($10.trailing.doc)))); + const doc2$p = Dodo$dInternal.semigroupDoc.append(breaks(max($10.trailing.right)($11.leading.left))($11.leading.lines))(Dodo$dInternal.semigroupDoc.append($11.leading.doc)(Dodo$dInternal.semigroupDoc.append(Tidy$dDoc.breakDoc($11.leading.right)($11.doc))(Tidy$dDoc.breakDoc($11.trailing.left)($11.trailing.doc)))); + return { + doc: (() => { + const $15 = Dodo$dInternal.semigroupDoc.append(breaks(max($10.trailing.right)($12.leading.left))($12.leading.lines))(Dodo$dInternal.semigroupDoc.append($12.leading.doc)(Dodo$dInternal.semigroupDoc.append(Tidy$dDoc.breakDoc($11.leading.right)($12.doc))(Tidy$dDoc.breakDoc($12.trailing.left)($12.trailing.doc)))); + if (doc1$p.tag === "Empty") { return doc2$p; } + return Dodo$dInternal.$Doc("FlexSelect", doc1$p, doc2$p, $15); + })(), + leading: Tidy$dDoc.monoidLeadingComment.mempty, + isEmpty: false, + multiline: $10.leading.multiline || ($10.multiline || $10.trailing.multiline) || ($11.leading.multiline || ($11.multiline || $11.trailing.multiline)) && ( + $12.leading.multiline || ($12.multiline || $12.trailing.multiline) + ), + trailing: {doc: Dodo$dInternal.Empty, left: Tidy$dDoc.ForceNone, multiline: false, right: max($11.trailing.right)($12.trailing.right)} + }; + })() + ); + } + $runtime.fail(); + }; + const goLastOp = ind => v => { + const next = goLastOperand((() => { + if (v._1 <= 1) { return Tidy$dDoc.align(2); } + return identity; + })())(ind)(v._3); + return Data$dTuple.$Tuple( + (() => { + const doc1$p = Dodo$dInternal.semigroupDoc.append((() => { + if ( + (() => { + if (v._2.leading.left.tag === "ForceNone") { return false; } + if (v._2.leading.left.tag === "ForceSpace") { return false; } + return v._2.leading.left.tag === "ForceBreak"; + })() || v._2.leading.lines > 0 + ) { + return Dodo$dInternal.Break; + } + return Dodo$dInternal.$Doc("FlexAlt", Dodo$dInternal.$Doc("Text", 1, " "), Dodo$dInternal.Break); + })())(Dodo$dInternal.semigroupDoc.append(v._2.leading.doc)(Dodo$dInternal.semigroupDoc.append(Tidy$dDoc.breakDoc(v._2.leading.right)(v._2.doc))(Tidy$dDoc.breakDoc(v._2.trailing.left)(v._2.trailing.doc)))); + const doc2$p = Dodo$dInternal.semigroupDoc.append(breaks(max(v._2.trailing.right)(next._1.leading.left))(next._1.leading.lines))(Dodo$dInternal.semigroupDoc.append(next._1.leading.doc)(Dodo$dInternal.semigroupDoc.append(Tidy$dDoc.breakDoc(next._1.leading.right)(next._1.doc))(Tidy$dDoc.breakDoc(next._1.trailing.left)(next._1.trailing.doc)))); + return { + doc: (() => { + const $7 = Dodo$dInternal.semigroupDoc.append(breaks(max(v._2.trailing.right)(next._2.leading.left))(next._2.leading.lines))(Dodo$dInternal.semigroupDoc.append(next._2.leading.doc)(Dodo$dInternal.semigroupDoc.append(Tidy$dDoc.breakDoc(next._1.leading.right)(next._2.doc))(Tidy$dDoc.breakDoc(next._2.trailing.left)(next._2.trailing.doc)))); + if (doc1$p.tag === "Empty") { return doc2$p; } + return Dodo$dInternal.$Doc("FlexSelect", doc1$p, doc2$p, $7); + })(), + leading: Tidy$dDoc.monoidLeadingComment.mempty, + isEmpty: false, + multiline: v._2.leading.multiline || (v._2.multiline || v._2.trailing.multiline) || (next._1.leading.multiline || (next._1.multiline || next._1.trailing.multiline)) && ( + next._2.leading.multiline || (next._2.multiline || next._2.trailing.multiline) + ), + trailing: {doc: Dodo$dInternal.Empty, left: Tidy$dDoc.ForceNone, multiline: false, right: max(next._1.trailing.right)(next._2.trailing.right)} + }; + })(), + Tidy$dDoc.joinDoc(Tidy$dDoc.force(Tidy$dDoc.identity))((() => { + if (v._2.isEmpty) { return v._2; } + if ( + (() => { + if (v._2.leading.left.tag === "ForceNone") { return false; } + if (v._2.leading.left.tag === "ForceSpace") { return false; } + return v._2.leading.left.tag === "ForceBreak"; + })() || v._2.leading.lines > 0 + ) { + return v._2; + } + if (v._2.leading.multiline || v._2.multiline) { return Tidy$dDoc.forceMinSourceBreaks(1)(v._2); } + return { + doc: Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("FlexAlt", Dodo$dInternal.$Doc("Text", 1, " "), Dodo$dInternal.Break))(Dodo$dInternal.semigroupDoc.append(v._2.leading.doc)(Tidy$dDoc.breakDoc(v._2.leading.right)(v._2.doc))), + isEmpty: v._2.isEmpty, + leading: Tidy$dDoc.monoidLeadingComment.mempty, + multiline: v._2.multiline, + trailing: v._2.trailing + }; + })())(next._2) + ); + }; + const goLastApp = doc => { + const $$this = goLast(doc); + return Data$dTuple.$Tuple(Tidy$dDoc.flexGroup($$this._1), $$this._2); + }; + const goLast = v => { + if (v.tag === "HangBreak") { + const doc$p = (() => { + if (v._1.isEmpty) { return v._1; } + if ( + (() => { + if (v._1.leading.left.tag === "ForceNone") { return false; } + if (v._1.leading.left.tag === "ForceSpace") { return false; } + return v._1.leading.left.tag === "ForceBreak"; + })() || v._1.leading.lines > 0 + ) { + return v._1; + } + if (v._1.leading.multiline || v._1.multiline) { return Tidy$dDoc.forceMinSourceBreaks(1)(v._1); } + return { + doc: Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("FlexAlt", Dodo$dInternal.$Doc("Text", 1, " "), Dodo$dInternal.Break))(Dodo$dInternal.semigroupDoc.append(v._1.leading.doc)(Tidy$dDoc.breakDoc(v._1.leading.right)(v._1.doc))), + isEmpty: v._1.isEmpty, + leading: Tidy$dDoc.monoidLeadingComment.mempty, + multiline: v._1.multiline, + trailing: v._1.trailing + }; + })(); + return Data$dTuple.$Tuple(doc$p, doc$p); + } + if (v.tag === "HangApp") { + const $3 = Data$dArray.unsnoc(v._3); + const v1 = (() => { + if ($3.tag === "Just") { return $3._1; } + $runtime.fail(); + })(); + const $$this = goInit(v._2)._1; + const next = Data$dFoldable.foldrArray(goInitApp)(goLastApp(v1.last))(v1.init); + return Data$dTuple.$Tuple( + (() => { + const $7 = (() => { + if (v._2.tag === "HangApp") { return next._1; } + return v._1(next._1); + })(); + const doc1$p = Dodo$dInternal.semigroupDoc.append((() => { + if ( + (() => { + if ($$this.leading.left.tag === "ForceNone") { return false; } + if ($$this.leading.left.tag === "ForceSpace") { return false; } + return $$this.leading.left.tag === "ForceBreak"; + })() || $$this.leading.lines > 0 + ) { + return Dodo$dInternal.Break; + } + return Dodo$dInternal.$Doc("FlexAlt", Dodo$dInternal.$Doc("Text", 1, " "), Dodo$dInternal.Break); + })())(Dodo$dInternal.semigroupDoc.append($$this.leading.doc)(Dodo$dInternal.semigroupDoc.append(Tidy$dDoc.breakDoc($$this.leading.right)($$this.doc))(Tidy$dDoc.breakDoc($$this.trailing.left)($$this.trailing.doc)))); + const doc2$p = Dodo$dInternal.semigroupDoc.append(breaks(max($$this.trailing.right)(next._1.leading.left))(next._1.leading.lines))(Dodo$dInternal.semigroupDoc.append(next._1.leading.doc)(Dodo$dInternal.semigroupDoc.append(Tidy$dDoc.breakDoc(next._1.leading.right)(next._1.doc))(Tidy$dDoc.breakDoc(next._1.trailing.left)(next._1.trailing.doc)))); + return { + doc: (() => { + const $10 = Dodo$dInternal.semigroupDoc.append(breaks(max($$this.trailing.right)($7.leading.left))($7.leading.lines))(Dodo$dInternal.semigroupDoc.append($7.leading.doc)(Dodo$dInternal.semigroupDoc.append(Tidy$dDoc.breakDoc(next._1.leading.right)($7.doc))(Tidy$dDoc.breakDoc($7.trailing.left)($7.trailing.doc)))); + if (doc1$p.tag === "Empty") { return doc2$p; } + return Dodo$dInternal.$Doc("FlexSelect", doc1$p, doc2$p, $10); + })(), + leading: Tidy$dDoc.monoidLeadingComment.mempty, + isEmpty: false, + multiline: $$this.leading.multiline || ($$this.multiline || $$this.trailing.multiline) || ( + next._1.leading.multiline || (next._1.multiline || next._1.trailing.multiline) + ) && ($7.leading.multiline || ($7.multiline || $7.trailing.multiline)), + trailing: {doc: Dodo$dInternal.Empty, left: Tidy$dDoc.ForceNone, multiline: false, right: max(next._1.trailing.right)($7.trailing.right)} + }; + })(), + Tidy$dDoc.joinDoc(Tidy$dDoc.force(Tidy$dDoc.identity))((() => { + if ($$this.isEmpty) { return $$this; } + if ( + (() => { + if ($$this.leading.left.tag === "ForceNone") { return false; } + if ($$this.leading.left.tag === "ForceSpace") { return false; } + return $$this.leading.left.tag === "ForceBreak"; + })() || $$this.leading.lines > 0 + ) { + return $$this; + } + if ($$this.leading.multiline || $$this.multiline) { return Tidy$dDoc.forceMinSourceBreaks(1)($$this); } + return { + doc: Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("FlexAlt", Dodo$dInternal.$Doc("Text", 1, " "), Dodo$dInternal.Break))(Dodo$dInternal.semigroupDoc.append($$this.leading.doc)(Tidy$dDoc.breakDoc($$this.leading.right)($$this.doc))), + isEmpty: $$this.isEmpty, + leading: Tidy$dDoc.monoidLeadingComment.mempty, + multiline: $$this.multiline, + trailing: $$this.trailing + }; + })())((() => { + if (v._2.tag === "HangApp") { return next._1; } + return v._1(next._1); + })()) + ); + } + if (v.tag === "HangOps") { + const $3 = Data$dArray.unsnoc(v._3); + const v1 = (() => { + if ($3.tag === "Just") { return $3._1; } + $runtime.fail(); + })(); + const $$this = goInit(v._2)._1; + const next = Data$dFoldable.foldrArray(goInitOp(v._1))(goLastOp(v._1)(v1.last))(v1.init); + return Data$dTuple.$Tuple( + (() => { + const $7 = v._1(next._1); + const doc1$p = Dodo$dInternal.semigroupDoc.append((() => { + if ( + (() => { + if ($$this.leading.left.tag === "ForceNone") { return false; } + if ($$this.leading.left.tag === "ForceSpace") { return false; } + return $$this.leading.left.tag === "ForceBreak"; + })() || $$this.leading.lines > 0 + ) { + return Dodo$dInternal.Break; + } + return Dodo$dInternal.$Doc("FlexAlt", Dodo$dInternal.$Doc("Text", 1, " "), Dodo$dInternal.Break); + })())(Dodo$dInternal.semigroupDoc.append($$this.leading.doc)(Dodo$dInternal.semigroupDoc.append(Tidy$dDoc.breakDoc($$this.leading.right)($$this.doc))(Tidy$dDoc.breakDoc($$this.trailing.left)($$this.trailing.doc)))); + const doc2$p = Dodo$dInternal.semigroupDoc.append(breaks(max($$this.trailing.right)(next._1.leading.left))(next._1.leading.lines))(Dodo$dInternal.semigroupDoc.append(next._1.leading.doc)(Dodo$dInternal.semigroupDoc.append(Tidy$dDoc.breakDoc(next._1.leading.right)(next._1.doc))(Tidy$dDoc.breakDoc(next._1.trailing.left)(next._1.trailing.doc)))); + return { + doc: (() => { + const $10 = Dodo$dInternal.semigroupDoc.append(breaks(max($$this.trailing.right)($7.leading.left))($7.leading.lines))(Dodo$dInternal.semigroupDoc.append($7.leading.doc)(Dodo$dInternal.semigroupDoc.append(Tidy$dDoc.breakDoc(next._1.leading.right)($7.doc))(Tidy$dDoc.breakDoc($7.trailing.left)($7.trailing.doc)))); + if (doc1$p.tag === "Empty") { return doc2$p; } + return Dodo$dInternal.$Doc("FlexSelect", doc1$p, doc2$p, $10); + })(), + leading: Tidy$dDoc.monoidLeadingComment.mempty, + isEmpty: false, + multiline: $$this.leading.multiline || ($$this.multiline || $$this.trailing.multiline) || ( + next._1.leading.multiline || (next._1.multiline || next._1.trailing.multiline) + ) && ($7.leading.multiline || ($7.multiline || $7.trailing.multiline)), + trailing: {doc: Dodo$dInternal.Empty, left: Tidy$dDoc.ForceNone, multiline: false, right: max(next._1.trailing.right)($7.trailing.right)} + }; + })(), + Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break)))((() => { + if ($$this.isEmpty) { return $$this; } + if ( + (() => { + if ($$this.leading.left.tag === "ForceNone") { return false; } + if ($$this.leading.left.tag === "ForceSpace") { return false; } + return $$this.leading.left.tag === "ForceBreak"; + })() || $$this.leading.lines > 0 + ) { + return $$this; + } + if ($$this.leading.multiline || $$this.multiline) { return Tidy$dDoc.forceMinSourceBreaks(1)($$this); } + return { + doc: Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("FlexAlt", Dodo$dInternal.$Doc("Text", 1, " "), Dodo$dInternal.Break))(Dodo$dInternal.semigroupDoc.append($$this.leading.doc)(Tidy$dDoc.breakDoc($$this.leading.right)($$this.doc))), + isEmpty: $$this.isEmpty, + leading: Tidy$dDoc.monoidLeadingComment.mempty, + multiline: $$this.multiline, + trailing: $$this.trailing + }; + })())(v._1(next._2)) + ); + } + $runtime.fail(); + }; + const goInitOperand = prevAlgn => prevInd => v => { + if (v.tag === "HangBreak") { + const doc$p = prevInd(Tidy$dDoc.flexGroup((() => { + if (v._1.isEmpty) { return v._1; } + if ( + (() => { + if (v._1.leading.left.tag === "ForceNone") { return false; } + if (v._1.leading.left.tag === "ForceSpace") { return false; } + return v._1.leading.left.tag === "ForceBreak"; + })() || v._1.leading.lines > 0 + ) { + return v._1; + } + if (v._1.leading.multiline || v._1.multiline) { return Tidy$dDoc.forceMinSourceBreaks(1)(v._1); } + return { + doc: Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("FlexAlt", Dodo$dInternal.$Doc("Text", 1, " "), Dodo$dInternal.Break))(Dodo$dInternal.semigroupDoc.append(v._1.leading.doc)(Tidy$dDoc.breakDoc(v._1.leading.right)(v._1.doc))), + isEmpty: v._1.isEmpty, + leading: Tidy$dDoc.monoidLeadingComment.mempty, + multiline: v._1.multiline, + trailing: v._1.trailing + }; + })())); + return Data$dTuple.$Tuple(doc$p, doc$p); + } + if (v.tag === "HangApp") { + const $5 = Data$dArray.unsnoc(v._3); + const v1 = (() => { + if ($5.tag === "Just") { return $5._1; } + $runtime.fail(); + })(); + const $$this = goInit(v._2)._1; + const next = Data$dFoldable.foldrArray(goInitApp)(goLastApp(v1.last))(v1.init); + return Data$dTuple.$Tuple( + (() => { + const $9 = prevInd($$this); + const $10 = (() => { + if (v._2.tag === "HangApp") { return next._1; } + return prevAlgn(v._1(next._1)); + })(); + const $11 = prevInd((() => { + if (v._2.tag === "HangApp") { return next._1; } + return v._1(next._1); + })()); + const doc1$p = Dodo$dInternal.semigroupDoc.append((() => { + if ( + (() => { + if ($9.leading.left.tag === "ForceNone") { return false; } + if ($9.leading.left.tag === "ForceSpace") { return false; } + return $9.leading.left.tag === "ForceBreak"; + })() || $9.leading.lines > 0 + ) { + return Dodo$dInternal.Break; + } + return Dodo$dInternal.$Doc("FlexAlt", Dodo$dInternal.$Doc("Text", 1, " "), Dodo$dInternal.Break); + })())(Dodo$dInternal.semigroupDoc.append($9.leading.doc)(Dodo$dInternal.semigroupDoc.append(Tidy$dDoc.breakDoc($9.leading.right)($9.doc))(Tidy$dDoc.breakDoc($9.trailing.left)($9.trailing.doc)))); + const doc2$p = Dodo$dInternal.semigroupDoc.append(breaks(max($9.trailing.right)($10.leading.left))($10.leading.lines))(Dodo$dInternal.semigroupDoc.append($10.leading.doc)(Dodo$dInternal.semigroupDoc.append(Tidy$dDoc.breakDoc($10.leading.right)($10.doc))(Tidy$dDoc.breakDoc($10.trailing.left)($10.trailing.doc)))); + return { + doc: (() => { + const $14 = Dodo$dInternal.semigroupDoc.append(breaks(max($9.trailing.right)($11.leading.left))($11.leading.lines))(Dodo$dInternal.semigroupDoc.append($11.leading.doc)(Dodo$dInternal.semigroupDoc.append(Tidy$dDoc.breakDoc($10.leading.right)($11.doc))(Tidy$dDoc.breakDoc($11.trailing.left)($11.trailing.doc)))); + if (doc1$p.tag === "Empty") { return doc2$p; } + return Dodo$dInternal.$Doc("FlexSelect", doc1$p, doc2$p, $14); + })(), + leading: Tidy$dDoc.monoidLeadingComment.mempty, + isEmpty: false, + multiline: $9.leading.multiline || ($9.multiline || $9.trailing.multiline) || ($10.leading.multiline || ($10.multiline || $10.trailing.multiline)) && ( + $11.leading.multiline || ($11.multiline || $11.trailing.multiline) + ), + trailing: {doc: Dodo$dInternal.Empty, left: Tidy$dDoc.ForceNone, multiline: false, right: max($10.trailing.right)($11.trailing.right)} + }; + })(), + prevInd(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Tidy$dDoc.identity))((() => { + if ($$this.isEmpty) { return $$this; } + if ( + (() => { + if ($$this.leading.left.tag === "ForceNone") { return false; } + if ($$this.leading.left.tag === "ForceSpace") { return false; } + return $$this.leading.left.tag === "ForceBreak"; + })() || $$this.leading.lines > 0 + ) { + return $$this; + } + if ($$this.leading.multiline || $$this.multiline) { return Tidy$dDoc.forceMinSourceBreaks(1)($$this); } + return { + doc: Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("FlexAlt", Dodo$dInternal.$Doc("Text", 1, " "), Dodo$dInternal.Break))(Dodo$dInternal.semigroupDoc.append($$this.leading.doc)(Tidy$dDoc.breakDoc($$this.leading.right)($$this.doc))), + isEmpty: $$this.isEmpty, + leading: Tidy$dDoc.monoidLeadingComment.mempty, + multiline: $$this.multiline, + trailing: $$this.trailing + }; + })())(v._1(next._2))) + ); + } + if (v.tag === "HangOps") { + const $5 = Data$dArray.unsnoc(v._3); + const v1 = (() => { + if ($5.tag === "Just") { return $5._1; } + $runtime.fail(); + })(); + const $$this = goInit(v._2)._1; + const next = Data$dFoldable.foldrArray(goInitOp(v._1))(goLastOp(v._1)(v1.last))(v1.init); + return Data$dTuple.$Tuple( + (() => { + const $9 = prevInd($$this); + const $10 = prevAlgn(v._1(next._1)); + const $11 = prevInd(v._1(next._1)); + const doc1$p = Dodo$dInternal.semigroupDoc.append((() => { + if ( + (() => { + if ($9.leading.left.tag === "ForceNone") { return false; } + if ($9.leading.left.tag === "ForceSpace") { return false; } + return $9.leading.left.tag === "ForceBreak"; + })() || $9.leading.lines > 0 + ) { + return Dodo$dInternal.Break; + } + return Dodo$dInternal.$Doc("FlexAlt", Dodo$dInternal.$Doc("Text", 1, " "), Dodo$dInternal.Break); + })())(Dodo$dInternal.semigroupDoc.append($9.leading.doc)(Dodo$dInternal.semigroupDoc.append(Tidy$dDoc.breakDoc($9.leading.right)($9.doc))(Tidy$dDoc.breakDoc($9.trailing.left)($9.trailing.doc)))); + const doc2$p = Dodo$dInternal.semigroupDoc.append(breaks(max($9.trailing.right)($10.leading.left))($10.leading.lines))(Dodo$dInternal.semigroupDoc.append($10.leading.doc)(Dodo$dInternal.semigroupDoc.append(Tidy$dDoc.breakDoc($10.leading.right)($10.doc))(Tidy$dDoc.breakDoc($10.trailing.left)($10.trailing.doc)))); + return { + doc: (() => { + const $14 = Dodo$dInternal.semigroupDoc.append(breaks(max($9.trailing.right)($11.leading.left))($11.leading.lines))(Dodo$dInternal.semigroupDoc.append($11.leading.doc)(Dodo$dInternal.semigroupDoc.append(Tidy$dDoc.breakDoc($10.leading.right)($11.doc))(Tidy$dDoc.breakDoc($11.trailing.left)($11.trailing.doc)))); + if (doc1$p.tag === "Empty") { return doc2$p; } + return Dodo$dInternal.$Doc("FlexSelect", doc1$p, doc2$p, $14); + })(), + leading: Tidy$dDoc.monoidLeadingComment.mempty, + isEmpty: false, + multiline: $9.leading.multiline || ($9.multiline || $9.trailing.multiline) || ($10.leading.multiline || ($10.multiline || $10.trailing.multiline)) && ( + $11.leading.multiline || ($11.multiline || $11.trailing.multiline) + ), + trailing: {doc: Dodo$dInternal.Empty, left: Tidy$dDoc.ForceNone, multiline: false, right: max($10.trailing.right)($11.trailing.right)} + }; + })(), + prevInd(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Tidy$dDoc.identity))((() => { + if ($$this.isEmpty) { return $$this; } + if ( + (() => { + if ($$this.leading.left.tag === "ForceNone") { return false; } + if ($$this.leading.left.tag === "ForceSpace") { return false; } + return $$this.leading.left.tag === "ForceBreak"; + })() || $$this.leading.lines > 0 + ) { + return $$this; + } + if ($$this.leading.multiline || $$this.multiline) { return Tidy$dDoc.forceMinSourceBreaks(1)($$this); } + return { + doc: Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("FlexAlt", Dodo$dInternal.$Doc("Text", 1, " "), Dodo$dInternal.Break))(Dodo$dInternal.semigroupDoc.append($$this.leading.doc)(Tidy$dDoc.breakDoc($$this.leading.right)($$this.doc))), + isEmpty: $$this.isEmpty, + leading: Tidy$dDoc.monoidLeadingComment.mempty, + multiline: $$this.multiline, + trailing: $$this.trailing + }; + })())(v._1(next._2))) + ); + } + $runtime.fail(); + }; + const goInitOp = ind => v => next => { + const v1 = realignOp(v._2)(v._3); + const docOprd = goInitOperand((() => { + if (v._1 <= 1) { return Tidy$dDoc.align(2); } + return identity; + })())(ind)(v1._2)._1; + return Data$dTuple.$Tuple( + (() => { + const $7 = Tidy$dDoc.joinDoc(Tidy$dDoc.force(Tidy$dDoc.identity))(v1._1)(docOprd); + const doc1$p = Dodo$dInternal.semigroupDoc.append((() => { + if ( + (() => { + if ($7.leading.left.tag === "ForceNone") { return false; } + if ($7.leading.left.tag === "ForceSpace") { return false; } + return $7.leading.left.tag === "ForceBreak"; + })() || $7.leading.lines > 0 + ) { + return Dodo$dInternal.Break; + } + return Dodo$dInternal.$Doc("FlexAlt", Dodo$dInternal.$Doc("Text", 1, " "), Dodo$dInternal.Break); + })())(Dodo$dInternal.semigroupDoc.append($7.leading.doc)(Dodo$dInternal.semigroupDoc.append(Tidy$dDoc.breakDoc($7.leading.right)($7.doc))(Tidy$dDoc.breakDoc($7.trailing.left)($7.trailing.doc)))); + const doc2$p = Dodo$dInternal.semigroupDoc.append(breaks(max($7.trailing.right)(next._1.leading.left))(next._1.leading.lines))(Dodo$dInternal.semigroupDoc.append(next._1.leading.doc)(Dodo$dInternal.semigroupDoc.append(Tidy$dDoc.breakDoc(next._1.leading.right)(next._1.doc))(Tidy$dDoc.breakDoc(next._1.trailing.left)(next._1.trailing.doc)))); + return { + doc: (() => { + const $10 = Dodo$dInternal.semigroupDoc.append(breaks(max($7.trailing.right)(next._2.leading.left))(next._2.leading.lines))(Dodo$dInternal.semigroupDoc.append(next._2.leading.doc)(Dodo$dInternal.semigroupDoc.append(Tidy$dDoc.breakDoc(next._1.leading.right)(next._2.doc))(Tidy$dDoc.breakDoc(next._2.trailing.left)(next._2.trailing.doc)))); + if (doc1$p.tag === "Empty") { return doc2$p; } + return Dodo$dInternal.$Doc("FlexSelect", doc1$p, doc2$p, $10); + })(), + leading: Tidy$dDoc.monoidLeadingComment.mempty, + isEmpty: false, + multiline: $7.leading.multiline || ($7.multiline || $7.trailing.multiline) || (next._1.leading.multiline || (next._1.multiline || next._1.trailing.multiline)) && ( + next._2.leading.multiline || (next._2.multiline || next._2.trailing.multiline) + ), + trailing: {doc: Dodo$dInternal.Empty, left: Tidy$dDoc.ForceNone, multiline: false, right: max(next._1.trailing.right)(next._2.trailing.right)} + }; + })(), + Tidy$dDoc.joinDoc(Tidy$dDoc.force(Tidy$dDoc.identity))((() => { + if (v1._1.isEmpty) { return v1._1; } + if ( + (() => { + if (v1._1.leading.left.tag === "ForceNone") { return false; } + if (v1._1.leading.left.tag === "ForceSpace") { return false; } + return v1._1.leading.left.tag === "ForceBreak"; + })() || v1._1.leading.lines > 0 + ) { + return v1._1; + } + if (v1._1.leading.multiline || v1._1.multiline) { return Tidy$dDoc.forceMinSourceBreaks(1)(v1._1); } + return { + doc: Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("FlexAlt", Dodo$dInternal.$Doc("Text", 1, " "), Dodo$dInternal.Break))(Dodo$dInternal.semigroupDoc.append(v1._1.leading.doc)(Tidy$dDoc.breakDoc(v1._1.leading.right)(v1._1.doc))), + isEmpty: v1._1.isEmpty, + leading: Tidy$dDoc.monoidLeadingComment.mempty, + multiline: v1._1.multiline, + trailing: v1._1.trailing + }; + })())(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Tidy$dDoc.identity))(docOprd)(next._2)) + ); + }; + const goInitApp = doc => next => { + const $$this = goInit(doc)._1; + return Data$dTuple.$Tuple( + (() => { + const doc1$p = Dodo$dInternal.semigroupDoc.append((() => { + if ( + (() => { + if ($$this.leading.left.tag === "ForceNone") { return false; } + if ($$this.leading.left.tag === "ForceSpace") { return false; } + return $$this.leading.left.tag === "ForceBreak"; + })() || $$this.leading.lines > 0 + ) { + return Dodo$dInternal.Break; + } + return Dodo$dInternal.$Doc("FlexAlt", Dodo$dInternal.$Doc("Text", 1, " "), Dodo$dInternal.Break); + })())(Dodo$dInternal.semigroupDoc.append($$this.leading.doc)(Dodo$dInternal.semigroupDoc.append(Tidy$dDoc.breakDoc($$this.leading.right)($$this.doc))(Tidy$dDoc.breakDoc($$this.trailing.left)($$this.trailing.doc)))); + const doc2$p = Dodo$dInternal.semigroupDoc.append(breaks(max($$this.trailing.right)(next._1.leading.left))(next._1.leading.lines))(Dodo$dInternal.semigroupDoc.append(next._1.leading.doc)(Dodo$dInternal.semigroupDoc.append(Tidy$dDoc.breakDoc(next._1.leading.right)(next._1.doc))(Tidy$dDoc.breakDoc(next._1.trailing.left)(next._1.trailing.doc)))); + return { + doc: (() => { + const $7 = Dodo$dInternal.semigroupDoc.append(breaks(max($$this.trailing.right)(next._2.leading.left))(next._2.leading.lines))(Dodo$dInternal.semigroupDoc.append(next._2.leading.doc)(Dodo$dInternal.semigroupDoc.append(Tidy$dDoc.breakDoc(next._1.leading.right)(next._2.doc))(Tidy$dDoc.breakDoc(next._2.trailing.left)(next._2.trailing.doc)))); + if (doc1$p.tag === "Empty") { return doc2$p; } + return Dodo$dInternal.$Doc("FlexSelect", doc1$p, doc2$p, $7); + })(), + leading: Tidy$dDoc.monoidLeadingComment.mempty, + isEmpty: false, + multiline: $$this.leading.multiline || ($$this.multiline || $$this.trailing.multiline) || (next._1.leading.multiline || (next._1.multiline || next._1.trailing.multiline)) && ( + next._2.leading.multiline || (next._2.multiline || next._2.trailing.multiline) + ), + trailing: {doc: Dodo$dInternal.Empty, left: Tidy$dDoc.ForceNone, multiline: false, right: max(next._1.trailing.right)(next._2.trailing.right)} + }; + })(), + Tidy$dDoc.joinDoc(Tidy$dDoc.force(Tidy$dDoc.identity))((() => { + if ($$this.isEmpty) { return $$this; } + if ( + (() => { + if ($$this.leading.left.tag === "ForceNone") { return false; } + if ($$this.leading.left.tag === "ForceSpace") { return false; } + return $$this.leading.left.tag === "ForceBreak"; + })() || $$this.leading.lines > 0 + ) { + return $$this; + } + if ($$this.leading.multiline || $$this.multiline) { return Tidy$dDoc.forceMinSourceBreaks(1)($$this); } + return { + doc: Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("FlexAlt", Dodo$dInternal.$Doc("Text", 1, " "), Dodo$dInternal.Break))(Dodo$dInternal.semigroupDoc.append($$this.leading.doc)(Tidy$dDoc.breakDoc($$this.leading.right)($$this.doc))), + isEmpty: $$this.isEmpty, + leading: Tidy$dDoc.monoidLeadingComment.mempty, + multiline: $$this.multiline, + trailing: $$this.trailing + }; + })())(next._2) + ); + }; + const goInit = v => { + if (v.tag === "HangBreak") { return Data$dTuple.$Tuple(v._1, v._1); } + if (v.tag === "HangApp") { + const $3 = Data$dArray.unsnoc(v._3); + const v1 = (() => { + if ($3.tag === "Just") { return $3._1; } + $runtime.fail(); + })(); + const $$this = goInit(v._2)._1; + const next = Data$dFoldable.foldrArray(goInitApp)(goLastApp(v1.last))(v1.init); + return Data$dTuple.$Tuple( + (() => { + const $7 = v._1(next._1); + const $8 = (() => { + if (v._2.tag === "HangApp") { return next._1; } + return v._1(next._1); + })(); + const doc1$p = Dodo$dInternal.semigroupDoc.append($$this.doc)(Tidy$dDoc.breakDoc($$this.trailing.left)($$this.trailing.doc)); + const doc2$p = Dodo$dInternal.semigroupDoc.append(breaks(max($$this.trailing.right)($7.leading.left))($7.leading.lines))(Dodo$dInternal.semigroupDoc.append($7.leading.doc)(Dodo$dInternal.semigroupDoc.append(Tidy$dDoc.breakDoc($7.leading.right)($7.doc))(Tidy$dDoc.breakDoc($7.trailing.left)($7.trailing.doc)))); + return { + doc: (() => { + const $11 = Dodo$dInternal.semigroupDoc.append(breaks(max($$this.trailing.right)($8.leading.left))($8.leading.lines))(Dodo$dInternal.semigroupDoc.append($8.leading.doc)(Dodo$dInternal.semigroupDoc.append(Tidy$dDoc.breakDoc($7.leading.right)($8.doc))(Tidy$dDoc.breakDoc($8.trailing.left)($8.trailing.doc)))); + if (doc1$p.tag === "Empty") { return doc2$p; } + return Dodo$dInternal.$Doc("FlexSelect", doc1$p, doc2$p, $11); + })(), + leading: $$this.leading, + isEmpty: false, + multiline: $$this.multiline || $$this.trailing.multiline || ($7.leading.multiline || ($7.multiline || $7.trailing.multiline)) && ( + $8.leading.multiline || ($8.multiline || $8.trailing.multiline) + ), + trailing: {doc: Dodo$dInternal.Empty, left: Tidy$dDoc.ForceNone, multiline: false, right: max($7.trailing.right)($8.trailing.right)} + }; + })(), + Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break)))($$this)(v._1(next._2)) + ); + } + if (v.tag === "HangOps") { + const $3 = Data$dArray.unsnoc(v._3); + const v1 = (() => { + if ($3.tag === "Just") { return $3._1; } + $runtime.fail(); + })(); + const $$this = goInit(v._2)._1; + const next = Data$dFoldable.foldrArray(goInitOp(v._1))(goLastOp(v._1)(v1.last))(v1.init); + return Data$dTuple.$Tuple( + Tidy$dDoc.joinDoc(Tidy$dDoc.force(Tidy$dDoc.identity))(Tidy$dDoc.flexGroup($$this))(v._1(next._1)), + Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break)))($$this)(v._1(next._2)) + ); + } + $runtime.fail(); + }; + return x => goInit(x)._1; +})(); +export { + $HangingDoc, + $HangingOp, + HangApp, + HangBreak, + HangOps, + HangingOp, + breaks, + hang, + hangApp, + hangBreak, + hangConcatApp, + hangHead, + hangOps, + hangWithIndent, + identity, + max, + overHangHead, + toFormatDoc +}; diff --git a/.storybook/purescript-indexer/output-es/Tidy.Operators.Defaults/index.js b/.storybook/purescript-indexer/output-es/Tidy.Operators.Defaults/index.js new file mode 100644 index 0000000..6918e87 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Tidy.Operators.Defaults/index.js @@ -0,0 +1,357 @@ +//------------------------------------------ +// This module is generated. DO NOT EDIT! -- +//------------------------------------------ +import * as $runtime from "../runtime.js"; +const defaultOperators = [ + "Control.Alt.($>) 4", + "Control.Alt.(<#>) 1", + "Control.Alt.(<$) 4", + "Control.Alt.(<$>) 4", + "Control.Alt.(<@>) 4", + "Control.Alt.(<|>) 3", + "Control.Alternative.($>) 4", + "Control.Alternative.(*>) 4", + "Control.Alternative.(<#>) 1", + "Control.Alternative.(<$) 4", + "Control.Alternative.(<$>) 4", + "Control.Alternative.(<*) 4", + "Control.Alternative.(<*>) 4", + "Control.Alternative.(<@>) 4", + "Control.Alternative.(<|>) 3", + "Control.Applicative.($>) 4", + "Control.Applicative.(*>) 4", + "Control.Applicative.(<#>) 1", + "Control.Applicative.(<$) 4", + "Control.Applicative.(<$>) 4", + "Control.Applicative.(<*) 4", + "Control.Applicative.(<*>) 4", + "Control.Applicative.(<@>) 4", + "Control.Apply.($>) 4", + "Control.Apply.(*>) 4", + "Control.Apply.(<#>) 1", + "Control.Apply.(<$) 4", + "Control.Apply.(<$>) 4", + "Control.Apply.(<*) 4", + "Control.Apply.(<*>) 4", + "Control.Apply.(<@>) 4", + "Control.Biapply.(*>>) 4", + "Control.Biapply.(<<$>>) 4", + "Control.Biapply.(<<*) 4", + "Control.Biapply.(<<*>>) 4", + "Control.Bind.($>) 4", + "Control.Bind.(*>) 4", + "Control.Bind.(<#>) 1", + "Control.Bind.(<$) 4", + "Control.Bind.(<$>) 4", + "Control.Bind.(<*) 4", + "Control.Bind.(<*>) 4", + "Control.Bind.(<=<) 1", + "Control.Bind.(<@>) 4", + "Control.Bind.(=<<) 1", + "Control.Bind.(>=>) 1", + "Control.Bind.(>>=) 1", + "Control.Category.(<<<) 9", + "Control.Category.(>>>) 9", + "Control.Comonad.($>) 4", + "Control.Comonad.(<#>) 1", + "Control.Comonad.(<$) 4", + "Control.Comonad.(<$>) 4", + "Control.Comonad.(<<=) 1", + "Control.Comonad.(<@>) 4", + "Control.Comonad.(=<=) 1", + "Control.Comonad.(=>=) 1", + "Control.Comonad.(=>>) 1", + "Control.Comonad.Cofree.(:<) 5", + "Control.Coroutine.($$) 2", + "Control.Coroutine.($~) 2", + "Control.Coroutine.(/\\) 3", + "Control.Coroutine.(\\/) 3", + "Control.Coroutine.(~$) 2", + "Control.Coroutine.(~~) 2", + "Control.Extend.($>) 4", + "Control.Extend.(<#>) 1", + "Control.Extend.(<$) 4", + "Control.Extend.(<$>) 4", + "Control.Extend.(<<=) 1", + "Control.Extend.(<@>) 4", + "Control.Extend.(=<=) 1", + "Control.Extend.(=>=) 1", + "Control.Extend.(=>>) 1", + "Control.Monad.($>) 4", + "Control.Monad.(*>) 4", + "Control.Monad.(<#>) 1", + "Control.Monad.(<$) 4", + "Control.Monad.(<$>) 4", + "Control.Monad.(<*) 4", + "Control.Monad.(<*>) 4", + "Control.Monad.(<=<) 1", + "Control.Monad.(<@>) 4", + "Control.Monad.(=<<) 1", + "Control.Monad.(>=>) 1", + "Control.Monad.(>>=) 1", + "Control.MonadPlus.($>) 4", + "Control.MonadPlus.(*>) 4", + "Control.MonadPlus.(<#>) 1", + "Control.MonadPlus.(<$) 4", + "Control.MonadPlus.(<$>) 4", + "Control.MonadPlus.(<*) 4", + "Control.MonadPlus.(<*>) 4", + "Control.MonadPlus.(<=<) 1", + "Control.MonadPlus.(<@>) 4", + "Control.MonadPlus.(<|>) 3", + "Control.MonadPlus.(=<<) 1", + "Control.MonadPlus.(>=>) 1", + "Control.MonadPlus.(>>=) 1", + "Control.Plus.($>) 4", + "Control.Plus.(<#>) 1", + "Control.Plus.(<$) 4", + "Control.Plus.(<$>) 4", + "Control.Plus.(<@>) 4", + "Control.Plus.(<|>) 3", + "Control.Semigroupoid.(<<<) 9", + "Control.Semigroupoid.(>>>) 9", + "Data.Argonaut.(.!=) 6", + "Data.Argonaut.(.:) 7", + "Data.Argonaut.(.:!) 7", + "Data.Argonaut.(.:?) 7", + "Data.Argonaut.(:=) 7", + "Data.Argonaut.(:=?) 7", + "Data.Argonaut.(~>) 6", + "Data.Argonaut.(~>?) 6", + "Data.Argonaut.Decode.(.!=) 6", + "Data.Argonaut.Decode.(.:) 7", + "Data.Argonaut.Decode.(.:!) 7", + "Data.Argonaut.Decode.(.:?) 7", + "Data.Argonaut.Decode.Combinators.(.!=) 6", + "Data.Argonaut.Decode.Combinators.(.:) 7", + "Data.Argonaut.Decode.Combinators.(.:!) 7", + "Data.Argonaut.Decode.Combinators.(.:?) 7", + "Data.Argonaut.Encode.(:=) 7", + "Data.Argonaut.Encode.(:=?) 7", + "Data.Argonaut.Encode.(~>) 6", + "Data.Argonaut.Encode.(~>?) 6", + "Data.Argonaut.Encode.Combinators.(:=) 7", + "Data.Argonaut.Encode.Combinators.(:=?) 7", + "Data.Argonaut.Encode.Combinators.(~>) 6", + "Data.Argonaut.Encode.Combinators.(~>?) 6", + "Data.Array.(!!) 8", + "Data.Array.(..) 8", + "Data.Array.(:) 6", + "Data.Array.(\\\\) 5", + "Data.Array.NonEmpty.(!!) 8", + "Data.Array.NonEmpty.(..) 8", + "Data.Array.NonEmpty.(:) 6", + "Data.Array.NonEmpty.(\\\\) 5", + "Data.BooleanAlgebra.(&&) 3", + "Data.BooleanAlgebra.(||) 2", + "Data.Bounded.(<) 4", + "Data.Bounded.(<=) 4", + "Data.Bounded.(>) 4", + "Data.Bounded.(>=) 4", + "Data.CommutativeRing.(*) 7", + "Data.CommutativeRing.(+) 6", + "Data.CommutativeRing.(-) 6", + "Data.DivisionRing.(*) 7", + "Data.DivisionRing.(+) 6", + "Data.DivisionRing.(-) 6", + "Data.Either.Nested.(\\/) type 6", + "Data.Either.Nested.(\\/) 6", + "Data.Eq.(/=) 4", + "Data.Eq.(==) 4", + "Data.EuclideanRing.(*) 7", + "Data.EuclideanRing.(+) 6", + "Data.EuclideanRing.(-) 6", + "Data.EuclideanRing.(/) 7", + "Data.Field.(*) 7", + "Data.Field.(+) 6", + "Data.Field.(-) 6", + "Data.Field.(/) 7", + "Data.Function.(#) 1", + "Data.Function.($) 0", + "Data.Function.(<<<) 9", + "Data.Function.(>>>) 9", + "Data.Functor.($>) 4", + "Data.Functor.(<#>) 1", + "Data.Functor.(<$) 4", + "Data.Functor.(<$>) 4", + "Data.Functor.(<@>) 4", + "Data.Functor.Contravariant.(>#<) 4", + "Data.Functor.Contravariant.(>$<) 4", + "Data.Functor.Coproduct.Nested.(<\\/>) type 6", + "Data.Functor.Coproduct.Nested.(<\\/>) 6", + "Data.Functor.Product.Nested.() type 6", + "Data.Functor.Product.Nested.() 6", + "Data.HeytingAlgebra.(&&) 3", + "Data.HeytingAlgebra.(||) 2", + "Data.HugeNum.(^) 8", + "Data.Int.Bits.(.&.) 10", + "Data.Int.Bits.(.^.) 10", + "Data.Int.Bits.(.|.) 10", + "Data.Lens.(%=) 4", + "Data.Lens.(%~) 4", + "Data.Lens.(&&&) 3", + "Data.Lens.(&&=) 4", + "Data.Lens.(&&~) 4", + "Data.Lens.(***) 3", + "Data.Lens.(*=) 4", + "Data.Lens.(*~) 4", + "Data.Lens.(+++) 2", + "Data.Lens.(+=) 4", + "Data.Lens.(+~) 4", + "Data.Lens.(-=) 4", + "Data.Lens.(-~) 4", + "Data.Lens.(.=) 4", + "Data.Lens.(.~) 4", + "Data.Lens.(//=) 4", + "Data.Lens.(//~) 4", + "Data.Lens.(<>=) 4", + "Data.Lens.(<>~) 4", + "Data.Lens.(?=) 4", + "Data.Lens.(?~) 4", + "Data.Lens.(^.) 8", + "Data.Lens.(^..) 8", + "Data.Lens.(^?) 8", + "Data.Lens.(||=) 4", + "Data.Lens.(|||) 2", + "Data.Lens.(||~) 4", + "Data.Lens.Common.(&&&) 3", + "Data.Lens.Common.(***) 3", + "Data.Lens.Common.(+++) 2", + "Data.Lens.Common.(|||) 2", + "Data.Lens.Fold.(^..) 8", + "Data.Lens.Fold.(^?) 8", + "Data.Lens.Fold.Partial.(^?!) 8", + "Data.Lens.Fold.Partial.(^@?!) 8", + "Data.Lens.Getter.(^.) 8", + "Data.Lens.Lens.Tuple.(&&&) 3", + "Data.Lens.Lens.Tuple.(***) 3", + "Data.Lens.Prism.Either.(+++) 2", + "Data.Lens.Prism.Either.(|||) 2", + "Data.Lens.Setter.(%=) 4", + "Data.Lens.Setter.(%~) 4", + "Data.Lens.Setter.(&&=) 4", + "Data.Lens.Setter.(&&~) 4", + "Data.Lens.Setter.(*=) 4", + "Data.Lens.Setter.(*~) 4", + "Data.Lens.Setter.(+=) 4", + "Data.Lens.Setter.(+~) 4", + "Data.Lens.Setter.(-=) 4", + "Data.Lens.Setter.(-~) 4", + "Data.Lens.Setter.(.=) 4", + "Data.Lens.Setter.(.~) 4", + "Data.Lens.Setter.(//=) 4", + "Data.Lens.Setter.(//~) 4", + "Data.Lens.Setter.(<>=) 4", + "Data.Lens.Setter.(<>~) 4", + "Data.Lens.Setter.(?=) 4", + "Data.Lens.Setter.(?~) 4", + "Data.Lens.Setter.(||=) 4", + "Data.Lens.Setter.(||~) 4", + "Data.List.(!!) 8", + "Data.List.(..) 8", + "Data.List.(:) 6", + "Data.List.(\\\\) 5", + "Data.List.Lazy.(!!) 8", + "Data.List.Lazy.(..) 8", + "Data.List.Lazy.(:) 6", + "Data.List.Lazy.(\\\\) 5", + "Data.List.Lazy.NonEmpty.(:) 6", + "Data.List.Lazy.Types.(:) 6", + "Data.List.NonEmpty.(!!) 8", + "Data.List.NonEmpty.(:) 6", + "Data.List.Types.(:) 6", + "Data.Monoid.(<>) 5", + "Data.NaturalTransformation.(~>) type 4", + "Data.NonEmpty.(:|) 5", + "Data.Number.(%) 7", + "Data.Number.Approximate.(~=) 4", + "Data.Number.Approximate.(≅) 4", + "Data.Number.Approximate.(≇) 4", + "Data.Options.(:=) 6", + "Data.Ord.(<) 4", + "Data.Ord.(<=) 4", + "Data.Ord.(>) 4", + "Data.Ord.(>=) 4", + "Data.Profunctor.Choice.(+++) 2", + "Data.Profunctor.Choice.(|||) 2", + "Data.Profunctor.Strong.(&&&) 3", + "Data.Profunctor.Strong.(***) 3", + "Data.Ring.(*) 7", + "Data.Ring.(+) 6", + "Data.Ring.(-) 6", + "Data.Semigroup.(<>) 5", + "Data.Semiring.(*) 7", + "Data.Semiring.(+) 6", + "Data.Tuple.Nested.(/\\) type 6", + "Data.Tuple.Nested.(/\\) 6", + "Foreign.Index.(!) 9", + "Parsing.Combinators.(!!) 8", + "Parsing.Combinators.($>) 4", + "Parsing.Combinators.(..) 8", + "Parsing.Combinators.(:) 6", + "Parsing.Combinators.(<#>) 1", + "Parsing.Combinators.(<$) 4", + "Parsing.Combinators.(<$>) 4", + "Parsing.Combinators.() 4", + "Parsing.Combinators.() 3", + "Parsing.Combinators.(<@>) 4", + "Parsing.Combinators.(<|>) 3", + "Parsing.Combinators.(<~?>) 4", + "Parsing.Combinators.(\\\\) 5", + "Parsing.Indent.(<*/>) 11", + "Parsing.Indent.(<+/>) 9", + "Parsing.Indent.(<-/>) 10", + "Parsing.Indent.() 12", + "Pathy.(<..>) 6", + "Pathy.(<.>) 6", + "Pathy.() 6", + "Pathy.Path.(<..>) 6", + "Pathy.Path.(<.>) 6", + "Pathy.Path.() 6", + "Prelude.(~>) type 4", + "Prelude.(#) 1", + "Prelude.($) 0", + "Prelude.($>) 4", + "Prelude.(&&) 3", + "Prelude.(*) 7", + "Prelude.(*>) 4", + "Prelude.(+) 6", + "Prelude.(-) 6", + "Prelude.(/) 7", + "Prelude.(/=) 4", + "Prelude.(<) 4", + "Prelude.(<#>) 1", + "Prelude.(<$) 4", + "Prelude.(<$>) 4", + "Prelude.(<*) 4", + "Prelude.(<*>) 4", + "Prelude.(<<<) 9", + "Prelude.(<=) 4", + "Prelude.(<=<) 1", + "Prelude.(<>) 5", + "Prelude.(<@>) 4", + "Prelude.(=<<) 1", + "Prelude.(==) 4", + "Prelude.(>) 4", + "Prelude.(>=) 4", + "Prelude.(>=>) 1", + "Prelude.(>>=) 1", + "Prelude.(>>>) 9", + "Prelude.(||) 2", + "StringParser.() 4", + "StringParser.Combinators.() 4", + "Test.QuickCheck.(/==) 2", + "Test.QuickCheck.(/=?) 2", + "Test.QuickCheck.(<=?) 2", + "Test.QuickCheck.() 2", + "Test.QuickCheck.(===) 2", + "Test.QuickCheck.(==?) 2", + "Test.QuickCheck.(>=?) 2", + "Test.QuickCheck.(>?) 2", + "Type.Function.(#) type 1", + "Type.Function.($) type 0", + "Type.Prelude.(+) type 0", + "Type.Row.(+) type 0" +]; +export {defaultOperators}; diff --git a/.storybook/purescript-indexer/output-es/Tidy.Operators/index.js b/.storybook/purescript-indexer/output-es/Tidy.Operators/index.js new file mode 100644 index 0000000..09684bb --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Tidy.Operators/index.js @@ -0,0 +1,147 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dST$dInternal from "../Control.Monad.ST.Internal/index.js"; +import * as Data$dArray from "../Data.Array/index.js"; +import * as Data$dArray$dST from "../Data.Array.ST/index.js"; +import * as Data$dEither from "../Data.Either/index.js"; +import * as Data$dFoldable from "../Data.Foldable/index.js"; +import * as Data$dFunctor from "../Data.Functor/index.js"; +import * as Data$dLazy from "../Data.Lazy/index.js"; +import * as Data$dMap$dInternal from "../Data.Map.Internal/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dOrd from "../Data.Ord/index.js"; +import * as Data$dSemigroup from "../Data.Semigroup/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +import * as PureScript$dCST$dLexer from "../PureScript.CST.Lexer/index.js"; +import * as Tidy$dPrecedence from "../Tidy.Precedence/index.js"; +const ordMaybe = /* #__PURE__ */ Data$dMaybe.ordMaybe(Data$dOrd.ordString); +const union = /* #__PURE__ */ Data$dMap$dInternal.union(/* #__PURE__ */ Data$dTuple.ordTuple(Tidy$dPrecedence.ordOperatorNamespace)(Data$dOrd.ordString)); +const resolveOperatorExports = precMap => v => { + const remappedPrecMap = Tidy$dPrecedence.remapOperators(precMap)(v); + if (v.header.exports.tag === "Nothing") { + return Data$dFoldable.foldlArray(pm => v1 => { + if (v1.tag === "DeclFixity") { + if (v1._1.operator.tag === "FixityValue") { + return Tidy$dPrecedence.insertOperator(Tidy$dPrecedence.$QualifiedOperator( + Data$dMaybe.$Maybe("Just", v.header.name.name), + Tidy$dPrecedence.OperatorValue, + v1._1.operator._3.name + ))(v1._1.prec._2)(pm); + } + if (v1._1.operator.tag === "FixityType") { + return Tidy$dPrecedence.insertOperator(Tidy$dPrecedence.$QualifiedOperator( + Data$dMaybe.$Maybe("Just", v.header.name.name), + Tidy$dPrecedence.OperatorType, + v1._1.operator._4.name + ))(v1._1.prec._2)(pm); + } + $runtime.fail(); + } + return pm; + })(precMap)(v.body.decls); + } + if (v.header.exports.tag === "Just") { + return Data$dFoldable.foldlArray(pm => x => { + if (x.tag === "ExportOp") { + const $5 = Tidy$dPrecedence.lookupOperator(Tidy$dPrecedence.$QualifiedOperator(Data$dMaybe.Nothing, Tidy$dPrecedence.OperatorValue, x._1.name))(remappedPrecMap); + if ($5.tag === "Just") { + return Tidy$dPrecedence.insertOperator(Tidy$dPrecedence.$QualifiedOperator(Data$dMaybe.$Maybe("Just", v.header.name.name), Tidy$dPrecedence.OperatorValue, x._1.name))($5._1)(pm); + } + if ($5.tag === "Nothing") { return pm; } + $runtime.fail(); + } + if (x.tag === "ExportTypeOp") { + const $5 = Tidy$dPrecedence.lookupOperator(Tidy$dPrecedence.$QualifiedOperator(Data$dMaybe.Nothing, Tidy$dPrecedence.OperatorType, x._2.name))(remappedPrecMap); + if ($5.tag === "Just") { + return Tidy$dPrecedence.insertOperator(Tidy$dPrecedence.$QualifiedOperator(Data$dMaybe.$Maybe("Just", v.header.name.name), Tidy$dPrecedence.OperatorType, x._2.name))($5._1)(pm); + } + if ($5.tag === "Nothing") { return pm; } + $runtime.fail(); + } + if (x.tag === "ExportModule") { + const $5 = Data$dMap$dInternal.lookup(ordMaybe)(Data$dMaybe.$Maybe("Just", x._2.name))(remappedPrecMap); + if ($5.tag === "Just") { return Data$dMap$dInternal.insertWith(ordMaybe)(union)(Data$dMaybe.$Maybe("Just", v.header.name.name))($5._1)(pm); } + if ($5.tag === "Nothing") { return pm; } + $runtime.fail(); + } + return pm; + })(precMap)(Data$dSemigroup.concatArray([v.header.exports._1.value.head])(Data$dFunctor.arrayMap(Data$dTuple.snd)(v.header.exports._1.value.tail))); + } + $runtime.fail(); +}; +const parseOperatorPrec = /* #__PURE__ */ (() => { + const $0 = (() => { + 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 acc = go$a0, x = go$a1; + const $3 = Data$dLazy.force(x); + if ($3.tag === "TokenEOF") { + go$c = false; + go$r = Data$dEither.$Either("Right", acc); + continue; + } + if ($3.tag === "TokenError") { + go$c = false; + go$r = Data$dEither.$Either("Left", $3._2); + continue; + } + if ($3.tag === "TokenCons") { + go$a0 = Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([$3._1.value]))(acc)); + go$a1 = $3._3; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go([]); + })(); + return x => { + const $2 = $0(PureScript$dCST$dLexer.lex(x)); + if ($2.tag === "Right") { + if ($2._1.length === 2) { + if ($2._1[0].tag === "TokSymbolName") { + if ($2._1[1].tag === "TokInt") { + if ($2._1[1]._2.tag === "SmallInt") { + return Data$dMaybe.$Maybe("Just", Data$dTuple.$Tuple(Tidy$dPrecedence.$QualifiedOperator($2._1[0]._1, Tidy$dPrecedence.OperatorValue, $2._1[0]._2), $2._1[1]._2._1)); + } + return Data$dMaybe.Nothing; + } + return Data$dMaybe.Nothing; + } + return Data$dMaybe.Nothing; + } + if ($2._1.length === 3) { + if ($2._1[0].tag === "TokSymbolName") { + if ($2._1[1].tag === "TokLowerName") { + if ($2._1[1]._1.tag === "Nothing") { + if ($2._1[1]._2 === "type") { + if ($2._1[2].tag === "TokInt") { + if ($2._1[2]._2.tag === "SmallInt") { + return Data$dMaybe.$Maybe( + "Just", + Data$dTuple.$Tuple(Tidy$dPrecedence.$QualifiedOperator($2._1[0]._1, Tidy$dPrecedence.OperatorType, $2._1[0]._2), $2._1[2]._2._1) + ); + } + return Data$dMaybe.Nothing; + } + return Data$dMaybe.Nothing; + } + return Data$dMaybe.Nothing; + } + return Data$dMaybe.Nothing; + } + return Data$dMaybe.Nothing; + } + return Data$dMaybe.Nothing; + } + return Data$dMaybe.Nothing; + } + return Data$dMaybe.Nothing; + }; +})(); +const parseOperatorTable = /* #__PURE__ */ (() => { + const $0 = Data$dFoldable.foldrArray(v => Tidy$dPrecedence.insertOperator(v._1)(v._2))(Data$dMap$dInternal.Leaf); + return x => $0(Data$dArray.mapMaybe(parseOperatorPrec)(x)); +})(); +export {ordMaybe, parseOperatorPrec, parseOperatorTable, resolveOperatorExports, union}; diff --git a/.storybook/purescript-indexer/output-es/Tidy.Precedence/index.js b/.storybook/purescript-indexer/output-es/Tidy.Precedence/index.js new file mode 100644 index 0000000..c460e93 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Tidy.Precedence/index.js @@ -0,0 +1,358 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dST$dInternal from "../Control.Monad.ST.Internal/index.js"; +import * as Data$dArray from "../Data.Array/index.js"; +import * as Data$dArray$dST from "../Data.Array.ST/index.js"; +import * as Data$dFoldable from "../Data.Foldable/index.js"; +import * as Data$dFunction from "../Data.Function/index.js"; +import * as Data$dList$dTypes from "../Data.List.Types/index.js"; +import * as Data$dMap$dInternal from "../Data.Map.Internal/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dMonoid from "../Data.Monoid/index.js"; +import * as Data$dOrd from "../Data.Ord/index.js"; +import * as Data$dOrdering from "../Data.Ordering/index.js"; +import * as Data$dSemigroup from "../Data.Semigroup/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +const $OperatorNamespace = tag => ({tag}); +const $OperatorStk = (tag, _1, _2, _3) => ({tag, _1, _2, _3}); +const $OperatorTree = (tag, _1, _2, _3) => ({tag, _1, _2, _3}); +const $QualifiedOperator = (_1, _2, _3) => ({tag: "QualifiedOperator", _1, _2, _3}); +const ordMaybe = /* #__PURE__ */ Data$dMaybe.ordMaybe(Data$dOrd.ordString); +const foldMap = /* #__PURE__ */ (() => Data$dFoldable.foldableArray.foldMap(Data$dMonoid.monoidArray))(); +const OperatorType = /* #__PURE__ */ $OperatorNamespace("OperatorType"); +const OperatorValue = /* #__PURE__ */ $OperatorNamespace("OperatorValue"); +const QualifiedOperator = value0 => value1 => value2 => $QualifiedOperator(value0, value1, value2); +const OpList = value0 => value1 => value2 => $OperatorTree("OpList", value0, value1, value2); +const OpPure = value0 => $OperatorTree("OpPure", value0); +const OpHead = value0 => $OperatorStk("OpHead", value0); +const OpPrec = value0 => value1 => value2 => $OperatorStk("OpPrec", value0, value1, value2); +const snoc = prevOps => nextPrec => nextOps => { + const $3 = Data$dArray.unsnoc(prevOps); + const v = (() => { + if ($3.tag === "Just") { return $3._1; } + $runtime.fail(); + })(); + return Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([Data$dTuple.$Tuple(v.last._1, $OperatorTree("OpList", v.last._2, nextPrec, nextOps))]))(v.init)); +}; +const unwind = /* #__PURE__ */ (() => { + const go = go$a0$copy => go$a1$copy => go$a2$copy => { + let go$a0 = go$a0$copy, go$a1 = go$a1$copy, go$a2 = go$a2$copy, go$c = true, go$r; + while (go$c) { + const prec = go$a0, ops = go$a1, v = go$a2; + if (v.tag === "OpHead") { + go$c = false; + go$r = $OperatorTree("OpList", v._1, prec, ops); + continue; + } + if (v.tag === "OpPrec") { + go$a0 = v._2; + go$a1 = snoc(v._3)(prec)(ops); + go$a2 = v._1; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return v => { + if (v.tag === "OpHead") { return v._1; } + if (v.tag === "OpPrec") { return go(v._2)(v._3)(v._1); } + $runtime.fail(); + }; +})(); +const push = push$a0$copy => push$a1$copy => { + let push$a0 = push$a0$copy, push$a1 = push$a1$copy, push$c = true, push$r; + while (push$c) { + const stk = push$a0, chs = push$a1; + if (chs.tag === "Nil") { + push$c = false; + push$r = stk; + continue; + } + if (chs.tag === "Cons") { + if (chs._2.tag === "Nil") { + if (stk.tag === "OpHead") { + push$c = false; + push$r = $OperatorStk("OpPrec", stk, chs._1._1, chs._1._2); + continue; + } + if (stk.tag === "OpPrec") { + const v = Data$dOrd.ordInt.compare(chs._1._1)(stk._2); + if (v.tag === "EQ") { + push$c = false; + push$r = $OperatorStk("OpPrec", stk._1, stk._2, Data$dSemigroup.concatArray(stk._3)(chs._1._2)); + continue; + } + if (v.tag === "GT") { + push$c = false; + push$r = $OperatorStk("OpPrec", stk, chs._1._1, chs._1._2); + continue; + } + if (v.tag === "LT") { + push$a0 = stk._1; + push$a1 = Data$dList$dTypes.$List("Cons", Data$dTuple.$Tuple(stk._2, stk._3), chs); + continue; + } + $runtime.fail(); + } + $runtime.fail(); + } + if (stk.tag === "OpHead") { + push$a0 = $OperatorStk("OpHead", $OperatorTree("OpList", stk._1, chs._1._1, chs._1._2)); + push$a1 = chs._2; + continue; + } + if (stk.tag === "OpPrec") { + const v = Data$dOrd.ordInt.compare(chs._1._1)(stk._2); + if (v.tag === "EQ") { + push$a0 = $OperatorStk("OpPrec", stk._1, stk._2, Data$dSemigroup.concatArray(stk._3)(chs._1._2)); + push$a1 = chs._2; + continue; + } + if (v.tag === "GT") { + push$a0 = $OperatorStk("OpPrec", stk._1, stk._2, snoc(stk._3)(chs._1._1)(chs._1._2)); + push$a1 = chs._2; + continue; + } + if (v.tag === "LT") { + push$a0 = stk._1; + push$a1 = Data$dList$dTypes.$List("Cons", Data$dTuple.$Tuple(stk._2, snoc(stk._3)(chs._1._1)(chs._1._2)), chs._2); + continue; + } + $runtime.fail(); + } + $runtime.fail(); + } + $runtime.fail(); + }; + return push$r; +}; +const eqOperatorNamespace = { + eq: x => y => { + if (x.tag === "OperatorType") { return y.tag === "OperatorType"; } + if (x.tag === "OperatorValue") { return y.tag === "OperatorValue"; } + return false; + } +}; +const eqQualifiedOperator = { + eq: x => y => (() => { + if (x._1.tag === "Nothing") { return y._1.tag === "Nothing"; } + if (x._1.tag === "Just") { + if (y._1.tag === "Just") { return x._1._1 === y._1._1; } + return false; + } + return false; + })() && (() => { + if (x._2.tag === "OperatorType") { return y._2.tag === "OperatorType"; } + if (x._2.tag === "OperatorValue") { return y._2.tag === "OperatorValue"; } + return false; + })() && x._3 === y._3 +}; +const ordOperatorNamespace = { + compare: x => y => { + if (x.tag === "OperatorType") { + if (y.tag === "OperatorType") { return Data$dOrdering.EQ; } + return Data$dOrdering.LT; + } + if (y.tag === "OperatorType") { return Data$dOrdering.GT; } + if (x.tag === "OperatorValue") { + if (y.tag === "OperatorValue") { return Data$dOrdering.EQ; } + $runtime.fail(); + } + $runtime.fail(); + }, + Eq0: () => eqOperatorNamespace +}; +const ordTuple = /* #__PURE__ */ Data$dTuple.ordTuple(ordOperatorNamespace)(Data$dOrd.ordString); +const filterKeys = /* #__PURE__ */ Data$dMap$dInternal.filterKeys(ordTuple); +const insertOperator = v => prec => Data$dMap$dInternal.alter(ordMaybe)(v1 => { + if (v1.tag === "Nothing") { + return Data$dMaybe.$Maybe("Just", Data$dMap$dInternal.$Map("Two", Data$dMap$dInternal.Leaf, Data$dTuple.$Tuple(v._2, v._3), prec, Data$dMap$dInternal.Leaf)); + } + if (v1.tag === "Just") { return Data$dMaybe.$Maybe("Just", Data$dMap$dInternal.insert(ordTuple)(Data$dTuple.$Tuple(v._2, v._3))(prec)(v1._1)); } + $runtime.fail(); +})(v._1); +const lookupOperator = v => precMap => { + const $2 = Data$dMap$dInternal.lookup(ordMaybe)(v._1)(precMap); + const $3 = Data$dMap$dInternal.lookup(ordTuple)(Data$dTuple.$Tuple(v._2, v._3)); + if ($2.tag === "Just") { return $3($2._1); } + if ($2.tag === "Nothing") { return Data$dMaybe.Nothing; } + $runtime.fail(); +}; +const remapOperatorTo = newModName => v => precMap => { + const $3 = lookupOperator(v)(precMap); + if ($3.tag === "Just") { return insertOperator($QualifiedOperator(newModName, v._2, v._3))($3._1)(precMap); } + if ($3.tag === "Nothing") { return precMap; } + $runtime.fail(); +}; +const ordQualifiedOperator = { + compare: x => y => { + const v = ordMaybe.compare(x._1)(y._1); + if (v.tag === "LT") { return Data$dOrdering.LT; } + if (v.tag === "GT") { return Data$dOrdering.GT; } + const v1 = ordOperatorNamespace.compare(x._2)(y._2); + if (v1.tag === "LT") { return Data$dOrdering.LT; } + if (v1.tag === "GT") { return Data$dOrdering.GT; } + return Data$dOrd.ordString.compare(x._3)(y._3); + }, + Eq0: () => eqQualifiedOperator +}; +const remapModuleTo = newModName => modName => precMap => { + const $3 = Data$dMap$dInternal.lookup(ordMaybe)(Data$dMaybe.$Maybe("Just", modName))(precMap); + if ($3.tag === "Just") { + return Data$dMap$dInternal.alter(ordMaybe)(v => { + if (v.tag === "Nothing") { return Data$dMaybe.$Maybe("Just", $3._1); } + if (v.tag === "Just") { return Data$dMaybe.$Maybe("Just", Data$dMap$dInternal.unionWith(ordTuple)(Data$dFunction.const)($3._1)(v._1)); } + $runtime.fail(); + })(newModName)(precMap); + } + if ($3.tag === "Nothing") { return precMap; } + $runtime.fail(); +}; +const remapModuleToHiding = dictFoldable => { + const any1 = dictFoldable.foldMap((() => { + const semigroupDisj1 = {append: v => v1 => v || v1}; + return {mempty: false, Semigroup0: () => semigroupDisj1}; + })()); + return hiding => newModName => modName => precMap => { + const $6 = Data$dMap$dInternal.lookup(ordMaybe)(Data$dMaybe.$Maybe("Just", modName))(precMap); + if ($6.tag === "Just") { + const filteredOps = filterKeys((() => { + const $7 = QualifiedOperator(Data$dMaybe.$Maybe("Just", modName)); + return x => { + const $9 = $7(x._1)(x._2); + return !any1(y => (() => { + if ($9._1.tag === "Nothing") { return y._1.tag === "Nothing"; } + if ($9._1.tag === "Just") { + if (y._1.tag === "Just") { return $9._1._1 === y._1._1; } + return false; + } + return false; + })() && (() => { + if ($9._2.tag === "OperatorType") { return y._2.tag === "OperatorType"; } + if ($9._2.tag === "OperatorValue") { return y._2.tag === "OperatorValue"; } + return false; + })() && $9._3 === y._3)(hiding); + }; + })())($6._1); + return Data$dMap$dInternal.alter(ordMaybe)(v => { + if (v.tag === "Nothing") { return Data$dMaybe.$Maybe("Just", filteredOps); } + if (v.tag === "Just") { return Data$dMaybe.$Maybe("Just", Data$dMap$dInternal.unionWith(ordTuple)(Data$dFunction.const)(filteredOps)(v._1)); } + $runtime.fail(); + })(newModName)(precMap); + } + if ($6.tag === "Nothing") { return precMap; } + $runtime.fail(); + }; +}; +const remapModuleToHiding1 = /* #__PURE__ */ remapModuleToHiding(Data$dFoldable.foldableArray); +const remapOperators = precMap => v => Data$dFoldable.foldlArray(precMap$1 => v$1 => { + if (v$1.tag === "DeclFixity") { + if (v$1._1.operator.tag === "FixityValue") { + return insertOperator($QualifiedOperator(Data$dMaybe.$Maybe("Just", v.header.name.name), OperatorValue, v$1._1.operator._3.name))(v$1._1.prec._2)(insertOperator($QualifiedOperator( + Data$dMaybe.Nothing, + OperatorValue, + v$1._1.operator._3.name + ))(v$1._1.prec._2)(precMap$1)); + } + if (v$1._1.operator.tag === "FixityType") { + return insertOperator($QualifiedOperator(Data$dMaybe.$Maybe("Just", v.header.name.name), OperatorType, v$1._1.operator._4.name))(v$1._1.prec._2)(insertOperator($QualifiedOperator( + Data$dMaybe.Nothing, + OperatorType, + v$1._1.operator._4.name + ))(v$1._1.prec._2)(precMap$1)); + } + $runtime.fail(); + } + return precMap$1; +})(Data$dFoldable.foldlArray(precMap$1 => v$1 => { + const newModName = (() => { + if (v$1.qualified.tag === "Just") { return Data$dMaybe.$Maybe("Just", v$1.qualified._1._2.name); } + return Data$dMaybe.Nothing; + })(); + if (v$1.names.tag === "Nothing") { return remapModuleTo(newModName)(v$1.module.name)(precMap$1); } + if (v$1.names.tag === "Just") { + const impOps = Data$dSemigroup.concatArray((() => { + if (v$1.names._1._2.value.head.tag === "ImportOp") { + return [$QualifiedOperator(Data$dMaybe.$Maybe("Just", v$1.module.name), OperatorValue, v$1.names._1._2.value.head._1.name)]; + } + if (v$1.names._1._2.value.head.tag === "ImportTypeOp") { + return [$QualifiedOperator(Data$dMaybe.$Maybe("Just", v$1.module.name), OperatorType, v$1.names._1._2.value.head._2.name)]; + } + return []; + })())(foldMap(x => { + if (x._2.tag === "ImportOp") { return [$QualifiedOperator(Data$dMaybe.$Maybe("Just", v$1.module.name), OperatorValue, x._2._1.name)]; } + if (x._2.tag === "ImportTypeOp") { return [$QualifiedOperator(Data$dMaybe.$Maybe("Just", v$1.module.name), OperatorType, x._2._2.name)]; } + return []; + })(v$1.names._1._2.value.tail)); + if ( + (() => { + if (v$1.names._1._1.tag === "Nothing") { return false; } + if (v$1.names._1._1.tag === "Just") { return true; } + $runtime.fail(); + })() + ) { + return remapModuleToHiding1(impOps)(newModName)(v$1.module.name)(precMap$1); + } + return Data$dFoldable.foldlArray(b => a => remapOperatorTo(newModName)(a)(b))(precMap$1)(impOps); + } + $runtime.fail(); +})(precMap)(v.header.imports))(v.body.decls); +const defaultPrecedence = 10; +const toOperatorTree = precMap => getOperator => init => { + const $3 = Data$dFoldable.foldlArray(stk => v => { + const v1 = getOperator(v._1); + return push(stk)(Data$dList$dTypes.$List( + "Cons", + Data$dTuple.$Tuple( + (() => { + const $6 = Data$dMap$dInternal.lookup(ordTuple)(Data$dTuple.$Tuple(v1._2, v1._3)); + const $7 = Data$dMap$dInternal.lookup(ordMaybe)(v1._1)(precMap); + const $8 = (() => { + if ($7.tag === "Just") { return $6($7._1); } + if ($7.tag === "Nothing") { return Data$dMaybe.Nothing; } + $runtime.fail(); + })(); + if ($8.tag === "Nothing") { return 10; } + if ($8.tag === "Just") { return $8._1; } + $runtime.fail(); + })(), + [Data$dTuple.$Tuple(v._1, $OperatorTree("OpPure", v._2))] + ), + Data$dList$dTypes.Nil + )); + })($OperatorStk("OpHead", $OperatorTree("OpPure", init))); + return x => unwind($3(x)); +}; +export { + $OperatorNamespace, + $OperatorStk, + $OperatorTree, + $QualifiedOperator, + OpHead, + OpList, + OpPrec, + OpPure, + OperatorType, + OperatorValue, + QualifiedOperator, + defaultPrecedence, + eqOperatorNamespace, + eqQualifiedOperator, + filterKeys, + foldMap, + insertOperator, + lookupOperator, + ordMaybe, + ordOperatorNamespace, + ordQualifiedOperator, + ordTuple, + push, + remapModuleTo, + remapModuleToHiding, + remapModuleToHiding1, + remapOperatorTo, + remapOperators, + snoc, + toOperatorTree, + unwind +}; diff --git a/.storybook/purescript-indexer/output-es/Tidy.Token/index.js b/.storybook/purescript-indexer/output-es/Tidy.Token/index.js new file mode 100644 index 0000000..b951379 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Tidy.Token/index.js @@ -0,0 +1,121 @@ +import * as $runtime from "../runtime.js"; +const $UnicodeOption = tag => ({tag}); +const UnicodeSource = /* #__PURE__ */ $UnicodeOption("UnicodeSource"); +const UnicodeAlways = /* #__PURE__ */ $UnicodeOption("UnicodeAlways"); +const UnicodeNever = /* #__PURE__ */ $UnicodeOption("UnicodeNever"); +const printToken = option => v => { + if (v.tag === "TokLeftParen") { return "("; } + if (v.tag === "TokRightParen") { return ")"; } + if (v.tag === "TokLeftBrace") { return "{"; } + if (v.tag === "TokRightBrace") { return "}"; } + if (v.tag === "TokLeftSquare") { return "["; } + if (v.tag === "TokRightSquare") { return "]"; } + if (v.tag === "TokLeftArrow") { + if (option.tag === "UnicodeNever") { return "<-"; } + if (option.tag === "UnicodeAlways") { return "←"; } + if (option.tag === "UnicodeSource") { + if (v._1.tag === "ASCII") { return "<-"; } + if (v._1.tag === "Unicode") { return "←"; } + $runtime.fail(); + } + $runtime.fail(); + } + if (v.tag === "TokRightArrow") { + if (option.tag === "UnicodeNever") { return "->"; } + if (option.tag === "UnicodeAlways") { return "→"; } + if (option.tag === "UnicodeSource") { + if (v._1.tag === "ASCII") { return "->"; } + if (v._1.tag === "Unicode") { return "→"; } + $runtime.fail(); + } + $runtime.fail(); + } + if (v.tag === "TokRightFatArrow") { + if (option.tag === "UnicodeNever") { return "=>"; } + if (option.tag === "UnicodeAlways") { return "⇒"; } + if (option.tag === "UnicodeSource") { + if (v._1.tag === "ASCII") { return "=>"; } + if (v._1.tag === "Unicode") { return "⇒"; } + $runtime.fail(); + } + $runtime.fail(); + } + if (v.tag === "TokDoubleColon") { + if (option.tag === "UnicodeNever") { return "::"; } + if (option.tag === "UnicodeAlways") { return "∷"; } + if (option.tag === "UnicodeSource") { + if (v._1.tag === "ASCII") { return "::"; } + if (v._1.tag === "Unicode") { return "∷"; } + $runtime.fail(); + } + $runtime.fail(); + } + if (v.tag === "TokForall") { + if (option.tag === "UnicodeNever") { return "forall"; } + if (option.tag === "UnicodeAlways") { return "∀"; } + if (option.tag === "UnicodeSource") { + if (v._1.tag === "ASCII") { return "forall"; } + if (v._1.tag === "Unicode") { return "∀"; } + $runtime.fail(); + } + $runtime.fail(); + } + if (v.tag === "TokEquals") { return "="; } + if (v.tag === "TokPipe") { return "|"; } + if (v.tag === "TokTick") { return "`"; } + if (v.tag === "TokDot") { return "."; } + if (v.tag === "TokComma") { return ","; } + if (v.tag === "TokUnderscore") { return "_"; } + if (v.tag === "TokBackslash") { return "\\"; } + if (v.tag === "TokAt") { return "@"; } + if (v.tag === "TokLowerName") { + if (v._1.tag === "Nothing") { return v._2; } + if (v._1.tag === "Just") { return v._1._1 + ("." + v._2); } + $runtime.fail(); + } + if (v.tag === "TokUpperName") { + if (v._1.tag === "Nothing") { return v._2; } + if (v._1.tag === "Just") { return v._1._1 + ("." + v._2); } + $runtime.fail(); + } + if (v.tag === "TokOperator") { + if (v._1.tag === "Nothing") { return v._2; } + if (v._1.tag === "Just") { return v._1._1 + ("." + v._2); } + $runtime.fail(); + } + if (v.tag === "TokSymbolName") { + const $2 = "(" + (v._2 + ")"); + if (v._1.tag === "Nothing") { return $2; } + if (v._1.tag === "Just") { return v._1._1 + ("." + $2); } + $runtime.fail(); + } + if (v.tag === "TokSymbolArrow") { + if (option.tag === "UnicodeNever") { return "(->)"; } + if (option.tag === "UnicodeAlways") { return "(→)"; } + if (option.tag === "UnicodeSource") { + if (v._1.tag === "ASCII") { return "(->)"; } + if (v._1.tag === "Unicode") { return "(→)"; } + $runtime.fail(); + } + $runtime.fail(); + } + if (v.tag === "TokHole") { return "?" + v._1; } + if (v.tag === "TokChar") { return "'" + (v._1 + "'"); } + if (v.tag === "TokString") { return "\"" + (v._1 + "\""); } + if (v.tag === "TokRawString") { return "\"\"\"" + (v._1 + "\"\"\""); } + if (v.tag === "TokInt") { return v._1; } + if (v.tag === "TokNumber") { return v._1; } + if (v.tag === "TokLayoutStart") { return ""; } + if (v.tag === "TokLayoutSep") { return ""; } + if (v.tag === "TokLayoutEnd") { return ""; } + $runtime.fail(); +}; +const eqUnicodeOption = { + eq: x => y => { + if (x.tag === "UnicodeSource") { return y.tag === "UnicodeSource"; } + if (x.tag === "UnicodeAlways") { return y.tag === "UnicodeAlways"; } + if (x.tag === "UnicodeNever") { return y.tag === "UnicodeNever"; } + return false; + } +}; +export {$UnicodeOption, UnicodeAlways, UnicodeNever, UnicodeSource, eqUnicodeOption, printToken}; diff --git a/.storybook/purescript-indexer/output-es/Tidy.Util/index.js b/.storybook/purescript-indexer/output-es/Tidy.Util/index.js new file mode 100644 index 0000000..d78ef27 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Tidy.Util/index.js @@ -0,0 +1,9 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dString$dRegex from "../Data.String.Regex/index.js"; +import * as Data$dString$dRegex$dFlags from "../Data.String.Regex.Flags/index.js"; +import * as Data$dString$dRegex$dUnsafe from "../Data.String.Regex.Unsafe/index.js"; +const splitStringEscapeLines = /* #__PURE__ */ Data$dString$dRegex.split(/* #__PURE__ */ Data$dString$dRegex$dUnsafe.unsafeRegex("\\\\ *\\r?\\n\\s*\\\\")(Data$dString$dRegex$dFlags.global)); +const splitLines = /* #__PURE__ */ Data$dString$dRegex.split(/* #__PURE__ */ Data$dString$dRegex$dUnsafe.unsafeRegex("\\r?\\n")(Data$dString$dRegex$dFlags.global)); +const overLabel = k => v => ({label: k(v.label), separator: v.separator, value: v.value}); +const nameOf = v => v.name; +export {nameOf, overLabel, splitLines, splitStringEscapeLines}; diff --git a/.storybook/purescript-indexer/output-es/Tidy/index.js b/.storybook/purescript-indexer/output-es/Tidy/index.js new file mode 100644 index 0000000..d1c7af2 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Tidy/index.js @@ -0,0 +1,2659 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dST$dInternal from "../Control.Monad.ST.Internal/index.js"; +import * as Data$dArray from "../Data.Array/index.js"; +import * as Data$dArray$dST from "../Data.Array.ST/index.js"; +import * as Data$dEq from "../Data.Eq/index.js"; +import * as Data$dFoldable from "../Data.Foldable/index.js"; +import * as Data$dFunctor from "../Data.Functor/index.js"; +import * as Data$dList$dTypes from "../Data.List.Types/index.js"; +import * as Data$dMap$dInternal from "../Data.Map.Internal/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dMonoid from "../Data.Monoid/index.js"; +import * as Data$dNonEmpty from "../Data.NonEmpty/index.js"; +import * as Data$dOrd from "../Data.Ord/index.js"; +import * as Data$dOrdering from "../Data.Ordering/index.js"; +import * as Data$dSemigroup from "../Data.Semigroup/index.js"; +import * as Data$dString$dCodePoints from "../Data.String.CodePoints/index.js"; +import * as Data$dString$dCodeUnits from "../Data.String.CodeUnits/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +import * as Data$dVoid from "../Data.Void/index.js"; +import * as Dodo from "../Dodo/index.js"; +import * as Dodo$dInternal from "../Dodo.Internal/index.js"; +import * as Partial from "../Partial/index.js"; +import * as PureScript$dCST$dTypes from "../PureScript.CST.Types/index.js"; +import * as Tidy$dDoc from "../Tidy.Doc/index.js"; +import * as Tidy$dHang from "../Tidy.Hang/index.js"; +import * as Tidy$dPrecedence from "../Tidy.Precedence/index.js"; +import * as Tidy$dToken from "../Tidy.Token/index.js"; +import * as Tidy$dUtil from "../Tidy.Util/index.js"; +const $DeclGroup = (tag, _1) => ({tag, _1}); +const $DeclGroupSeparator = tag => ({tag}); +const $ElseIfChain = (tag, _1, _2, _3, _4, _5) => ({tag, _1, _2, _3, _4, _5}); +const $FormatGrouped = tag => ({tag}); +const $ImportComparison = (tag, _1, _2, _3) => ({tag, _1, _2, _3}); +const $ImportModuleComparison = (_1, _2, _3, _4) => ({tag: "ImportModuleCmp", _1, _2, _3, _4}); +const $ImportSortOption = tag => ({tag}); +const $ImportWrapOption = tag => ({tag}); +const $Poly = (tag, _1, _2, _3) => ({tag, _1, _2, _3}); +const $TypeArrowOption = tag => ({tag}); +const lines = /* #__PURE__ */ Data$dFoldable.foldrArray(Dodo.appendBreak)(Dodo$dInternal.Empty); +const intercalate = /* #__PURE__ */ Data$dArray.intercalate1(Dodo$dInternal.monoidDoc); +const power = /* #__PURE__ */ Data$dMonoid.power(Dodo$dInternal.monoidDoc); +const power1 = /* #__PURE__ */ Data$dMonoid.power(Data$dMonoid.monoidString); +const max = x => y => { + const v = Data$dOrd.ordInt.compare(x)(y); + if (v.tag === "LT") { return y; } + if (v.tag === "EQ") { return x; } + if (v.tag === "GT") { return x; } + $runtime.fail(); +}; +const foldMap2 = /* #__PURE__ */ (() => Data$dFoldable.foldableArray.foldMap(Dodo$dInternal.monoidDoc))(); +const identity = x => x; +const eq5 = /* #__PURE__ */ Data$dEq.eqArrayImpl(Data$dEq.eqStringImpl); +const compare3 = /* #__PURE__ */ (() => Data$dOrd.ordArray(Data$dOrd.ordString).compare)(); +const compare7 = /* #__PURE__ */ (() => Data$dMaybe.ordMaybe(Data$dOrd.ordString).compare)(); +const foldMap3 = /* #__PURE__ */ (() => Data$dFoldable.foldableArray.foldMap(Tidy$dDoc.monoidFormatDoc))(); +const TypeArrowFirst = /* #__PURE__ */ $TypeArrowOption("TypeArrowFirst"); +const TypeArrowLast = /* #__PURE__ */ $TypeArrowOption("TypeArrowLast"); +const PolyForall = value0 => value1 => value2 => $Poly("PolyForall", value0, value1, value2); +const PolyArrow = value0 => value1 => $Poly("PolyArrow", value0, value1); +const ImportWrapSource = /* #__PURE__ */ $ImportWrapOption("ImportWrapSource"); +const ImportWrapAuto = /* #__PURE__ */ $ImportWrapOption("ImportWrapAuto"); +const ImportSortSource = /* #__PURE__ */ $ImportSortOption("ImportSortSource"); +const ImportSortIde = /* #__PURE__ */ $ImportSortOption("ImportSortIde"); +const ImportClassCmp = value0 => $ImportComparison("ImportClassCmp", value0); +const ImportTypeOpCmp = value0 => $ImportComparison("ImportTypeOpCmp", value0); +const ImportTypeCmp = value0 => value1 => value2 => $ImportComparison("ImportTypeCmp", value0, value1, value2); +const ImportValueCmp = value0 => $ImportComparison("ImportValueCmp", value0); +const ImportOpCmp = value0 => $ImportComparison("ImportOpCmp", value0); +const ImportErrorCmp = /* #__PURE__ */ $ImportComparison("ImportErrorCmp"); +const ImportModuleCmp = value0 => value1 => value2 => value3 => $ImportModuleComparison(value0, value1, value2, value3); +const Grouped = /* #__PURE__ */ $FormatGrouped("Grouped"); +const NotGrouped = /* #__PURE__ */ $FormatGrouped("NotGrouped"); +const IfThen = value0 => value1 => value2 => value3 => $ElseIfChain("IfThen", value0, value1, value2, value3); +const ElseIfThen = value0 => value1 => value2 => value3 => value4 => $ElseIfChain("ElseIfThen", value0, value1, value2, value3, value4); +const Else = value0 => value1 => $ElseIfChain("Else", value0, value1); +const DeclGroupSame = /* #__PURE__ */ $DeclGroupSeparator("DeclGroupSame"); +const DeclGroupHard = /* #__PURE__ */ $DeclGroupSeparator("DeclGroupHard"); +const DeclGroupSoft = /* #__PURE__ */ $DeclGroupSeparator("DeclGroupSoft"); +const DeclGroupValueSignature = value0 => $DeclGroup("DeclGroupValueSignature", value0); +const DeclGroupValue = value0 => $DeclGroup("DeclGroupValue", value0); +const DeclGroupTypeSignature = value0 => $DeclGroup("DeclGroupTypeSignature", value0); +const DeclGroupType = value0 => $DeclGroup("DeclGroupType", value0); +const DeclGroupClass = value0 => $DeclGroup("DeclGroupClass", value0); +const DeclGroupInstance = /* #__PURE__ */ $DeclGroup("DeclGroupInstance"); +const DeclGroupFixity = /* #__PURE__ */ $DeclGroup("DeclGroupFixity"); +const DeclGroupForeign = /* #__PURE__ */ $DeclGroup("DeclGroupForeign"); +const DeclGroupRole = /* #__PURE__ */ $DeclGroup("DeclGroupRole"); +const DeclGroupUnknown = /* #__PURE__ */ $DeclGroup("DeclGroupUnknown"); +const toPolytype = /* #__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 init = go$a0, v = go$a1; + if (v.tag === "TypeForall") { + go$a0 = Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([$Poly("PolyForall", v._1, v._2, v._3)]))(init)); + go$a1 = v._4; + continue; + } + if (v.tag === "TypeArrow") { + go$a0 = Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([$Poly("PolyArrow", v._1, v._2)]))(init)); + go$a1 = v._3; + continue; + } + if (v.tag === "TypeConstrained") { + go$a0 = Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([$Poly("PolyArrow", v._1, v._2)]))(init)); + go$a1 = v._3; + continue; + } + go$c = false; + go$r = {init: init, last: v}; + continue; + }; + return go$r; + }; + return go([]); +})(); +const toElseIfChain = ifte => { + 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 acc = go$a0, curr = go$a1; + if (curr.false.tag === "ExprIf") { + go$a0 = Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([ + $ElseIfChain("ElseIfThen", curr.else, curr.false._1.keyword, curr.false._1.cond, curr.false._1.then, curr.false._1.true) + ]))(acc)); + go$a1 = curr.false._1; + continue; + } + go$c = false; + go$r = Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([$ElseIfChain("Else", curr.else, curr.false)]))(acc)); + continue; + }; + return go$r; + }; + return go([$ElseIfChain("IfThen", ifte.keyword, ifte.cond, ifte.then, ifte.true)])(ifte); +}; +const formatString = x => { + const $1 = Data$dArray.uncons(Tidy$dUtil.splitStringEscapeLines(x)); + if ($1.tag === "Nothing") { return Tidy$dDoc.monoidFormatDoc.mempty; } + if ($1.tag === "Just") { + const v1 = Data$dArray.unsnoc($1._1.tail); + if (v1.tag === "Nothing") { return Tidy$dDoc.text($1._1.head); } + if (v1.tag === "Just") { + return Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break)))(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break)))(Tidy$dDoc.text($1._1.head + "\\"))(Tidy$dDoc.joinWithMap(Data$dFoldable.foldableArray)(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break))))(str => Tidy$dDoc.text("\\" + ( + str + "\\" + )))(v1._1.init)))(Tidy$dDoc.text("\\" + v1._1.last)); + } + $runtime.fail(); + } + $runtime.fail(); +}; +const formatRawString = x => { + const $1 = Data$dArray.uncons(Tidy$dUtil.splitLines(x)); + if ($1.tag === "Nothing") { return Tidy$dDoc.monoidFormatDoc.mempty; } + if ($1.tag === "Just") { + if ($1._1.tail.length === 0) { return Tidy$dDoc.text($1._1.head); } + const $2 = lines([ + (() => { + if ($1._1.head === "") { return Dodo$dInternal.Empty; } + return Dodo$dInternal.$Doc("Text", Data$dString$dCodePoints.toCodePointArray($1._1.head).length, $1._1.head); + })(), + (() => { + const $2 = intercalate(Dodo$dInternal.Break)(Data$dFunctor.arrayMap(Dodo.text)($1._1.tail)); + return Dodo$dInternal.$Doc( + "Local", + options => Data$dTuple.$Tuple( + {indent: 0, indentSpaces: "", indentUnit: options.indentUnit, indentWidth: options.indentWidth, pageWidth: options.pageWidth, ribbonRatio: options.ribbonRatio}, + $2 + ) + ); + })() + ]); + if ($2.tag === "Empty") { return Tidy$dDoc.monoidFormatDoc.mempty; } + return {doc: $2, leading: Tidy$dDoc.monoidLeadingComment.mempty, isEmpty: false, multiline: false, trailing: Tidy$dDoc.monoidTrailingComment.mempty}; + } + $runtime.fail(); +}; +const formatListElem = alignment => format => conf => b => Tidy$dDoc.flexGroup(Tidy$dDoc.align(alignment)((() => { + const $4 = format(conf)(b); + if ($4.leading.lines > 0) { + return { + doc: $4.doc, + isEmpty: $4.isEmpty, + leading: {doc: $4.leading.doc, left: $4.leading.left, lines: 0, multiline: $4.leading.multiline, right: $4.leading.right}, + multiline: true, + trailing: $4.trailing + }; + } + return $4; +})())); +const formatHangingOperatorTree = formatOperator => format => conf => { + const go = v => { + if (v.tag === "OpPure") { return format(conf)(v._1); } + if (v.tag === "OpList") { + return Tidy$dHang.hangOps(go(v._1))(Data$dFunctor.arrayMap(v1 => Tidy$dHang.$HangingOp( + v1._1.token.range.end.column - v1._1.token.range.start.column | 0, + formatOperator(conf)(v1._1), + go(v1._2) + ))(v._3)); + } + $runtime.fail(); + }; + return go; +}; +const formatErrorVoid = {formatError: Data$dVoid.absurd}; +const formatError = dict => dict.formatError; +const formatDeclGroups = declSeparator => k => format => conf => { + const joinDecls = acc => { + const newDoc = Tidy$dDoc.joinWithMap(Data$dList$dTypes.foldableNonEmptyList)(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break))))(format(conf))(acc.decls); + if (acc.sep.tag === "DeclGroupSame") { return Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break)))(newDoc)(acc.doc); } + if (acc.sep.tag === "DeclGroupSoft") { return Tidy$dDoc.flexDoubleBreak(newDoc)(acc.doc); } + if (acc.sep.tag === "DeclGroupHard") { + return Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break)))(newDoc)(Tidy$dDoc.forceMinSourceBreaks(2)(acc.doc)); + } + $runtime.fail(); + }; + const $5 = Data$dFoldable.foldrArray(decl => x => Data$dMaybe.$Maybe( + "Just", + (() => { + if (x.tag === "Nothing") { return {doc: Tidy$dDoc.monoidFormatDoc.mempty, sep: DeclGroupSame, group: k(decl), decls: Data$dNonEmpty.$NonEmpty(decl, Data$dList$dTypes.Nil)}; } + if (x.tag === "Just") { + const group = k(decl); + const v1 = declSeparator(group)(x._1.group); + if (v1.tag === "DeclGroupSame") { + return {doc: x._1.doc, sep: x._1.sep, group: group, decls: Data$dNonEmpty.$NonEmpty(decl, Data$dList$dTypes.$List("Cons", x._1.decls._1, x._1.decls._2))}; + } + return {doc: joinDecls(x._1), sep: v1, group: group, decls: Data$dNonEmpty.$NonEmpty(decl, Data$dList$dTypes.Nil)}; + } + $runtime.fail(); + })() + ))(Data$dMaybe.Nothing); + return x => { + const $7 = $5(x); + if ($7.tag === "Nothing") { return Tidy$dDoc.monoidFormatDoc.mempty; } + if ($7.tag === "Just") { return joinDecls($7._1); } + $runtime.fail(); + }; +}; +const formatComment = lineComment => blockComment => com => next => { + if (com.tag === "Comment") { + if (Data$dString$dCodeUnits.take(2)(com._1) === "--") { return lineComment(com._1)(next); } + return blockComment(com._1)(next); + } + if (com.tag === "Line") { + return { + doc: next.doc, + isEmpty: false, + leading: {doc: next.leading.doc, left: next.leading.left, lines: next.leading.lines + com._2 | 0, multiline: next.leading.multiline, right: next.leading.right}, + multiline: next.multiline, + trailing: next.trailing + }; + } + if (com.tag === "Space") { return next; } + $runtime.fail(); +}; +const formatWithComments = leading => trailing => doc => Data$dFoldable.foldrArray(formatComment(Tidy$dDoc.leadingLineComment)(Tidy$dDoc.leadingBlockComment))(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Tidy$dDoc.identity))(doc)(Data$dFoldable.foldrArray(formatComment(Tidy$dDoc.trailingLineComment)(Tidy$dDoc.trailingBlockComment))(Tidy$dDoc.monoidFormatDoc.mempty)(trailing)))(leading); +const formatToken = conf => tok => { + const tokStr = Tidy$dToken.printToken(conf.unicode)(tok.value); + return formatWithComments(tok.leadingComments)(tok.trailingComments)((() => { + if (tok.value.tag === "TokRawString") { return formatRawString(tokStr); } + if (tok.value.tag === "TokString") { return formatString(tokStr); } + return Tidy$dDoc.text(tokStr); + })()); +}; +const formatEmptyList = conf => v => Tidy$dDoc.joinDoc(Tidy$dDoc.force(Tidy$dDoc.identity))(formatToken(conf)(v.open))(formatToken(conf)(v.close)); +const formatErrorRecoveredError = { + formatError: v => { + const v1 = Data$dArray.uncons(v.tokens); + if (v1.tag === "Just") { + const v2 = Data$dArray.unsnoc(v1._1.tail); + if (v2.tag === "Just") { + return formatWithComments(v1._1.head.leadingComments)(v2._1.last.trailingComments)((() => { + const $3 = Dodo$dInternal.$Doc( + "WithPosition", + v3 => Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.semigroupDoc.append((() => { + const $4 = Tidy$dToken.printToken(Tidy$dToken.UnicodeSource)(v1._1.head.value); + if ($4 === "") { return Dodo$dInternal.Empty; } + return Dodo$dInternal.$Doc("Text", Data$dString$dCodePoints.toCodePointArray($4).length, $4); + })())(Data$dFoldable.foldlArray(acc => v1$1 => { + if (v1$1.tag === "Comment") { + if (Data$dString$dCodeUnits.take(2)(v1$1._1) === "--") { + return { + line: false, + doc: Dodo$dInternal.semigroupDoc.append(acc.doc)((() => { + if (v1$1._1 === "") { return Dodo$dInternal.Empty; } + return Dodo$dInternal.$Doc("Text", Data$dString$dCodePoints.toCodePointArray(v1$1._1).length, v1$1._1); + })()) + }; + } + return {line: false, doc: Dodo$dInternal.semigroupDoc.append(acc.doc)(lines(Data$dFunctor.arrayMap(Dodo.text)(Tidy$dUtil.splitLines(v1$1._1))))}; + } + if (v1$1.tag === "Line") { return {line: true, doc: Dodo$dInternal.semigroupDoc.append(acc.doc)(power(Dodo$dInternal.Break)(v1$1._2))}; } + if (v1$1.tag === "Space") { + if (acc.line) { + return { + line: false, + doc: Dodo$dInternal.semigroupDoc.append(acc.doc)((() => { + const $6 = power1(" ")(max(0)(v1$1._1 - v3.nextIndent | 0)); + if ($6 === "") { return Dodo$dInternal.Empty; } + return Dodo$dInternal.$Doc("Text", Data$dString$dCodePoints.toCodePointArray($6).length, $6); + })()) + }; + } + return { + line: false, + doc: Dodo$dInternal.semigroupDoc.append(acc.doc)((() => { + const $6 = power1(" ")(v1$1._1); + if ($6 === "") { return Dodo$dInternal.Empty; } + return Dodo$dInternal.$Doc("Text", Data$dString$dCodePoints.toCodePointArray($6).length, $6); + })()) + }; + } + $runtime.fail(); + })({line: false, doc: Dodo$dInternal.Empty})(v1._1.head.trailingComments).doc))(Dodo$dInternal.semigroupDoc.append(foldMap2(tok => Dodo$dInternal.semigroupDoc.append(Data$dFoldable.foldlArray(acc => v1$1 => { + if (v1$1.tag === "Comment") { + if (Data$dString$dCodeUnits.take(2)(v1$1._1) === "--") { + return { + line: false, + doc: Dodo$dInternal.semigroupDoc.append(acc.doc)((() => { + if (v1$1._1 === "") { return Dodo$dInternal.Empty; } + return Dodo$dInternal.$Doc("Text", Data$dString$dCodePoints.toCodePointArray(v1$1._1).length, v1$1._1); + })()) + }; + } + return {line: false, doc: Dodo$dInternal.semigroupDoc.append(acc.doc)(lines(Data$dFunctor.arrayMap(Dodo.text)(Tidy$dUtil.splitLines(v1$1._1))))}; + } + if (v1$1.tag === "Line") { return {line: true, doc: Dodo$dInternal.semigroupDoc.append(acc.doc)(power(Dodo$dInternal.Break)(v1$1._2))}; } + if (v1$1.tag === "Space") { + if (acc.line) { + return { + line: false, + doc: Dodo$dInternal.semigroupDoc.append(acc.doc)((() => { + const $7 = power1(" ")(max(0)(v1$1._1 - v3.nextIndent | 0)); + if ($7 === "") { return Dodo$dInternal.Empty; } + return Dodo$dInternal.$Doc("Text", Data$dString$dCodePoints.toCodePointArray($7).length, $7); + })()) + }; + } + return { + line: false, + doc: Dodo$dInternal.semigroupDoc.append(acc.doc)((() => { + const $7 = power1(" ")(v1$1._1); + if ($7 === "") { return Dodo$dInternal.Empty; } + return Dodo$dInternal.$Doc("Text", Data$dString$dCodePoints.toCodePointArray($7).length, $7); + })()) + }; + } + $runtime.fail(); + })({line: false, doc: Dodo$dInternal.Empty})(tok.leadingComments).doc)(Dodo$dInternal.semigroupDoc.append((() => { + const $5 = Tidy$dToken.printToken(Tidy$dToken.UnicodeSource)(tok.value); + if ($5 === "") { return Dodo$dInternal.Empty; } + return Dodo$dInternal.$Doc("Text", Data$dString$dCodePoints.toCodePointArray($5).length, $5); + })())(Data$dFoldable.foldlArray(acc => v1$1 => { + if (v1$1.tag === "Comment") { + if (Data$dString$dCodeUnits.take(2)(v1$1._1) === "--") { + return { + line: false, + doc: Dodo$dInternal.semigroupDoc.append(acc.doc)((() => { + if (v1$1._1 === "") { return Dodo$dInternal.Empty; } + return Dodo$dInternal.$Doc("Text", Data$dString$dCodePoints.toCodePointArray(v1$1._1).length, v1$1._1); + })()) + }; + } + return {line: false, doc: Dodo$dInternal.semigroupDoc.append(acc.doc)(lines(Data$dFunctor.arrayMap(Dodo.text)(Tidy$dUtil.splitLines(v1$1._1))))}; + } + if (v1$1.tag === "Line") { return {line: true, doc: Dodo$dInternal.semigroupDoc.append(acc.doc)(power(Dodo$dInternal.Break)(v1$1._2))}; } + if (v1$1.tag === "Space") { + if (acc.line) { + return { + line: false, + doc: Dodo$dInternal.semigroupDoc.append(acc.doc)((() => { + const $7 = power1(" ")(max(0)(v1$1._1 - v3.nextIndent | 0)); + if ($7 === "") { return Dodo$dInternal.Empty; } + return Dodo$dInternal.$Doc("Text", Data$dString$dCodePoints.toCodePointArray($7).length, $7); + })()) + }; + } + return { + line: false, + doc: Dodo$dInternal.semigroupDoc.append(acc.doc)((() => { + const $7 = power1(" ")(v1$1._1); + if ($7 === "") { return Dodo$dInternal.Empty; } + return Dodo$dInternal.$Doc("Text", Data$dString$dCodePoints.toCodePointArray($7).length, $7); + })()) + }; + } + $runtime.fail(); + })({line: false, doc: Dodo$dInternal.Empty})(tok.trailingComments).doc)))(v2._1.init))(Dodo$dInternal.semigroupDoc.append(Data$dFoldable.foldlArray(acc => v1$1 => { + if (v1$1.tag === "Comment") { + if (Data$dString$dCodeUnits.take(2)(v1$1._1) === "--") { + return { + line: false, + doc: Dodo$dInternal.semigroupDoc.append(acc.doc)((() => { + if (v1$1._1 === "") { return Dodo$dInternal.Empty; } + return Dodo$dInternal.$Doc("Text", Data$dString$dCodePoints.toCodePointArray(v1$1._1).length, v1$1._1); + })()) + }; + } + return {line: false, doc: Dodo$dInternal.semigroupDoc.append(acc.doc)(lines(Data$dFunctor.arrayMap(Dodo.text)(Tidy$dUtil.splitLines(v1$1._1))))}; + } + if (v1$1.tag === "Line") { return {line: true, doc: Dodo$dInternal.semigroupDoc.append(acc.doc)(power(Dodo$dInternal.Break)(v1$1._2))}; } + if (v1$1.tag === "Space") { + if (acc.line) { + return { + line: false, + doc: Dodo$dInternal.semigroupDoc.append(acc.doc)((() => { + const $6 = power1(" ")(max(0)(v1$1._1 - v3.nextIndent | 0)); + if ($6 === "") { return Dodo$dInternal.Empty; } + return Dodo$dInternal.$Doc("Text", Data$dString$dCodePoints.toCodePointArray($6).length, $6); + })()) + }; + } + return { + line: false, + doc: Dodo$dInternal.semigroupDoc.append(acc.doc)((() => { + const $6 = power1(" ")(v1$1._1); + if ($6 === "") { return Dodo$dInternal.Empty; } + return Dodo$dInternal.$Doc("Text", Data$dString$dCodePoints.toCodePointArray($6).length, $6); + })()) + }; + } + $runtime.fail(); + })({line: false, doc: Dodo$dInternal.Empty})(v2._1.last.leadingComments).doc)((() => { + const $4 = Tidy$dToken.printToken(Tidy$dToken.UnicodeSource)(v2._1.last.value); + if ($4 === "") { return Dodo$dInternal.Empty; } + return Dodo$dInternal.$Doc("Text", Data$dString$dCodePoints.toCodePointArray($4).length, $4); + })()))) + ); + if ($3.tag === "Empty") { return Tidy$dDoc.monoidFormatDoc.mempty; } + return {doc: $3, leading: Tidy$dDoc.monoidLeadingComment.mempty, isEmpty: false, multiline: false, trailing: Tidy$dDoc.monoidTrailingComment.mempty}; + })()); + } + if (v2.tag === "Nothing") { return formatToken({unicode: Tidy$dToken.UnicodeSource})(v1._1.head); } + $runtime.fail(); + } + if (v1.tag === "Nothing") { return Tidy$dDoc.monoidFormatDoc.mempty; } + $runtime.fail(); + } +}; +const formatListTail = alignment => format => conf => Tidy$dDoc.joinWithMap(Data$dFoldable.foldableArray)(Tidy$dDoc.softBreak)(v => Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc( + "Text", + 1, + " " +))))(formatToken(conf)(v._1))(formatListElem(alignment)(format)(conf)(v._2))); +const formatList = openSpace => closeSpace => alignment => grouped => format => conf => v => { + const listElems = closeSpace(Tidy$dDoc.softBreak(formatListElem(alignment)(format)(conf)(v.head))(formatListTail(alignment)(format)(conf)(v.tail)))(formatToken(conf)(v.close)); + if (grouped.tag === "Grouped") { return Tidy$dDoc.flexGroup(openSpace(formatToken(conf)(v.open))(listElems)); } + if (grouped.tag === "NotGrouped") { return openSpace(formatToken(conf)(v.open))(listElems); } + $runtime.fail(); +}; +const formatDelimited = openSpace => closeSpace => alignment => grouped => format => conf => v => { + if (v.value.tag === "Nothing") { return formatEmptyList(conf)({open: v.open, close: v.close}); } + if (v.value.tag === "Just") { + return formatList(openSpace)(closeSpace)(alignment)(grouped)(format)(conf)({open: v.open, head: v.value._1.head, tail: v.value._1.tail, close: v.close}); + } + $runtime.fail(); +}; +const formatDelimitedNonEmpty = openSpace => closeSpace => alignment => grouped => format => conf => v => formatList(openSpace)(closeSpace)(alignment)(grouped)(format)(conf)({ + open: v.open, + head: v.value.head, + tail: v.value.tail, + close: v.close +}); +const formatOneOrDelimited = format => conf => v => { + if (v.tag === "One") { return format(conf)(v._1); } + if (v.tag === "Many") { return formatDelimitedNonEmpty(Tidy$dDoc.softSpace)(Tidy$dDoc.softBreak)(2)(NotGrouped)(format)(conf)(v._1); } + $runtime.fail(); +}; +const formatName = conf => v => formatToken(conf)(v.token); +const formatDataMembers = conf => v => { + if (v.tag === "DataAll") { return formatToken(conf)(v._1); } + if (v.tag === "DataEnumerated") { return formatDelimited(Tidy$dDoc.softSpace)(Tidy$dDoc.softBreak)(2)(NotGrouped)(formatName)(conf)(v._1); } + $runtime.fail(); +}; +const formatExport = conf => v => { + if (v.tag === "ExportValue") { return formatToken(conf)(v._1.token); } + if (v.tag === "ExportOp") { return formatToken(conf)(v._1.token); } + if (v.tag === "ExportType") { + return Tidy$dDoc.flexGroup(Tidy$dDoc.softBreak(formatToken(conf)(v._1.token))(Tidy$dDoc.indent((() => { + if (v._2.tag === "Nothing") { return Tidy$dDoc.monoidFormatDoc.mempty; } + if (v._2.tag === "Just") { return formatDataMembers(conf)(v._2._1); } + $runtime.fail(); + })()))); + } + if (v.tag === "ExportTypeOp") { + return Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " "))))(formatToken(conf)(v._1))((() => { + const $2 = formatToken(conf)(v._2.token); + if ($2.leading.lines > 0) { + return { + doc: $2.doc, + isEmpty: $2.isEmpty, + leading: {doc: $2.leading.doc, left: $2.leading.left, lines: 0, multiline: $2.leading.multiline, right: $2.leading.right}, + multiline: true, + trailing: $2.trailing + }; + } + return $2; + })()); + } + if (v.tag === "ExportClass") { + return Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " "))))(formatToken(conf)(v._1))((() => { + const $2 = formatToken(conf)(v._2.token); + if ($2.leading.lines > 0) { + return { + doc: $2.doc, + isEmpty: $2.isEmpty, + leading: {doc: $2.leading.doc, left: $2.leading.left, lines: 0, multiline: $2.leading.multiline, right: $2.leading.right}, + multiline: true, + trailing: $2.trailing + }; + } + return $2; + })()); + } + if (v.tag === "ExportModule") { + return Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " "))))(formatToken(conf)(v._1))((() => { + const $2 = formatToken(conf)(v._2.token); + if ($2.leading.lines > 0) { + return { + doc: $2.doc, + isEmpty: $2.isEmpty, + leading: {doc: $2.leading.doc, left: $2.leading.left, lines: 0, multiline: $2.leading.multiline, right: $2.leading.right}, + multiline: true, + trailing: $2.trailing + }; + } + return $2; + })()); + } + if (v.tag === "ExportError") { return conf.formatError(v._1); } + $runtime.fail(); +}; +const formatFundep = conf => v => { + if (v.tag === "FundepDetermined") { + return Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " "))))(formatToken(conf)(v._1))(Tidy$dDoc.joinWithMap(Data$dFoldable.foldableArray)(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc( + "Text", + 1, + " " + )))))(formatName(conf))(v._2)); + } + if (v.tag === "FundepDetermines") { + return Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " "))))(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc( + "Text", + 1, + " " + ))))(Tidy$dDoc.joinWithMap(Data$dFoldable.foldableArray)(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " ")))))(formatName(conf))(v._1))(formatToken(conf)(v._2)))(Tidy$dDoc.joinWithMap(Data$dFoldable.foldableArray)(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc( + "Text", + 1, + " " + )))))(formatName(conf))(v._3)); + } + $runtime.fail(); +}; +const formatImport = conf => v => { + if (v.tag === "ImportValue") { return formatToken(conf)(v._1.token); } + if (v.tag === "ImportOp") { return formatToken(conf)(v._1.token); } + if (v.tag === "ImportType") { + return Tidy$dDoc.flexGroup(Tidy$dDoc.softBreak(formatToken(conf)(v._1.token))(Tidy$dDoc.indent((() => { + if (v._2.tag === "Nothing") { return Tidy$dDoc.monoidFormatDoc.mempty; } + if (v._2.tag === "Just") { return formatDataMembers(conf)(v._2._1); } + $runtime.fail(); + })()))); + } + if (v.tag === "ImportTypeOp") { + return Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " "))))(formatToken(conf)(v._1))((() => { + const $2 = formatToken(conf)(v._2.token); + if ($2.leading.lines > 0) { + return { + doc: $2.doc, + isEmpty: $2.isEmpty, + leading: {doc: $2.leading.doc, left: $2.leading.left, lines: 0, multiline: $2.leading.multiline, right: $2.leading.right}, + multiline: true, + trailing: $2.trailing + }; + } + return $2; + })()); + } + if (v.tag === "ImportClass") { + return Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " "))))(formatToken(conf)(v._1))((() => { + const $2 = formatToken(conf)(v._2.token); + if ($2.leading.lines > 0) { + return { + doc: $2.doc, + isEmpty: $2.isEmpty, + leading: {doc: $2.leading.doc, left: $2.leading.left, lines: 0, multiline: $2.leading.multiline, right: $2.leading.right}, + multiline: true, + trailing: $2.trailing + }; + } + return $2; + })()); + } + if (v.tag === "ImportError") { return conf.formatError(v._1); } + $runtime.fail(); +}; +const formatImportDecl = conf => v => { + const formatImportQualified = v1 => Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " "))))(formatToken(conf)(v1._1))((() => { + const $3 = formatToken(conf)(v1._2.token); + if ($3.leading.lines > 0) { + return { + doc: $3.doc, + isEmpty: $3.isEmpty, + leading: {doc: $3.leading.doc, left: $3.leading.left, lines: 0, multiline: $3.leading.multiline, right: $3.leading.right}, + multiline: true, + trailing: $3.trailing + }; + } + return $3; + })()); + return Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " "))))(formatToken(conf)(v.keyword))(Tidy$dDoc.indent((() => { + const $3 = (() => { + if (v.names.tag === "Just") { + if (v.names._1._1.tag === "Just") { + return Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " "))))(Tidy$dDoc.flexSpaceBreak(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc( + "Text", + 1, + " " + ))))(formatToken(conf)(v.module.token))((() => { + const $3 = formatToken(conf)(v.names._1._1._1); + if ($3.leading.lines > 0) { + return { + doc: $3.doc, + isEmpty: $3.isEmpty, + leading: {doc: $3.leading.doc, left: $3.leading.left, lines: 0, multiline: $3.leading.multiline, right: $3.leading.right}, + multiline: true, + trailing: $3.trailing + }; + } + return $3; + })()))((() => { + const $3 = formatDelimitedNonEmpty(Tidy$dDoc.softSpace)(Tidy$dDoc.softBreak)(2)(NotGrouped)(formatImport)(conf)(v.names._1._2); + if ($3.leading.lines > 0) { + return { + doc: $3.doc, + isEmpty: $3.isEmpty, + leading: {doc: $3.leading.doc, left: $3.leading.left, lines: 0, multiline: $3.leading.multiline, right: $3.leading.right}, + multiline: true, + trailing: $3.trailing + }; + } + return $3; + })()))((() => { + const $3 = (() => { + if (v.qualified.tag === "Nothing") { return Tidy$dDoc.monoidFormatDoc.mempty; } + if (v.qualified.tag === "Just") { return formatImportQualified(v.qualified._1); } + $runtime.fail(); + })(); + if ($3.leading.lines > 0) { + return { + doc: $3.doc, + isEmpty: $3.isEmpty, + leading: {doc: $3.leading.doc, left: $3.leading.left, lines: 0, multiline: $3.leading.multiline, right: $3.leading.right}, + multiline: true, + trailing: $3.trailing + }; + } + return $3; + })()); + } + if (v.names._1._1.tag === "Nothing") { + return Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " "))))(Tidy$dDoc.flexSpaceBreak(formatToken(conf)(v.module.token))((() => { + const $3 = formatDelimitedNonEmpty(Tidy$dDoc.softSpace)(Tidy$dDoc.softBreak)(2)(NotGrouped)(formatImport)(conf)(v.names._1._2); + if ($3.leading.lines > 0) { + return { + doc: $3.doc, + isEmpty: $3.isEmpty, + leading: {doc: $3.leading.doc, left: $3.leading.left, lines: 0, multiline: $3.leading.multiline, right: $3.leading.right}, + multiline: true, + trailing: $3.trailing + }; + } + return $3; + })()))((() => { + const $3 = (() => { + if (v.qualified.tag === "Nothing") { return Tidy$dDoc.monoidFormatDoc.mempty; } + if (v.qualified.tag === "Just") { return formatImportQualified(v.qualified._1); } + $runtime.fail(); + })(); + if ($3.leading.lines > 0) { + return { + doc: $3.doc, + isEmpty: $3.isEmpty, + leading: {doc: $3.leading.doc, left: $3.leading.left, lines: 0, multiline: $3.leading.multiline, right: $3.leading.right}, + multiline: true, + trailing: $3.trailing + }; + } + return $3; + })()); + } + $runtime.fail(); + } + if (v.names.tag === "Nothing") { + return Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " "))))(formatToken(conf)(v.module.token))((() => { + const $3 = (() => { + if (v.qualified.tag === "Nothing") { return Tidy$dDoc.monoidFormatDoc.mempty; } + if (v.qualified.tag === "Just") { return formatImportQualified(v.qualified._1); } + $runtime.fail(); + })(); + if ($3.leading.lines > 0) { + return { + doc: $3.doc, + isEmpty: $3.isEmpty, + leading: {doc: $3.leading.doc, left: $3.leading.left, lines: 0, multiline: $3.leading.multiline, right: $3.leading.right}, + multiline: true, + trailing: $3.trailing + }; + } + return $3; + })()); + } + $runtime.fail(); + })(); + if ($3.leading.lines > 0) { + return { + doc: $3.doc, + isEmpty: $3.isEmpty, + leading: {doc: $3.leading.doc, left: $3.leading.left, lines: 0, multiline: $3.leading.multiline, right: $3.leading.right}, + multiline: true, + trailing: $3.trailing + }; + } + return $3; + })())); +}; +const formatParens = format => conf => v => Tidy$dDoc.joinDoc(Tidy$dDoc.force(Tidy$dDoc.identity))(formatToken(conf)(v.open))(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Tidy$dDoc.identity))((() => { + const $3 = format(conf)(v.value); + if ($3.leading.lines > 0) { + return { + doc: $3.doc, + isEmpty: $3.isEmpty, + leading: {doc: $3.leading.doc, left: $3.leading.left, lines: 0, multiline: $3.leading.multiline, right: $3.leading.right}, + multiline: true, + trailing: $3.trailing + }; + } + return $3; +})())(formatToken(conf)(v.close))); +const formatParensBlock = format => conf => v => Tidy$dDoc.flexGroup(Tidy$dDoc.softSpace(formatToken(conf)(v.open))(Tidy$dDoc.softBreak(Tidy$dDoc.align(2)((() => { + const $3 = format(conf)(v.value); + if ($3.leading.lines > 0) { + return { + doc: $3.doc, + isEmpty: $3.isEmpty, + leading: {doc: $3.leading.doc, left: $3.leading.left, lines: 0, multiline: $3.leading.multiline, right: $3.leading.right}, + multiline: true, + trailing: $3.trailing + }; + } + return $3; +})()))(formatToken(conf)(v.close)))); +const formatQualifiedName = conf => v => formatToken(conf)(v.token); +const formatBasicListNonEmpty = /* #__PURE__ */ (() => formatDelimitedNonEmpty(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc( + "Text", + 1, + " " +)))))(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("FlexAlt", Dodo$dInternal.$Doc("Text", 1, " "), Dodo$dInternal.Break)))))(2))(); +const formatBasicList = /* #__PURE__ */ (() => formatDelimited(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " ")))))(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc( + "FlexAlt", + Dodo$dInternal.$Doc("Text", 1, " "), + Dodo$dInternal.Break +)))))(2))(); +const flatten = x => { + const $1 = Data$dArray.uncons(x); + if ($1.tag === "Nothing") { return Tidy$dDoc.monoidFormatDoc.mempty; } + if ($1.tag === "Just") { + return Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " "))))($1._1.head)(Tidy$dDoc.indent(Tidy$dDoc.joinWithMap(Data$dFoldable.foldableArray)(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc( + "Text", + 1, + " " + )))))(Tidy$dDoc.anchor)($1._1.tail))); + } + $runtime.fail(); +}; +const formatTypeVarBinding = conf => v => { + if (v.tag === "TypeVarKinded") { return formatParensBlock(formatKindedTypeVarBinding)(conf)(v._1); } + if (v.tag === "TypeVarName") { return formatToken(conf)(v._1.token); } + $runtime.fail(); +}; +const formatType = conf => { + const $1 = formatHangingType(conf); + return x => Tidy$dHang.toFormatDoc($1(x)); +}; +const formatRowLabeled = conf => v => Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " "))))(formatToken(conf)(v.label.token))(Tidy$dDoc.indent(Tidy$dDoc.flexSpaceBreak((() => { + const $2 = formatToken(conf)(v.separator); + if ($2.leading.lines > 0) { + return { + doc: $2.doc, + isEmpty: $2.isEmpty, + leading: {doc: $2.leading.doc, left: $2.leading.left, lines: 0, multiline: $2.leading.multiline, right: $2.leading.right}, + multiline: true, + trailing: $2.trailing + }; + } + return $2; +})())((() => { + const $2 = Tidy$dHang.toFormatDoc(formatHangingType(conf)(v.value)); + if ($2.leading.lines > 0) { + return { + doc: $2.doc, + isEmpty: $2.isEmpty, + leading: {doc: $2.leading.doc, left: $2.leading.left, lines: 0, multiline: $2.leading.multiline, right: $2.leading.right}, + multiline: true, + trailing: $2.trailing + }; + } + return $2; +})()))); +const formatRow = openSpace => closeSpace => conf => v => { + if (v.value.tail.tag === "Nothing") { + if (v.value.labels.tag === "Nothing") { return formatEmptyList(conf)({open: v.open, close: v.close}); } + if (v.value.labels.tag === "Just") { + return formatDelimitedNonEmpty(openSpace)(closeSpace)(2)(Grouped)(formatRowLabeled)(conf)({open: v.open, value: v.value.labels._1, close: v.close}); + } + $runtime.fail(); + } + if (v.value.tail.tag === "Just") { + if (v.value.labels.tag === "Nothing") { + return closeSpace(openSpace(formatToken(conf)(v.open))(flatten([formatToken(conf)(v.value.tail._1._1), Tidy$dHang.toFormatDoc(formatHangingType(conf)(v.value.tail._1._2))])))(formatToken(conf)(v.close)); + } + if (v.value.labels.tag === "Just") { + return closeSpace(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc( + "FlexAlt", + Dodo$dInternal.$Doc("Text", 1, " "), + Dodo$dInternal.Break + ))))(Tidy$dDoc.softBreak(openSpace(formatToken(conf)(v.open))(formatListElem(2)(formatRowLabeled)(conf)(v.value.labels._1.head)))(formatListTail(2)(formatRowLabeled)(conf)(v.value.labels._1.tail)))(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc( + "Text", + 1, + " " + ))))(formatToken(conf)(v.value.tail._1._1))(formatListElem(2)(formatType)(conf)(v.value.tail._1._2))))(formatToken(conf)(v.close)); + } + $runtime.fail(); + } + $runtime.fail(); +}; +const formatMonotype = conf => { + const $1 = formatHangingMonotype(conf); + return x => Tidy$dHang.toFormatDoc($1(x)); +}; +const formatKindedTypeVarBinding = conf => v => Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " "))))(formatToken(conf)(v.label.token))(Tidy$dDoc.indent(Tidy$dDoc.flexSpaceBreak((() => { + const $2 = formatToken(conf)(v.separator); + if ($2.leading.lines > 0) { + return { + doc: $2.doc, + isEmpty: $2.isEmpty, + leading: {doc: $2.leading.doc, left: $2.leading.left, lines: 0, multiline: $2.leading.multiline, right: $2.leading.right}, + multiline: true, + trailing: $2.trailing + }; + } + return $2; +})())(Tidy$dHang.toFormatDoc(formatHangingType(conf)(v.value))))); +const formatHangingType = conf => { + const $1 = formatHangingPolytype(identity)(conf); + return x => $1(toPolytype(x)); +}; +const formatHangingPolytype = ind => conf => v => { + if (v.init.length === 0) { return formatHangingMonotype(conf)(v.last); } + if (conf.typeArrowPlacement.tag === "TypeArrowFirst") { + const isUnicode = Data$dArray.all((() => { + if (conf.unicode.tag === "UnicodeAlways") { return v$1 => true; } + if (conf.unicode.tag === "UnicodeNever") { return v$1 => false; } + if (conf.unicode.tag === "UnicodeSource") { + return v1 => { + if (v1.tag === "PolyArrow") { + if (v1._2.value.tag === "TokRightArrow") { return v1._2.value._1.tag === "Unicode"; } + if (v1._2.value.tag === "TokRightFatArrow") { return v1._2.value._1.tag === "Unicode"; } + return false; + } + if (v1.tag === "PolyForall") { + if (v1._1.value.tag === "TokForall") { return v1._1.value._1.tag === "Unicode"; } + return false; + } + return false; + }; + } + $runtime.fail(); + })())(v.init); + return Tidy$dHang.$HangingDoc( + "HangBreak", + Tidy$dDoc.flexGroup(Data$dFoldable.foldlArray(k => v1 => { + if (v1.tag === "PolyForall") { + return doc => Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " "))))(Tidy$dDoc.softBreak(k(Data$dFoldable.foldlArray(doc$1 => tyVar => Tidy$dDoc.flexSpaceBreak(doc$1)(Tidy$dDoc.indent(formatTypeVarBinding(conf)(tyVar))))(formatToken(conf)(v1._1))(v1._2)))(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Tidy$dDoc.identity))((() => { + if (!isUnicode) { + return { + doc: Dodo$dInternal.$Doc("FlexAlt", Dodo$dInternal.Empty, Dodo$dInternal.$Doc("Text", 1, " ")), + leading: Tidy$dDoc.monoidLeadingComment.mempty, + isEmpty: false, + multiline: false, + trailing: Tidy$dDoc.monoidTrailingComment.mempty + }; + } + return Tidy$dDoc.monoidFormatDoc.mempty; + })())((() => { + const $7 = formatToken(conf)(v1._3); + if ($7.leading.lines > 0) { + return { + doc: $7.doc, + isEmpty: $7.isEmpty, + leading: {doc: $7.leading.doc, left: $7.leading.left, lines: 0, multiline: $7.leading.multiline, right: $7.leading.right}, + multiline: true, + trailing: $7.trailing + }; + } + return $7; + })())))((() => { + const $7 = Tidy$dDoc.alignCurrentColumn(doc); + if ($7.leading.lines > 0) { + return { + doc: $7.doc, + isEmpty: $7.isEmpty, + leading: {doc: $7.leading.doc, left: $7.leading.left, lines: 0, multiline: $7.leading.multiline, right: $7.leading.right}, + multiline: true, + trailing: $7.trailing + }; + } + return $7; + })()); + } + if (v1.tag === "PolyArrow") { + return doc => Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " "))))(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc( + "FlexAlt", + Dodo$dInternal.$Doc("Text", 1, " "), + Dodo$dInternal.Break + ))))(k(Tidy$dDoc.flexGroup(Tidy$dHang.toFormatDoc(formatHangingMonotype(conf)(v1._1)))))((() => { + const $7 = formatToken(conf)(v1._2); + if ($7.leading.lines > 0) { + return { + doc: $7.doc, + isEmpty: $7.isEmpty, + leading: {doc: $7.leading.doc, left: $7.leading.left, lines: 0, multiline: $7.leading.multiline, right: $7.leading.right}, + multiline: true, + trailing: $7.trailing + }; + } + return $7; + })()))((() => { + const $7 = Tidy$dDoc.alignCurrentColumn(doc); + if ($7.leading.lines > 0) { + return { + doc: $7.doc, + isEmpty: $7.isEmpty, + leading: {doc: $7.leading.doc, left: $7.leading.left, lines: 0, multiline: $7.leading.multiline, right: $7.leading.right}, + multiline: true, + trailing: $7.trailing + }; + } + return $7; + })()); + } + $runtime.fail(); + })(ind)(v.init)((() => { + const $4 = Tidy$dHang.toFormatDoc(formatHangingMonotype(conf)(v.last)); + if ($4.leading.lines > 0) { + return { + doc: $4.doc, + isEmpty: $4.isEmpty, + leading: {doc: $4.leading.doc, left: $4.leading.left, lines: 0, multiline: $4.leading.multiline, right: $4.leading.right}, + multiline: true, + trailing: $4.trailing + }; + } + return $4; + })())) + ); + } + if (conf.typeArrowPlacement.tag === "TypeArrowLast") { + return Tidy$dHang.$HangingDoc( + "HangBreak", + Tidy$dDoc.flexGroup(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc( + "FlexAlt", + Dodo$dInternal.$Doc("Text", 1, " "), + Dodo$dInternal.Break + ))))(Tidy$dDoc.joinWithMap(Data$dFoldable.foldableArray)(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc( + "FlexAlt", + Dodo$dInternal.$Doc("Text", 1, " "), + Dodo$dInternal.Break + )))))(v1 => { + if (v1.tag === "PolyForall") { + return Tidy$dDoc.joinDoc(Tidy$dDoc.force(Tidy$dDoc.identity))(Data$dFoldable.foldlArray(doc => tyVar => Tidy$dDoc.flexSpaceBreak(doc)(Tidy$dDoc.indent(formatTypeVarBinding(conf)(tyVar))))(formatToken(conf)(v1._1))(v1._2))(Tidy$dDoc.indent((() => { + const $4 = formatToken(conf)(v1._3); + if ($4.leading.lines > 0) { + return { + doc: $4.doc, + isEmpty: $4.isEmpty, + leading: {doc: $4.leading.doc, left: $4.leading.left, lines: 0, multiline: $4.leading.multiline, right: $4.leading.right}, + multiline: true, + trailing: $4.trailing + }; + } + return $4; + })())); + } + if (v1.tag === "PolyArrow") { + return Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " "))))(Tidy$dDoc.flexGroup(Tidy$dHang.toFormatDoc(formatHangingPolytype(identity)(conf)(toPolytype(v1._1)))))(Tidy$dDoc.indent((() => { + const $4 = formatToken(conf)(v1._2); + if ($4.leading.lines > 0) { + return { + doc: $4.doc, + isEmpty: $4.isEmpty, + leading: {doc: $4.leading.doc, left: $4.leading.left, lines: 0, multiline: $4.leading.multiline, right: $4.leading.right}, + multiline: true, + trailing: $4.trailing + }; + } + return $4; + })())); + } + $runtime.fail(); + })(v.init))(Tidy$dDoc.flexGroup(Tidy$dHang.toFormatDoc(formatHangingMonotype(conf)(v.last))))) + ); + } + $runtime.fail(); +}; +const formatHangingMonotype = conf => v => { + if (v.tag === "TypeVar") { return Tidy$dHang.$HangingDoc("HangBreak", Tidy$dDoc.flexGroup(formatToken(conf)(v._1.token))); } + if (v.tag === "TypeConstructor") { return Tidy$dHang.$HangingDoc("HangBreak", Tidy$dDoc.flexGroup(formatToken(conf)(v._1.token))); } + if (v.tag === "TypeWildcard") { return Tidy$dHang.$HangingDoc("HangBreak", Tidy$dDoc.flexGroup(formatToken(conf)(v._1))); } + if (v.tag === "TypeHole") { return Tidy$dHang.$HangingDoc("HangBreak", Tidy$dDoc.flexGroup(formatToken(conf)(v._1.token))); } + if (v.tag === "TypeString") { return Tidy$dHang.$HangingDoc("HangBreak", Tidy$dDoc.flexGroup(formatToken(conf)(v._1))); } + if (v.tag === "TypeInt") { + return Tidy$dHang.$HangingDoc( + "HangBreak", + Tidy$dDoc.flexGroup(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Tidy$dDoc.identity))((() => { + if (v._1.tag === "Nothing") { return Tidy$dDoc.monoidFormatDoc.mempty; } + if (v._1.tag === "Just") { return formatToken(conf)(v._1._1); } + $runtime.fail(); + })())(formatToken(conf)(v._2))) + ); + } + if (v.tag === "TypeArrowName") { return Tidy$dHang.$HangingDoc("HangBreak", Tidy$dDoc.flexGroup(formatToken(conf)(v._1))); } + if (v.tag === "TypeOpName") { return Tidy$dHang.$HangingDoc("HangBreak", Tidy$dDoc.flexGroup(formatToken(conf)(v._1.token))); } + if (v.tag === "TypeRow") { return Tidy$dHang.$HangingDoc("HangBreak", Tidy$dDoc.flexGroup(formatRow(Tidy$dDoc.softSpace)(Tidy$dDoc.softBreak)(conf)(v._1))); } + if (v.tag === "TypeRecord") { + return Tidy$dHang.$HangingDoc( + "HangBreak", + Tidy$dDoc.flexGroup(formatRow(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " ")))))(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc( + "FlexAlt", + Dodo$dInternal.$Doc("Text", 1, " "), + Dodo$dInternal.Break + )))))(conf)(v._1)) + ); + } + if (v.tag === "TypeApp") { + return Tidy$dHang.hangApp(formatHangingPolytype(identity)(conf)(toPolytype(v._1)))(Data$dFunctor.arrayMap(x => formatHangingPolytype(identity)(conf)(toPolytype(x)))(v._2)); + } + if (v.tag === "TypeParens") { return Tidy$dHang.$HangingDoc("HangBreak", Tidy$dDoc.flexGroup(formatParensBlock(formatType)(conf)(v._1))); } + if (v.tag === "TypeKinded") { + return Tidy$dHang.$HangingDoc( + "HangBreak", + Tidy$dDoc.flexGroup(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " "))))(Tidy$dHang.toFormatDoc(formatHangingPolytype(identity)(conf)(toPolytype(v._1))))(Tidy$dDoc.indent(Tidy$dDoc.flexSpaceBreak((() => { + const $2 = formatToken(conf)(v._2); + if ($2.leading.lines > 0) { + return { + doc: $2.doc, + isEmpty: $2.isEmpty, + leading: {doc: $2.leading.doc, left: $2.leading.left, lines: 0, multiline: $2.leading.multiline, right: $2.leading.right}, + multiline: true, + trailing: $2.trailing + }; + } + return $2; + })())((() => { + const $2 = Tidy$dHang.toFormatDoc(formatHangingPolytype(identity)(conf)(toPolytype(v._3))); + if ($2.leading.lines > 0) { + return { + doc: $2.doc, + isEmpty: $2.isEmpty, + leading: {doc: $2.leading.doc, left: $2.leading.left, lines: 0, multiline: $2.leading.multiline, right: $2.leading.right}, + multiline: true, + trailing: $2.trailing + }; + } + return $2; + })())))) + ); + } + if (v.tag === "TypeOp") { + return formatHangingOperatorTree(formatQualifiedName)(formatHangingType)(conf)(Tidy$dPrecedence.toOperatorTree(conf.operators)(v$1 => Tidy$dPrecedence.$QualifiedOperator( + v$1.module, + Tidy$dPrecedence.OperatorType, + v$1.name + ))(v._1)(v._2)); + } + if (v.tag === "TypeError") { return Tidy$dHang.$HangingDoc("HangBreak", Tidy$dDoc.flexGroup(conf.formatError(v._1))); } + if (v.tag === "TypeArrow") { return Partial._crashWith("formatMonotype: TypeArrow handled by formatPolytype"); } + if (v.tag === "TypeConstrained") { return Partial._crashWith("formatMonotype: TypeConstrained handled by formatPolytype"); } + if (v.tag === "TypeForall") { return Partial._crashWith("formatMonotype: TypeForall handled by formatPolytype"); } + $runtime.fail(); +}; +const formatHangingDataCtor = conf => v => { + const hangingName = Tidy$dHang.$HangingDoc("HangBreak", Tidy$dDoc.flexGroup(formatToken(conf)(v.name.token))); + if (v.fields.length > 0) { return Tidy$dHang.hangApp(hangingName)(Data$dFunctor.arrayMap(x => formatHangingPolytype(identity)(conf)(toPolytype(x)))(v.fields)); } + return hangingName; +}; +const formatDataCtor = conf => x => Tidy$dHang.toFormatDoc(formatHangingDataCtor(conf)(x)); +const formatConstraints = conf => v => Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " "))))(formatOneOrDelimited(formatType)(conf)(v._1))((() => { + const $2 = formatToken(conf)((() => { + if (v._2.value.tag === "TokOperator") { + if (v._2.value._1.tag === "Nothing") { + if (v._2.value._2 === "<=") { + if ( + (() => { + if (conf.unicode.tag === "UnicodeSource") { return false; } + return conf.unicode.tag === "UnicodeAlways"; + })() + ) { + return { + value: PureScript$dCST$dTypes.$Token("TokOperator", Data$dMaybe.Nothing, "⇐"), + leadingComments: v._2.leadingComments, + range: v._2.range, + trailingComments: v._2.trailingComments + }; + } + return v._2; + } + if (v._2.value._2 === "⇐") { + if ( + (() => { + if (conf.unicode.tag === "UnicodeSource") { return false; } + if (conf.unicode.tag === "UnicodeAlways") { return false; } + return conf.unicode.tag === "UnicodeNever"; + })() + ) { + return { + value: PureScript$dCST$dTypes.$Token("TokOperator", Data$dMaybe.Nothing, "<="), + leadingComments: v._2.leadingComments, + range: v._2.range, + trailingComments: v._2.trailingComments + }; + } + return v._2; + } + return v._2; + } + return v._2; + } + return v._2; + })()); + if ($2.leading.lines > 0) { + return { + doc: $2.doc, + isEmpty: $2.isEmpty, + leading: {doc: $2.leading.doc, left: $2.leading.left, lines: 0, multiline: $2.leading.multiline, right: $2.leading.right}, + multiline: true, + trailing: $2.trailing + }; + } + return $2; +})()); +const formatInstanceHead = conf => v => { + const hdTypes = Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("FlexAlt", Dodo$dInternal.$Doc("Text", 1, " "), Dodo$dInternal.Break))))((() => { + if (v._1.constraints.tag === "Nothing") { return Tidy$dDoc.monoidFormatDoc.mempty; } + if (v._1.constraints.tag === "Just") { return formatConstraints(conf)(v._1.constraints._1); } + $runtime.fail(); + })())(Tidy$dDoc.flexGroup(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " "))))(formatToken(conf)(v._1.className.token))(Tidy$dDoc.indent(Tidy$dDoc.joinWithMap(Data$dFoldable.foldableArray)(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc( + "FlexAlt", + Dodo$dInternal.$Doc("Text", 1, " "), + Dodo$dInternal.Break + )))))(x => Tidy$dHang.toFormatDoc(formatHangingPolytype(identity)(conf)(toPolytype(x))))(v._1.types))))); + if (v._1.name.tag === "Just") { + return Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " "))))(Tidy$dDoc.flexSpaceBreak(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc( + "Text", + 1, + " " + ))))(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " "))))(formatToken(conf)(v._1.keyword))((() => { + const $3 = formatToken(conf)(v._1.name._1._1.token); + if ($3.leading.lines > 0) { + return { + doc: $3.doc, + isEmpty: $3.isEmpty, + leading: {doc: $3.leading.doc, left: $3.leading.left, lines: 0, multiline: $3.leading.multiline, right: $3.leading.right}, + multiline: true, + trailing: $3.trailing + }; + } + return $3; + })()))((() => { + const $3 = formatToken(conf)(v._1.name._1._2); + if ($3.leading.lines > 0) { + return { + doc: $3.doc, + isEmpty: $3.isEmpty, + leading: {doc: $3.leading.doc, left: $3.leading.left, lines: 0, multiline: $3.leading.multiline, right: $3.leading.right}, + multiline: true, + trailing: $3.trailing + }; + } + return $3; + })()))(Tidy$dDoc.indent(hdTypes)))(Tidy$dDoc.indent((() => { + if (v._2.tag === "Nothing") { return Tidy$dDoc.monoidFormatDoc.mempty; } + if (v._2.tag === "Just") { return formatToken(conf)(v._2._1); } + $runtime.fail(); + })())); + } + if (v._1.name.tag === "Nothing") { + return Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " "))))(Tidy$dDoc.flexSpaceBreak(formatToken(conf)(v._1.keyword))(Tidy$dDoc.indent(hdTypes)))(Tidy$dDoc.indent((() => { + if (v._2.tag === "Nothing") { return Tidy$dDoc.monoidFormatDoc.mempty; } + if (v._2.tag === "Just") { return formatToken(conf)(v._2._1); } + $runtime.fail(); + })())); + } + $runtime.fail(); +}; +const formatClassHead = conf => v => Tidy$dDoc.flexSpaceBreak(formatToken(conf)(v._1.keyword))(Tidy$dDoc.indent(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc( + "Text", + 1, + " " +))))(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("FlexAlt", Dodo$dInternal.$Doc("Text", 1, " "), Dodo$dInternal.Break))))(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc( + "FlexAlt", + Dodo$dInternal.$Doc("Text", 1, " "), + Dodo$dInternal.Break +))))((() => { + const $2 = (() => { + if (v._1.super.tag === "Nothing") { return Tidy$dDoc.monoidFormatDoc.mempty; } + if (v._1.super.tag === "Just") { return formatConstraints(conf)(v._1.super._1); } + $runtime.fail(); + })(); + if ($2.leading.lines > 0) { + return { + doc: $2.doc, + isEmpty: $2.isEmpty, + leading: {doc: $2.leading.doc, left: $2.leading.left, lines: 0, multiline: $2.leading.multiline, right: $2.leading.right}, + multiline: true, + trailing: $2.trailing + }; + } + return $2; +})())(Tidy$dDoc.flexGroup(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc( + "FlexAlt", + Dodo$dInternal.$Doc("Text", 1, " "), + Dodo$dInternal.Break +))))(formatToken(conf)(v._1.name.token))(Tidy$dDoc.joinWithMap(Data$dFoldable.foldableArray)(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc( + "FlexAlt", + Dodo$dInternal.$Doc("Text", 1, " "), + Dodo$dInternal.Break +)))))(x => Tidy$dDoc.indent(formatTypeVarBinding(conf)(x)))(v._1.vars)))))(Tidy$dDoc.flexGroup((() => { + const $2 = (() => { + if (v._1.fundeps.tag === "Nothing") { return Tidy$dDoc.monoidFormatDoc.mempty; } + if (v._1.fundeps.tag === "Just") { + return Tidy$dDoc.softBreak(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " "))))(formatToken(conf)(v._1.fundeps._1._1))(formatListElem(2)(formatFundep)(conf)(v._1.fundeps._1._2.head)))(Tidy$dDoc.joinWithMap(Data$dFoldable.foldableArray)(Tidy$dDoc.softBreak)(v2 => Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc( + "Text", + 1, + " " + ))))(formatToken(conf)(v2._1))(formatListElem(2)(formatFundep)(conf)(v2._2)))(v._1.fundeps._1._2.tail)); + } + $runtime.fail(); + })(); + if ($2.leading.lines > 0) { + return { + doc: $2.doc, + isEmpty: $2.isEmpty, + leading: {doc: $2.leading.doc, left: $2.leading.left, lines: 0, multiline: $2.leading.multiline, right: $2.leading.right}, + multiline: true, + trailing: $2.trailing + }; + } + return $2; +})())))((() => { + if (v._2.tag === "Nothing") { return Tidy$dDoc.monoidFormatDoc.mempty; } + if (v._2.tag === "Just") { return formatToken(conf)(v._2._1); } + $runtime.fail(); +})()))); +const formatDataHead = conf => v => Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " "))))(formatToken(conf)(v.keyword))(Tidy$dDoc.indent(Tidy$dDoc.flexSpaceBreak((() => { + const $2 = formatToken(conf)(v.name.token); + if ($2.leading.lines > 0) { + return { + doc: $2.doc, + isEmpty: $2.isEmpty, + leading: {doc: $2.leading.doc, left: $2.leading.left, lines: 0, multiline: $2.leading.multiline, right: $2.leading.right}, + multiline: true, + trailing: $2.trailing + }; + } + return $2; +})())(Tidy$dDoc.joinWithMap(Data$dFoldable.foldableArray)(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc( + "FlexAlt", + Dodo$dInternal.$Doc("Text", 1, " "), + Dodo$dInternal.Break +)))))(formatTypeVarBinding(conf))(v.vars)))); +const formatSignature = conf => v => { + if (conf.typeArrowPlacement.tag === "TypeArrowFirst") { + const polytype = toPolytype(v.value); + const width = (() => { + if ( + (() => { + if (conf.unicode.tag === "UnicodeAlways") { return true; } + if (conf.unicode.tag === "UnicodeNever") { return false; } + if (conf.unicode.tag === "UnicodeSource") { + if (v.separator.value.tag === "TokDoubleColon") { return v.separator.value._1.tag === "Unicode"; } + return false; + } + $runtime.fail(); + })() + ) { + return 2; + } + return 3; + })(); + const formattedPolytype = formatHangingPolytype(Tidy$dDoc.align(width))(conf)(polytype); + if (polytype.init.length === 0) { + return Tidy$dDoc.flexSpaceBreak(v.label)(Tidy$dDoc.indent(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " "))))((() => { + const $5 = formatToken(conf)(v.separator); + if ($5.leading.lines > 0) { + return { + doc: $5.doc, + isEmpty: $5.isEmpty, + leading: {doc: $5.leading.doc, left: $5.leading.left, lines: 0, multiline: $5.leading.multiline, right: $5.leading.right}, + multiline: true, + trailing: $5.trailing + }; + } + return $5; + })())((() => { + const $5 = Tidy$dDoc.align(width)(Tidy$dHang.toFormatDoc(formattedPolytype)); + if ($5.leading.lines > 0) { + return { + doc: $5.doc, + isEmpty: $5.isEmpty, + leading: {doc: $5.leading.doc, left: $5.leading.left, lines: 0, multiline: $5.leading.multiline, right: $5.leading.right}, + multiline: true, + trailing: $5.trailing + }; + } + return $5; + })()))); + } + return Tidy$dDoc.flexSpaceBreak(v.label)(Tidy$dDoc.indent(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " "))))((() => { + const $5 = formatToken(conf)(v.separator); + if ($5.leading.lines > 0) { + return { + doc: $5.doc, + isEmpty: $5.isEmpty, + leading: {doc: $5.leading.doc, left: $5.leading.left, lines: 0, multiline: $5.leading.multiline, right: $5.leading.right}, + multiline: true, + trailing: $5.trailing + }; + } + return $5; + })())((() => { + const $5 = Tidy$dHang.toFormatDoc(formattedPolytype); + if ($5.leading.lines > 0) { + return { + doc: $5.doc, + isEmpty: $5.isEmpty, + leading: {doc: $5.leading.doc, left: $5.leading.left, lines: 0, multiline: $5.leading.multiline, right: $5.leading.right}, + multiline: true, + trailing: $5.trailing + }; + } + return $5; + })()))); + } + if (conf.typeArrowPlacement.tag === "TypeArrowLast") { + return Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " "))))(v.label)(Tidy$dDoc.indent(Tidy$dDoc.flexGroup(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc( + "FlexAlt", + Dodo$dInternal.$Doc("Text", 1, " "), + Dodo$dInternal.Break + ))))((() => { + const $2 = formatToken(conf)(v.separator); + if ($2.leading.lines > 0) { + return { + doc: $2.doc, + isEmpty: $2.isEmpty, + leading: {doc: $2.leading.doc, left: $2.leading.left, lines: 0, multiline: $2.leading.multiline, right: $2.leading.right}, + multiline: true, + trailing: $2.trailing + }; + } + return $2; + })())((() => { + const $2 = Tidy$dDoc.flexGroup(Tidy$dHang.toFormatDoc(formatHangingPolytype(identity)(conf)(toPolytype(v.value)))); + if ($2.leading.lines > 0) { + return { + doc: $2.doc, + isEmpty: $2.isEmpty, + leading: {doc: $2.leading.doc, left: $2.leading.left, lines: 0, multiline: $2.leading.multiline, right: $2.leading.right}, + multiline: true, + trailing: $2.trailing + }; + } + return $2; + })())))); + } + $runtime.fail(); +}; +const eqTypeArrowOption = { + eq: x => y => { + if (x.tag === "TypeArrowFirst") { return y.tag === "TypeArrowFirst"; } + if (x.tag === "TypeArrowLast") { return y.tag === "TypeArrowLast"; } + return false; + } +}; +const eqImportWrapOption = { + eq: x => y => { + if (x.tag === "ImportWrapSource") { return y.tag === "ImportWrapSource"; } + if (x.tag === "ImportWrapAuto") { return y.tag === "ImportWrapAuto"; } + return false; + } +}; +const eqImportSortOpion = { + eq: x => y => { + if (x.tag === "ImportSortSource") { return y.tag === "ImportSortSource"; } + if (x.tag === "ImportSortIde") { return y.tag === "ImportSortIde"; } + return false; + } +}; +const eqImportComparison = { + eq: x => y => { + if (x.tag === "ImportClassCmp") { + if (y.tag === "ImportClassCmp") { return x._1 === y._1; } + return false; + } + if (x.tag === "ImportTypeOpCmp") { + if (y.tag === "ImportTypeOpCmp") { return x._1 === y._1; } + return false; + } + if (x.tag === "ImportTypeCmp") { + if (y.tag === "ImportTypeCmp") { return x._1 === y._1 && x._2 === y._2 && eq5(x._3)(y._3); } + return false; + } + if (x.tag === "ImportValueCmp") { + if (y.tag === "ImportValueCmp") { return x._1 === y._1; } + return false; + } + if (x.tag === "ImportOpCmp") { + if (y.tag === "ImportOpCmp") { return x._1 === y._1; } + return false; + } + if (x.tag === "ImportErrorCmp") { return y.tag === "ImportErrorCmp"; } + return false; + } +}; +const eq10 = /* #__PURE__ */ (() => Data$dEq.eqArrayImpl(eqImportComparison.eq))(); +const eqImportModuleComparison = { + eq: x => y => x._1 === y._1 && x._2 === y._2 && eq10(x._3)(y._3) && (() => { + if (x._4.tag === "Nothing") { return y._4.tag === "Nothing"; } + if (x._4.tag === "Just") { + if (y._4.tag === "Just") { return x._4._1 === y._4._1; } + return false; + } + return false; + })() +}; +const ordImportComparison = { + compare: x => y => { + if (x.tag === "ImportClassCmp") { + if (y.tag === "ImportClassCmp") { return Data$dOrd.ordString.compare(x._1)(y._1); } + return Data$dOrdering.LT; + } + if (y.tag === "ImportClassCmp") { return Data$dOrdering.GT; } + if (x.tag === "ImportTypeOpCmp") { + if (y.tag === "ImportTypeOpCmp") { return Data$dOrd.ordString.compare(x._1)(y._1); } + return Data$dOrdering.LT; + } + if (y.tag === "ImportTypeOpCmp") { return Data$dOrdering.GT; } + if (x.tag === "ImportTypeCmp") { + if (y.tag === "ImportTypeCmp") { + const v = Data$dOrd.ordString.compare(x._1)(y._1); + if (v.tag === "LT") { return Data$dOrdering.LT; } + if (v.tag === "GT") { return Data$dOrdering.GT; } + const v1 = Data$dOrd.ordBoolean.compare(x._2)(y._2); + if (v1.tag === "LT") { return Data$dOrdering.LT; } + if (v1.tag === "GT") { return Data$dOrdering.GT; } + return compare3(x._3)(y._3); + } + return Data$dOrdering.LT; + } + if (y.tag === "ImportTypeCmp") { return Data$dOrdering.GT; } + if (x.tag === "ImportValueCmp") { + if (y.tag === "ImportValueCmp") { return Data$dOrd.ordString.compare(x._1)(y._1); } + return Data$dOrdering.LT; + } + if (y.tag === "ImportValueCmp") { return Data$dOrdering.GT; } + if (x.tag === "ImportOpCmp") { + if (y.tag === "ImportOpCmp") { return Data$dOrd.ordString.compare(x._1)(y._1); } + return Data$dOrdering.LT; + } + if (y.tag === "ImportOpCmp") { return Data$dOrdering.GT; } + if (x.tag === "ImportErrorCmp") { + if (y.tag === "ImportErrorCmp") { return Data$dOrdering.EQ; } + $runtime.fail(); + } + $runtime.fail(); + }, + Eq0: () => eqImportComparison +}; +const compare8 = /* #__PURE__ */ (() => Data$dOrd.ordArray(ordImportComparison).compare)(); +const ordImportModuleComparison = { + compare: x => y => { + const v = Data$dOrd.ordString.compare(x._1)(y._1); + if (v.tag === "LT") { return Data$dOrdering.LT; } + if (v.tag === "GT") { return Data$dOrdering.GT; } + const v1 = Data$dOrd.ordInt.compare(x._2)(y._2); + if (v1.tag === "LT") { return Data$dOrdering.LT; } + if (v1.tag === "GT") { return Data$dOrdering.GT; } + const v2 = compare8(x._3)(y._3); + if (v2.tag === "LT") { return Data$dOrdering.LT; } + if (v2.tag === "GT") { return Data$dOrdering.GT; } + return compare7(x._4)(y._4); + }, + Eq0: () => eqImportModuleComparison +}; +const sortImportsIde = v => { + const v1 = Data$dArray.unzip(v.value.tail); + const $2 = Data$dArray.unzip(Data$dArray.sortWith(ordImportComparison)(Data$dTuple.fst)(Data$dFunctor.arrayMap(x => Data$dTuple.$Tuple( + (() => { + if (x.tag === "ImportValue") { return $ImportComparison("ImportValueCmp", x._1.name); } + if (x.tag === "ImportOp") { return $ImportComparison("ImportOpCmp", x._1.name); } + if (x.tag === "ImportType") { + if (x._2.tag === "Nothing") { return $ImportComparison("ImportTypeCmp", x._1.name, true, []); } + if (x._2.tag === "Just") { + if (x._2._1.tag === "DataEnumerated") { + if (x._2._1._1.value.tag === "Nothing") { return $ImportComparison("ImportTypeCmp", x._1.name, true, []); } + if (x._2._1._1.value.tag === "Just") { + return $ImportComparison( + "ImportTypeCmp", + x._1.name, + true, + Data$dFunctor.arrayMap(x$1 => x$1.name)(Data$dSemigroup.concatArray([x._2._1._1.value._1.head])(Data$dFunctor.arrayMap(Data$dTuple.snd)(x._2._1._1.value._1.tail))) + ); + } + $runtime.fail(); + } + if (x._2._1.tag === "DataAll") { return $ImportComparison("ImportTypeCmp", x._1.name, false, []); } + $runtime.fail(); + } + $runtime.fail(); + } + if (x.tag === "ImportTypeOp") { return $ImportComparison("ImportTypeOpCmp", x._2.name); } + if (x.tag === "ImportClass") { return $ImportComparison("ImportClassCmp", x._2.name); } + if (x.tag === "ImportError") { return ImportErrorCmp; } + $runtime.fail(); + })(), + x + ))(Data$dSemigroup.concatArray([v.value.head])(v1._2)))); + return Data$dTuple.$Tuple( + $2._1, + { + open: v.open, + value: { + head: (() => { + const $3 = Data$dArray.index($2._2)(0); + if ($3.tag === "Just") { return $3._1; } + $runtime.fail(); + })(), + tail: Data$dArray.zip(v1._1)((() => { + const $3 = Data$dArray.tail($2._2); + if ($3.tag === "Just") { return $3._1; } + $runtime.fail(); + })()) + }, + close: v.close + } + ); +}; +const defaultFormatOptions = dictFormatError => ( + { + formatError: dictFormatError.formatError, + unicode: Tidy$dToken.UnicodeSource, + typeArrowPlacement: TypeArrowFirst, + operators: Data$dMap$dInternal.Leaf, + importSort: ImportSortSource, + importWrap: ImportWrapSource + } +); +const declareHanging = label => spc => separator => value => spc(label)(Tidy$dHang.toFormatDoc(Tidy$dHang.hang(Tidy$dDoc.indent(separator))(value))); +const formatRecordLabeled = format => conf => v => { + if (v.tag === "RecordPun") { return formatToken(conf)(v._1.token); } + if (v.tag === "RecordField") { + return declareHanging(formatToken(conf)(v._1.token))(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Tidy$dDoc.identity)))((() => { + const $3 = formatToken(conf)(v._2); + if ($3.leading.lines > 0) { + return { + doc: $3.doc, + isEmpty: $3.isEmpty, + leading: {doc: $3.leading.doc, left: $3.leading.left, lines: 0, multiline: $3.leading.multiline, right: $3.leading.right}, + multiline: true, + trailing: $3.trailing + }; + } + return $3; + })())(format(conf)(v._3)); + } + $runtime.fail(); +}; +const formatHangingBinder = conf => v => { + if (v.tag === "BinderWildcard") { return Tidy$dHang.$HangingDoc("HangBreak", Tidy$dDoc.flexGroup(formatToken(conf)(v._1))); } + if (v.tag === "BinderVar") { return Tidy$dHang.$HangingDoc("HangBreak", Tidy$dDoc.flexGroup(formatToken(conf)(v._1.token))); } + if (v.tag === "BinderNamed") { + return Tidy$dHang.$HangingDoc( + "HangBreak", + Tidy$dDoc.flexGroup(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Tidy$dDoc.identity))(formatToken(conf)(v._1.token))(Tidy$dDoc.flexSoftBreak((() => { + const $2 = formatToken(conf)(v._2); + if ($2.leading.lines > 0) { + return { + doc: $2.doc, + isEmpty: $2.isEmpty, + leading: {doc: $2.leading.doc, left: $2.leading.left, lines: 0, multiline: $2.leading.multiline, right: $2.leading.right}, + multiline: true, + trailing: $2.trailing + }; + } + return $2; + })())(Tidy$dDoc.indent(formatBinder(conf)(v._3))))) + ); + } + if (v.tag === "BinderConstructor") { + const ctorName = Tidy$dHang.$HangingDoc("HangBreak", Tidy$dDoc.flexGroup(formatToken(conf)(v._1.token))); + if (v._2.length > 0) { return Tidy$dHang.hangApp(ctorName)(Data$dFunctor.arrayMap(formatHangingBinder(conf))(v._2)); } + return ctorName; + } + if (v.tag === "BinderBoolean") { return Tidy$dHang.$HangingDoc("HangBreak", Tidy$dDoc.flexGroup(formatToken(conf)(v._1))); } + if (v.tag === "BinderChar") { return Tidy$dHang.$HangingDoc("HangBreak", Tidy$dDoc.flexGroup(formatToken(conf)(v._1))); } + if (v.tag === "BinderString") { return Tidy$dHang.$HangingDoc("HangBreak", Tidy$dDoc.flexGroup(formatToken(conf)(v._1))); } + if (v.tag === "BinderInt") { + return Tidy$dHang.$HangingDoc( + "HangBreak", + Tidy$dDoc.flexGroup(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Tidy$dDoc.identity))((() => { + if (v._1.tag === "Nothing") { return Tidy$dDoc.monoidFormatDoc.mempty; } + if (v._1.tag === "Just") { return formatToken(conf)(v._1._1); } + $runtime.fail(); + })())(formatToken(conf)(v._2))) + ); + } + if (v.tag === "BinderNumber") { + return Tidy$dHang.$HangingDoc( + "HangBreak", + Tidy$dDoc.flexGroup(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Tidy$dDoc.identity))((() => { + if (v._1.tag === "Nothing") { return Tidy$dDoc.monoidFormatDoc.mempty; } + if (v._1.tag === "Just") { return formatToken(conf)(v._1._1); } + $runtime.fail(); + })())(formatToken(conf)(v._2))) + ); + } + if (v.tag === "BinderArray") { return Tidy$dHang.$HangingDoc("HangBreak", Tidy$dDoc.flexGroup(formatBasicList(Grouped)(formatBinder)(conf)(v._1))); } + if (v.tag === "BinderRecord") { return Tidy$dHang.$HangingDoc("HangBreak", Tidy$dDoc.flexGroup(formatBasicList(Grouped)(formatRecordLabeled(formatHangingBinder))(conf)(v._1))); } + if (v.tag === "BinderParens") { return Tidy$dHang.$HangingDoc("HangBreak", Tidy$dDoc.flexGroup(formatParensBlock(formatBinder)(conf)(v._1))); } + if (v.tag === "BinderTyped") { + return Tidy$dHang.$HangingDoc("HangBreak", Tidy$dDoc.flexGroup(formatSignature(conf)({label: formatBinder(conf)(v._1), separator: v._2, value: v._3}))); + } + if (v.tag === "BinderOp") { + return formatHangingOperatorTree(formatQualifiedName)(formatHangingBinder)(conf)(Tidy$dPrecedence.toOperatorTree(conf.operators)(v$1 => Tidy$dPrecedence.$QualifiedOperator( + v$1.module, + Tidy$dPrecedence.OperatorValue, + v$1.name + ))(v._1)(v._2)); + } + if (v.tag === "BinderError") { return Tidy$dHang.$HangingDoc("HangBreak", Tidy$dDoc.flexGroup(conf.formatError(v._1))); } + $runtime.fail(); +}; +const formatBinder = conf => x => Tidy$dHang.toFormatDoc(formatHangingBinder(conf)(x)); +const formatWhere = conf => v => Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break)))(formatToken(conf)(v._1))(formatLetGroups$lazy()(conf)(v._2)); +const formatValueBinding = conf => v => { + if (v.guarded.tag === "Unconditional") { + return Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break)))(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc( + "Text", + 1, + " " + ))))(Tidy$dDoc.flexSpaceBreak(formatToken(conf)(v.name.token))(Tidy$dDoc.indent(Tidy$dDoc.joinWithMap(Data$dFoldable.foldableArray)(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc( + "FlexAlt", + Dodo$dInternal.$Doc("Text", 1, " "), + Dodo$dInternal.Break + )))))(x => { + const $3 = Tidy$dHang.toFormatDoc(formatHangingBinder(conf)(x)); + if ($3.leading.lines > 0) { + return { + doc: $3.doc, + isEmpty: $3.isEmpty, + leading: {doc: $3.leading.doc, left: $3.leading.left, lines: 0, multiline: $3.leading.multiline, right: $3.leading.right}, + multiline: true, + trailing: $3.trailing + }; + } + return $3; + })(v.binders))))(Tidy$dHang.toFormatDoc(Tidy$dHang.hang(Tidy$dDoc.indent((() => { + const $2 = formatToken(conf)(v.guarded._1); + if ($2.leading.lines > 0) { + return { + doc: $2.doc, + isEmpty: $2.isEmpty, + leading: {doc: $2.leading.doc, left: $2.leading.left, lines: 0, multiline: $2.leading.multiline, right: $2.leading.right}, + multiline: true, + trailing: $2.trailing + }; + } + return $2; + })()))(formatHangingExpr(conf)(v.guarded._2.expr)))))(Tidy$dDoc.indent((() => { + if (v.guarded._2.bindings.tag === "Nothing") { return Tidy$dDoc.monoidFormatDoc.mempty; } + if (v.guarded._2.bindings.tag === "Just") { return formatWhere(conf)(v.guarded._2.bindings._1); } + $runtime.fail(); + })())); + } + if (v.guarded.tag === "Guarded") { + const valBinders = Tidy$dDoc.flexSpaceBreak(formatToken(conf)(v.name.token))(Tidy$dDoc.indent(Tidy$dDoc.joinWithMap(Data$dFoldable.foldableArray)(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc( + "FlexAlt", + Dodo$dInternal.$Doc("Text", 1, " "), + Dodo$dInternal.Break + )))))(x => { + const $3 = Tidy$dDoc.flexGroup(Tidy$dHang.toFormatDoc(formatHangingBinder(conf)(x))); + if ($3.leading.lines > 0) { + return { + doc: $3.doc, + isEmpty: $3.isEmpty, + leading: {doc: $3.leading.doc, left: $3.leading.left, lines: 0, multiline: $3.leading.multiline, right: $3.leading.right}, + multiline: true, + trailing: $3.trailing + }; + } + return $3; + })(v.binders))); + if (v.guarded._1.length === 1) { + return Tidy$dHang.toFormatDoc(Tidy$dHang.hang(valBinders)(formatGuardedExpr(conf)((() => { + const $3 = Data$dArray.index(v.guarded._1)(0); + if ($3.tag === "Just") { return $3._1; } + $runtime.fail(); + })()))); + } + return Tidy$dDoc.flexSpaceBreak(valBinders)(Tidy$dDoc.indent(Tidy$dDoc.joinWithMap(Data$dFoldable.foldableArray)(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break))))((() => { + const $3 = formatGuardedExpr(conf); + return x => Tidy$dHang.toFormatDoc($3(x)); + })())(v.guarded._1))); + } + $runtime.fail(); +}; +const formatRecordUpdate = conf => v => { + if (v.tag === "RecordUpdateLeaf") { + return declareHanging(formatToken(conf)(v._1.token))(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " ")))))(formatToken(conf)(v._2))(formatHangingExpr(conf)(v._3)); + } + if (v.tag === "RecordUpdateBranch") { + return Tidy$dDoc.flexSpaceBreak(formatToken(conf)(v._1.token))(Tidy$dDoc.indent(formatBasicListNonEmpty(Grouped)(formatRecordUpdate)(conf)(v._2))); + } + $runtime.fail(); +}; +const formatPatternGuard = conf => v => { + if (v.binder.tag === "Nothing") { return formatExpr(conf)(v.expr); } + if (v.binder.tag === "Just") { + return Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " "))))(Tidy$dHang.toFormatDoc(formatHangingBinder(conf)(v.binder._1._1)))(Tidy$dDoc.indent(Tidy$dDoc.flexSpaceBreak((() => { + const $2 = formatToken(conf)(v.binder._1._2); + if ($2.leading.lines > 0) { + return { + doc: $2.doc, + isEmpty: $2.isEmpty, + leading: {doc: $2.leading.doc, left: $2.leading.left, lines: 0, multiline: $2.leading.multiline, right: $2.leading.right}, + multiline: true, + trailing: $2.trailing + }; + } + return $2; + })())(formatExpr(conf)(v.expr)))); + } + $runtime.fail(); +}; +const formatLetBinding = conf => v => { + if (v.tag === "LetBindingSignature") { return formatSignature(conf)({label: formatToken(conf)(v._1.label.token), separator: v._1.separator, value: v._1.value}); } + if (v.tag === "LetBindingName") { return formatValueBinding(conf)(v._1); } + if (v.tag === "LetBindingPattern") { + return Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break)))(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc( + "Text", + 1, + " " + ))))(Tidy$dDoc.flexGroup(Tidy$dHang.toFormatDoc(formatHangingBinder(conf)(v._1))))(Tidy$dHang.toFormatDoc(Tidy$dHang.hang(Tidy$dDoc.indent((() => { + const $2 = formatToken(conf)(v._2); + if ($2.leading.lines > 0) { + return { + doc: $2.doc, + isEmpty: $2.isEmpty, + leading: {doc: $2.leading.doc, left: $2.leading.left, lines: 0, multiline: $2.leading.multiline, right: $2.leading.right}, + multiline: true, + trailing: $2.trailing + }; + } + return $2; + })()))(formatHangingExpr(conf)(v._3.expr)))))(Tidy$dDoc.indent((() => { + if (v._3.bindings.tag === "Nothing") { return Tidy$dDoc.monoidFormatDoc.mempty; } + if (v._3.bindings.tag === "Just") { return formatWhere(conf)(v._3.bindings._1); } + $runtime.fail(); + })())); + } + if (v.tag === "LetBindingError") { return conf.formatError(v._1); } + $runtime.fail(); +}; +const formatHangingExpr = conf => v => { + if (v.tag === "ExprHole") { return Tidy$dHang.$HangingDoc("HangBreak", Tidy$dDoc.flexGroup(formatToken(conf)(v._1.token))); } + if (v.tag === "ExprSection") { return Tidy$dHang.$HangingDoc("HangBreak", Tidy$dDoc.flexGroup(formatToken(conf)(v._1))); } + if (v.tag === "ExprIdent") { return Tidy$dHang.$HangingDoc("HangBreak", Tidy$dDoc.flexGroup(formatToken(conf)(v._1.token))); } + if (v.tag === "ExprConstructor") { return Tidy$dHang.$HangingDoc("HangBreak", Tidy$dDoc.flexGroup(formatToken(conf)(v._1.token))); } + if (v.tag === "ExprBoolean") { return Tidy$dHang.$HangingDoc("HangBreak", Tidy$dDoc.flexGroup(formatToken(conf)(v._1))); } + if (v.tag === "ExprChar") { return Tidy$dHang.$HangingDoc("HangBreak", Tidy$dDoc.flexGroup(formatToken(conf)(v._1))); } + if (v.tag === "ExprString") { return Tidy$dHang.$HangingDoc("HangBreak", Tidy$dDoc.flexGroup(formatToken(conf)(v._1))); } + if (v.tag === "ExprInt") { return Tidy$dHang.$HangingDoc("HangBreak", Tidy$dDoc.flexGroup(formatToken(conf)(v._1))); } + if (v.tag === "ExprNumber") { return Tidy$dHang.$HangingDoc("HangBreak", Tidy$dDoc.flexGroup(formatToken(conf)(v._1))); } + if (v.tag === "ExprArray") { return Tidy$dHang.$HangingDoc("HangBreak", Tidy$dDoc.flexGroup(formatBasicList(Grouped)(formatExpr)(conf)(v._1))); } + if (v.tag === "ExprRecord") { return Tidy$dHang.$HangingDoc("HangBreak", Tidy$dDoc.flexGroup(formatBasicList(Grouped)(formatRecordLabeled(formatHangingExpr))(conf)(v._1))); } + if (v.tag === "ExprParens") { return Tidy$dHang.$HangingDoc("HangBreak", Tidy$dDoc.flexGroup(formatParensBlock(formatExpr)(conf)(v._1))); } + if (v.tag === "ExprTyped") { + return Tidy$dHang.$HangingDoc("HangBreak", Tidy$dDoc.flexGroup(formatSignature(conf)({label: formatExpr(conf)(v._1), separator: v._2, value: v._3}))); + } + if (v.tag === "ExprInfix") { + return Tidy$dHang.hangOps(formatHangingExpr(conf)(v._1))(Data$dFunctor.arrayMap(v1 => Tidy$dHang.$HangingOp( + 3, + formatParens(formatExpr)(conf)(v1._1), + formatHangingExpr(conf)(v1._2) + ))(v._2)); + } + if (v.tag === "ExprOp") { + return formatHangingOperatorTree(formatQualifiedName)(formatHangingExpr)(conf)(Tidy$dPrecedence.toOperatorTree(conf.operators)(v$1 => Tidy$dPrecedence.$QualifiedOperator( + v$1.module, + Tidy$dPrecedence.OperatorValue, + v$1.name + ))(v._1)(v._2)); + } + if (v.tag === "ExprOpName") { return Tidy$dHang.$HangingDoc("HangBreak", Tidy$dDoc.flexGroup(formatToken(conf)(v._1.token))); } + if (v.tag === "ExprNegate") { + return Tidy$dHang.$HangingDoc("HangBreak", Tidy$dDoc.flexGroup(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Tidy$dDoc.identity))(formatToken(conf)(v._1))(formatExpr(conf)(v._2)))); + } + if (v.tag === "ExprRecordAccessor") { + return Tidy$dHang.$HangingDoc( + "HangBreak", + Tidy$dDoc.flexGroup(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Tidy$dDoc.identity))(formatExpr(conf)(v._1.expr))(Tidy$dDoc.indent(foldMap3(Tidy$dDoc.anchor)([ + formatToken(conf)(v._1.dot), + formatToken(conf)(v._1.path.head.token), + foldMap3(v1 => Tidy$dDoc.joinDoc(Tidy$dDoc.force(Tidy$dDoc.identity))((() => { + const $3 = formatToken(conf)(v1._1); + if ($3.leading.lines > 0) { + return { + doc: $3.doc, + isEmpty: $3.isEmpty, + leading: {doc: $3.leading.doc, left: $3.leading.left, lines: 0, multiline: $3.leading.multiline, right: $3.leading.right}, + multiline: true, + trailing: $3.trailing + }; + } + return $3; + })())((() => { + const $3 = formatToken(conf)(v1._2.token); + if ($3.leading.lines > 0) { + return { + doc: $3.doc, + isEmpty: $3.isEmpty, + leading: {doc: $3.leading.doc, left: $3.leading.left, lines: 0, multiline: $3.leading.multiline, right: $3.leading.right}, + multiline: true, + trailing: $3.trailing + }; + } + return $3; + })()))(v._1.path.tail) + ])))) + ); + } + if (v.tag === "ExprRecordUpdate") { + return Tidy$dHang.hang(formatExpr(conf)(v._1))(Tidy$dHang.$HangingDoc("HangBreak", Tidy$dDoc.flexGroup(formatBasicListNonEmpty(Grouped)(formatRecordUpdate)(conf)(v._2)))); + } + if (v.tag === "ExprApp") { return Tidy$dHang.hangApp(formatHangingExpr(conf)(v._1))(Data$dFunctor.arrayMap(formatHangingExpr(conf))(v._2)); } + if (v.tag === "ExprLambda") { + return Tidy$dHang.hang(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " "))))(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Tidy$dDoc.identity))(formatToken(conf)(v._1.symbol))(Tidy$dDoc.alignCurrentColumn(Tidy$dDoc.flexGroup(Tidy$dDoc.joinWithMap(Data$dFoldable.foldableArray)(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc( + "FlexAlt", + Dodo$dInternal.$Doc("Text", 1, " "), + Dodo$dInternal.Break + )))))(x => { + const $3 = Tidy$dHang.toFormatDoc(formatHangingBinder(conf)(x)); + if ($3.leading.lines > 0) { + return { + doc: $3.doc, + isEmpty: $3.isEmpty, + leading: {doc: $3.leading.doc, left: $3.leading.left, lines: 0, multiline: $3.leading.multiline, right: $3.leading.right}, + multiline: true, + trailing: $3.trailing + }; + } + return $3; + })(v._1.binders)))))(Tidy$dDoc.indent((() => { + const $2 = formatToken(conf)(v._1.arrow); + if ($2.leading.lines > 0) { + return { + doc: $2.doc, + isEmpty: $2.isEmpty, + leading: {doc: $2.leading.doc, left: $2.leading.left, lines: 0, multiline: $2.leading.multiline, right: $2.leading.right}, + multiline: true, + trailing: $2.trailing + }; + } + return $2; + })())))(formatHangingExpr(conf)(v._1.body)); + } + if (v.tag === "ExprIf") { return Tidy$dHang.$HangingDoc("HangBreak", Tidy$dDoc.flexGroup(formatElseIfChain(conf)(toElseIfChain(v._1)))); } + if (v.tag === "ExprCase") { + return Tidy$dHang.hang(Tidy$dDoc.flexSpaceBreak(formatToken(conf)(v._1.keyword))(Tidy$dDoc.indent(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc( + "FlexAlt", + Dodo$dInternal.$Doc("Text", 1, " "), + Dodo$dInternal.Break + ))))(Data$dFoldable.foldlArray(doc => v1 => Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc( + "FlexAlt", + Dodo$dInternal.$Doc("Text", 1, " "), + Dodo$dInternal.Break + ))))(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Tidy$dDoc.identity))(doc)((() => { + const $4 = formatToken(conf)(v1._1); + if ($4.leading.lines > 0) { + return { + doc: $4.doc, + isEmpty: $4.isEmpty, + leading: {doc: $4.leading.doc, left: $4.leading.left, lines: 0, multiline: $4.leading.multiline, right: $4.leading.right}, + multiline: true, + trailing: $4.trailing + }; + } + return $4; + })()))(Tidy$dDoc.flexGroup(formatExpr(conf)(v1._2))))(Tidy$dDoc.flexGroup(formatExpr(conf)(v._1.head.head)))(v._1.head.tail))((() => { + const $2 = formatToken(conf)(v._1.of); + if ($2.leading.lines > 0) { + return { + doc: $2.doc, + isEmpty: $2.isEmpty, + leading: {doc: $2.leading.doc, left: $2.leading.left, lines: 0, multiline: $2.leading.multiline, right: $2.leading.right}, + multiline: true, + trailing: $2.trailing + }; + } + return $2; + })()))))(Tidy$dHang.$HangingDoc( + "HangBreak", + Tidy$dDoc.flexGroup(Tidy$dDoc.joinWithMap(Data$dFoldable.foldableArray)(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break))))((() => { + const $2 = formatCaseBranch(conf); + return x => Tidy$dDoc.flexGroup($2(x)); + })())(v._1.branches)) + )); + } + if (v.tag === "ExprLet") { + return Tidy$dHang.$HangingDoc( + "HangBreak", + Tidy$dDoc.flexGroup(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc( + "FlexAlt", + Dodo$dInternal.$Doc("Text", 1, " "), + Dodo$dInternal.Break + ))))(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("FlexAlt", Dodo$dInternal.$Doc("Text", 1, " "), Dodo$dInternal.Break))))(formatToken(conf)(v._1.keyword))(Tidy$dDoc.indent(formatLetGroups$lazy()(conf)(v._1.bindings))))(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc( + "FlexAlt", + Dodo$dInternal.$Doc("Text", 1, " "), + Dodo$dInternal.Break + ))))(formatToken(conf)(v._1.in))(Tidy$dDoc.indent(Tidy$dDoc.flexGroup(formatExpr(conf)(v._1.body)))))) + ); + } + if (v.tag === "ExprDo") { + return Tidy$dHang.hang(formatToken(conf)(v._1.keyword))(Tidy$dHang.$HangingDoc( + "HangBreak", + Tidy$dDoc.flexGroup(Tidy$dDoc.joinWithMap(Data$dFoldable.foldableArray)(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break))))((() => { + const $2 = formatDoStatement(conf); + return x => Tidy$dDoc.flexGroup($2(x)); + })())(v._1.statements)) + )); + } + if (v.tag === "ExprAdo") { + return Tidy$dHang.hang(formatToken(conf)(v._1.keyword))(Tidy$dHang.$HangingDoc( + "HangBreak", + Tidy$dDoc.flexGroup(Tidy$dDoc.flexSpaceBreak(Tidy$dDoc.joinWithMap(Data$dFoldable.foldableArray)(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break))))(formatDoStatement(conf))(v._1.statements))(Tidy$dDoc.flexSpaceBreak(formatToken(conf)(v._1.in))(Tidy$dDoc.indent(formatExpr(conf)(v._1.result))))) + )); + } + if (v.tag === "ExprError") { return Tidy$dHang.$HangingDoc("HangBreak", Tidy$dDoc.flexGroup(conf.formatError(v._1))); } + $runtime.fail(); +}; +const formatGuardedExpr = conf => v => Tidy$dHang.hangWithIndent(x => Tidy$dDoc.align(2)(Tidy$dDoc.indent(x)))(Tidy$dHang.$HangingDoc( + "HangBreak", + Tidy$dDoc.flexGroup(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " "))))(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc( + "Text", + 1, + " " + ))))(formatToken(conf)(v.bar))(Tidy$dDoc.flexGroup(Tidy$dDoc.softBreak(formatListElem(2)(formatPatternGuard)(conf)(v.patterns.head))(formatListTail(2)(formatPatternGuard)(conf)(v.patterns.tail)))))((() => { + const $2 = formatToken(conf)(v.separator); + if ($2.leading.lines > 0) { + return { + doc: $2.doc, + isEmpty: $2.isEmpty, + leading: {doc: $2.leading.doc, left: $2.leading.left, lines: 0, multiline: $2.leading.multiline, right: $2.leading.right}, + multiline: true, + trailing: $2.trailing + }; + } + return $2; + })())) +))((() => { + if (v.where.bindings.tag === "Nothing") { return [formatHangingExpr(conf)(v.where.expr)]; } + if (v.where.bindings.tag === "Just") { + return [formatHangingExpr(conf)(v.where.expr), Tidy$dHang.$HangingDoc("HangBreak", Tidy$dDoc.flexGroup(formatWhere(conf)(v.where.bindings._1)))]; + } + $runtime.fail(); +})()); +const formatExpr = conf => x => Tidy$dHang.toFormatDoc(formatHangingExpr(conf)(x)); +const formatElseIfChain = conf => { + const $1 = Tidy$dDoc.joinWithMap(Data$dFoldable.foldableArray)(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc( + "FlexAlt", + Dodo$dInternal.$Doc("Text", 1, " "), + Dodo$dInternal.Break + )))))(v => { + if (v.tag === "IfThen") { + return Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " "))))(Tidy$dDoc.flexSpaceBreak(formatToken(conf)(v._1))(Tidy$dDoc.indent((() => { + const $2 = Tidy$dDoc.flexGroup(Tidy$dHang.toFormatDoc(formatHangingExpr(conf)(v._2))); + if ($2.leading.lines > 0) { + return { + doc: $2.doc, + isEmpty: $2.isEmpty, + leading: {doc: $2.leading.doc, left: $2.leading.left, lines: 0, multiline: $2.leading.multiline, right: $2.leading.right}, + multiline: true, + trailing: $2.trailing + }; + } + return $2; + })())))(Tidy$dHang.toFormatDoc(Tidy$dHang.hang((() => { + const $2 = formatToken(conf)(v._3); + if ($2.leading.lines > 0) { + return { + doc: $2.doc, + isEmpty: $2.isEmpty, + leading: {doc: $2.leading.doc, left: $2.leading.left, lines: 0, multiline: $2.leading.multiline, right: $2.leading.right}, + multiline: true, + trailing: $2.trailing + }; + } + return $2; + })())(formatHangingExpr(conf)(v._4)))); + } + if (v.tag === "ElseIfThen") { + return Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " "))))(Tidy$dDoc.flexSpaceBreak(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc( + "Text", + 1, + " " + ))))(formatToken(conf)(v._1))(Tidy$dDoc.indent((() => { + const $2 = formatToken(conf)(v._2); + if ($2.leading.lines > 0) { + return { + doc: $2.doc, + isEmpty: $2.isEmpty, + leading: {doc: $2.leading.doc, left: $2.leading.left, lines: 0, multiline: $2.leading.multiline, right: $2.leading.right}, + multiline: true, + trailing: $2.trailing + }; + } + return $2; + })())))(Tidy$dDoc.indent((() => { + const $2 = Tidy$dDoc.flexGroup(Tidy$dHang.toFormatDoc(formatHangingExpr(conf)(v._3))); + if ($2.leading.lines > 0) { + return { + doc: $2.doc, + isEmpty: $2.isEmpty, + leading: {doc: $2.leading.doc, left: $2.leading.left, lines: 0, multiline: $2.leading.multiline, right: $2.leading.right}, + multiline: true, + trailing: $2.trailing + }; + } + return $2; + })())))(Tidy$dHang.toFormatDoc(Tidy$dHang.hang((() => { + const $2 = formatToken(conf)(v._4); + if ($2.leading.lines > 0) { + return { + doc: $2.doc, + isEmpty: $2.isEmpty, + leading: {doc: $2.leading.doc, left: $2.leading.left, lines: 0, multiline: $2.leading.multiline, right: $2.leading.right}, + multiline: true, + trailing: $2.trailing + }; + } + return $2; + })())(formatHangingExpr(conf)(v._5)))); + } + if (v.tag === "Else") { return Tidy$dHang.toFormatDoc(Tidy$dHang.hang(formatToken(conf)(v._1))(formatHangingExpr(conf)(v._2))); } + $runtime.fail(); + }); + return x => Tidy$dDoc.flexGroup($1(x)); +}; +const formatDoStatement = conf => v => { + if (v.tag === "DoLet") { return Tidy$dDoc.flexSpaceBreak(formatToken(conf)(v._1))(Tidy$dDoc.indent(formatLetGroups$lazy()(conf)(v._2))); } + if (v.tag === "DoDiscard") { return Tidy$dHang.toFormatDoc(formatHangingExpr(conf)(v._1)); } + if (v.tag === "DoBind") { + return Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " "))))(Tidy$dDoc.flexGroup(Tidy$dHang.toFormatDoc(formatHangingBinder(conf)(v._1))))(Tidy$dHang.toFormatDoc(Tidy$dHang.hang(Tidy$dDoc.indent((() => { + const $2 = formatToken(conf)(v._2); + if ($2.leading.lines > 0) { + return { + doc: $2.doc, + isEmpty: $2.isEmpty, + leading: {doc: $2.leading.doc, left: $2.leading.left, lines: 0, multiline: $2.leading.multiline, right: $2.leading.right}, + multiline: true, + trailing: $2.trailing + }; + } + return $2; + })()))(formatHangingExpr(conf)(v._3)))); + } + if (v.tag === "DoError") { return conf.formatError(v._1); } + $runtime.fail(); +}; +const formatCaseBranch = conf => v => { + const caseBinders = Tidy$dDoc.flexGroup(Data$dFoldable.foldlArray(doc => v1 => Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc( + "FlexAlt", + Dodo$dInternal.$Doc("Text", 1, " "), + Dodo$dInternal.Break + ))))(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Tidy$dDoc.identity))(doc)(Tidy$dDoc.indent((() => { + const $4 = formatToken(conf)(v1._1); + if ($4.leading.lines > 0) { + return { + doc: $4.doc, + isEmpty: $4.isEmpty, + leading: {doc: $4.leading.doc, left: $4.leading.left, lines: 0, multiline: $4.leading.multiline, right: $4.leading.right}, + multiline: true, + trailing: $4.trailing + }; + } + return $4; + })())))(Tidy$dDoc.flexGroup(Tidy$dHang.toFormatDoc(formatHangingBinder(conf)(v1._2)))))(Tidy$dDoc.flexGroup(Tidy$dHang.toFormatDoc(formatHangingBinder(conf)(v._1.head))))(v._1.tail)); + if (v._2.tag === "Unconditional") { + return Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break)))(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc( + "Text", + 1, + " " + ))))(caseBinders)(Tidy$dHang.toFormatDoc(Tidy$dHang.hang(formatToken(conf)(v._2._1))(formatHangingExpr(conf)(v._2._2.expr)))))(Tidy$dDoc.indent((() => { + if (v._2._2.bindings.tag === "Nothing") { return Tidy$dDoc.monoidFormatDoc.mempty; } + if (v._2._2.bindings.tag === "Just") { return formatWhere(conf)(v._2._2.bindings._1); } + $runtime.fail(); + })())); + } + if (v._2.tag === "Guarded") { + if (v._2._1.length === 1) { + return Tidy$dHang.toFormatDoc(Tidy$dHang.hang(caseBinders)(formatGuardedExpr(conf)((() => { + const $3 = Data$dArray.index(v._2._1)(0); + if ($3.tag === "Just") { return $3._1; } + $runtime.fail(); + })()))); + } + return Tidy$dDoc.flexSpaceBreak(caseBinders)(Tidy$dDoc.indent(Tidy$dDoc.joinWithMap(Data$dFoldable.foldableArray)(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break))))(x => Tidy$dHang.toFormatDoc(formatGuardedExpr(conf)(x)))(v._2._1))); + } + $runtime.fail(); +}; +const formatLetGroups$lazy = /* #__PURE__ */ $runtime.binding(() => formatDeclGroups(v => v1 => { + if (v1.tag === "DeclGroupValueSignature") { return DeclGroupHard; } + return DeclGroupSame; +})(v => { + if (v.tag === "LetBindingSignature") { return $DeclGroup("DeclGroupValueSignature", v._1.label.name); } + if (v.tag === "LetBindingName") { return $DeclGroup("DeclGroupValue", v._1.name.name); } + if (v.tag === "LetBindingPattern") { return DeclGroupUnknown; } + if (v.tag === "LetBindingError") { return DeclGroupUnknown; } + $runtime.fail(); +})(formatLetBinding)); +const formatLetGroups = /* #__PURE__ */ formatLetGroups$lazy(); +const formatInstanceBinding = conf => v => { + if (v.tag === "InstanceBindingSignature") { return formatSignature(conf)({label: formatToken(conf)(v._1.label.token), separator: v._1.separator, value: v._1.value}); } + if (v.tag === "InstanceBindingName") { return formatValueBinding(conf)(v._1); } + $runtime.fail(); +}; +const formatInstance = conf => v => { + if (v.body.tag === "Nothing") { return formatInstanceHead(conf)(Data$dTuple.$Tuple(v.head, Data$dMaybe.Nothing)); } + if (v.body.tag === "Just") { + return Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break)))(formatInstanceHead(conf)(Data$dTuple.$Tuple( + v.head, + Data$dMaybe.$Maybe("Just", v.body._1._1) + )))(Tidy$dDoc.indent(Tidy$dDoc.joinWithMap(Data$dFoldable.foldableArray)(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break))))(formatInstanceBinding(conf))(v.body._1._2))); + } + $runtime.fail(); +}; +const formatDecl = conf => v => { + if (v.tag === "DeclData") { + if (v._2.tag === "Just") { + const formatDataElem = v1 => Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " "))))(formatToken(conf)(v1._1))(formatListElem(2)(formatDataCtor)(conf)(v1._2)); + if (v._2._1._2.tail.length === 0) { + return declareHanging(formatDataHead(conf)(v._1))(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " ")))))((() => { + const $3 = formatToken(conf)(v._2._1._1); + if ($3.leading.lines > 0) { + return { + doc: $3.doc, + isEmpty: $3.isEmpty, + leading: {doc: $3.leading.doc, left: $3.leading.left, lines: 0, multiline: $3.leading.multiline, right: $3.leading.right}, + multiline: true, + trailing: $3.trailing + }; + } + return $3; + })())(formatHangingDataCtor(conf)(v._2._1._2.head)); + } + return Tidy$dDoc.flexSpaceBreak(formatDataHead(conf)(v._1))(Tidy$dDoc.indent(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc( + "FlexAlt", + Dodo$dInternal.$Doc("Text", 1, " "), + Dodo$dInternal.Break + ))))(formatDataElem(Data$dTuple.$Tuple(v._2._1._1, v._2._1._2.head)))(Tidy$dDoc.joinWithMap(Data$dFoldable.foldableArray)(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc( + "FlexAlt", + Dodo$dInternal.$Doc("Text", 1, " "), + Dodo$dInternal.Break + )))))($3 => formatDataElem($3))(v._2._1._2.tail)))); + } + return formatDataHead(conf)(v._1); + } + if (v.tag === "DeclType") { + return declareHanging(formatDataHead(conf)(v._1))(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " ")))))((() => { + const $2 = formatToken(conf)(v._2); + if ($2.leading.lines > 0) { + return { + doc: $2.doc, + isEmpty: $2.isEmpty, + leading: {doc: $2.leading.doc, left: $2.leading.left, lines: 0, multiline: $2.leading.multiline, right: $2.leading.right}, + multiline: true, + trailing: $2.trailing + }; + } + return $2; + })())(formatHangingPolytype(identity)(conf)(toPolytype(v._3))); + } + if (v.tag === "DeclNewtype") { + return declareHanging(formatDataHead(conf)(v._1))(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " ")))))((() => { + const $2 = formatToken(conf)(v._2); + if ($2.leading.lines > 0) { + return { + doc: $2.doc, + isEmpty: $2.isEmpty, + leading: {doc: $2.leading.doc, left: $2.leading.left, lines: 0, multiline: $2.leading.multiline, right: $2.leading.right}, + multiline: true, + trailing: $2.trailing + }; + } + return $2; + })())(formatHangingDataCtor(conf)({name: v._3, fields: [v._4]})); + } + if (v.tag === "DeclRole") { + return flatten(Data$dSemigroup.concatArray([formatToken(conf)(v._1), formatToken(conf)(v._2), formatToken(conf)(v._3.token)])(Data$dFunctor.arrayMap(x => formatToken(conf)(x._1))(v._4))); + } + if (v.tag === "DeclFixity") { + if (v._1.operator.tag === "FixityValue") { + return flatten([ + formatToken(conf)(v._1.keyword._1), + formatToken(conf)(v._1.prec._1), + formatToken(conf)(v._1.operator._1.token), + formatToken(conf)(v._1.operator._2), + formatToken(conf)(v._1.operator._3.token) + ]); + } + if (v._1.operator.tag === "FixityType") { + return flatten([ + formatToken(conf)(v._1.keyword._1), + formatToken(conf)(v._1.prec._1), + formatToken(conf)(v._1.operator._1), + formatToken(conf)(v._1.operator._2.token), + formatToken(conf)(v._1.operator._3), + formatToken(conf)(v._1.operator._4.token) + ]); + } + $runtime.fail(); + } + if (v.tag === "DeclKindSignature") { + return formatSignature(conf)({label: flatten([formatToken(conf)(v._1), formatToken(conf)(v._2.label.token)]), separator: v._2.separator, value: v._2.value}); + } + if (v.tag === "DeclForeign") { + if (v._3.tag === "ForeignValue") { + return formatSignature(conf)({ + label: flatten([formatToken(conf)(v._1), formatToken(conf)(v._2), formatToken(conf)(v._3._1.label.token)]), + separator: v._3._1.separator, + value: v._3._1.value + }); + } + if (v._3.tag === "ForeignData") { + return formatSignature(conf)({ + label: flatten([formatToken(conf)(v._1), formatToken(conf)(v._2), formatToken(conf)(v._3._1), formatToken(conf)(v._3._2.label.token)]), + separator: v._3._2.separator, + value: v._3._2.value + }); + } + if (v._3.tag === "ForeignKind") { return flatten([formatToken(conf)(v._1), formatToken(conf)(v._2), formatToken(conf)(v._3._1), formatToken(conf)(v._3._2.token)]); } + $runtime.fail(); + } + if (v.tag === "DeclClass") { + if (v._2.tag === "Nothing") { return formatClassHead(conf)(Data$dTuple.$Tuple(v._1, Data$dMaybe.Nothing)); } + if (v._2.tag === "Just") { + return Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break)))(formatClassHead(conf)(Data$dTuple.$Tuple( + v._1, + Data$dMaybe.$Maybe("Just", v._2._1._1) + )))(Tidy$dDoc.indent(Tidy$dDoc.joinWithMap(Data$dFoldable.foldableArray)(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break))))(x => formatSignature(conf)({ + label: formatToken(conf)(x.label.token), + separator: x.separator, + value: x.value + }))(v._2._1._2))); + } + $runtime.fail(); + } + if (v.tag === "DeclInstanceChain") { + return Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break)))(formatInstance(conf)(v._1.head))(Tidy$dDoc.joinWithMap(Data$dFoldable.foldableArray)(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break))))(v1 => Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc( + "Text", + 1, + " " + ))))(formatToken(conf)(v1._1))((() => { + const $3 = formatInstance(conf)(v1._2); + if ($3.leading.lines > 0) { + return { + doc: $3.doc, + isEmpty: $3.isEmpty, + leading: {doc: $3.leading.doc, left: $3.leading.left, lines: 0, multiline: $3.leading.multiline, right: $3.leading.right}, + multiline: true, + trailing: $3.trailing + }; + } + return $3; + })()))(v._1.tail)); + } + if (v.tag === "DeclDerive") { + return Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " "))))(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc( + "Text", + 1, + " " + ))))(formatToken(conf)(v._1))((() => { + if (v._2.tag === "Nothing") { return Tidy$dDoc.monoidFormatDoc.mempty; } + if (v._2.tag === "Just") { + return Tidy$dDoc.indent((() => { + const $2 = formatToken(conf)(v._2._1); + if ($2.leading.lines > 0) { + return { + doc: $2.doc, + isEmpty: $2.isEmpty, + leading: {doc: $2.leading.doc, left: $2.leading.left, lines: 0, multiline: $2.leading.multiline, right: $2.leading.right}, + multiline: true, + trailing: $2.trailing + }; + } + return $2; + })()); + } + $runtime.fail(); + })()))((() => { + const $2 = formatInstanceHead(conf)(Data$dTuple.$Tuple(v._3, Data$dMaybe.Nothing)); + if ($2.leading.lines > 0) { + return { + doc: $2.doc, + isEmpty: $2.isEmpty, + leading: {doc: $2.leading.doc, left: $2.leading.left, lines: 0, multiline: $2.leading.multiline, right: $2.leading.right}, + multiline: true, + trailing: $2.trailing + }; + } + return $2; + })()); + } + if (v.tag === "DeclSignature") { return formatSignature(conf)({label: flatten([formatToken(conf)(v._1.label.token)]), separator: v._1.separator, value: v._1.value}); } + if (v.tag === "DeclValue") { return formatValueBinding(conf)(v._1); } + if (v.tag === "DeclError") { return conf.formatError(v._1); } + $runtime.fail(); +}; +const formatTopLevelGroups = /* #__PURE__ */ formatDeclGroups(v => v1 => { + if (v1.tag === "DeclGroupValue") { + if (v.tag === "DeclGroupValue") { + if (v._1 === v1._1) { return DeclGroupSame; } + return DeclGroupSoft; + } + if (v.tag === "DeclGroupValueSignature") { + if (v._1 === v1._1) { return DeclGroupSame; } + return DeclGroupHard; + } + return DeclGroupSoft; + } + if (v1.tag === "DeclGroupValueSignature") { return DeclGroupHard; } + if (v1.tag === "DeclGroupType") { + if (v.tag === "DeclGroupType") { return DeclGroupSoft; } + if (v.tag === "DeclGroupTypeSignature") { + if (v._1 === v1._1) { return DeclGroupSame; } + return DeclGroupHard; + } + return DeclGroupSoft; + } + if (v.tag === "DeclGroupTypeSignature") { + if (v1.tag === "DeclGroupClass") { + if (v._1 === v1._1) { return DeclGroupSame; } + return DeclGroupHard; + } + if (v1.tag === "DeclGroupTypeSignature") { return DeclGroupHard; } + if (v1.tag === "DeclGroupInstance") { return DeclGroupHard; } + if (v1.tag === "DeclGroupFixity") { return DeclGroupHard; } + if (v1.tag === "DeclGroupForeign") { return DeclGroupHard; } + if (v1.tag === "DeclGroupRole") { return DeclGroupHard; } + return DeclGroupSoft; + } + if (v1.tag === "DeclGroupTypeSignature") { return DeclGroupHard; } + if (v1.tag === "DeclGroupClass") { + if (v.tag === "DeclGroupClass") { return DeclGroupSoft; } + return DeclGroupHard; + } + if (v1.tag === "DeclGroupInstance") { + if (v.tag === "DeclGroupInstance") { return DeclGroupSoft; } + return DeclGroupHard; + } + if (v1.tag === "DeclGroupFixity") { + if (v.tag === "DeclGroupFixity") { return DeclGroupSoft; } + return DeclGroupHard; + } + if (v1.tag === "DeclGroupForeign") { + if (v.tag === "DeclGroupForeign") { return DeclGroupSoft; } + return DeclGroupHard; + } + if (v1.tag === "DeclGroupRole") { + if (v.tag === "DeclGroupRole") { return DeclGroupSoft; } + return DeclGroupHard; + } + return DeclGroupSoft; +})(v => { + if (v.tag === "DeclData") { return $DeclGroup("DeclGroupType", v._1.name.name); } + if (v.tag === "DeclType") { return $DeclGroup("DeclGroupType", v._1.name.name); } + if (v.tag === "DeclNewtype") { return $DeclGroup("DeclGroupType", v._1.name.name); } + if (v.tag === "DeclClass") { return $DeclGroup("DeclGroupClass", v._1.name.name); } + if (v.tag === "DeclKindSignature") { return $DeclGroup("DeclGroupTypeSignature", v._2.label.name); } + if (v.tag === "DeclSignature") { return $DeclGroup("DeclGroupValueSignature", v._1.label.name); } + if (v.tag === "DeclValue") { return $DeclGroup("DeclGroupValue", v._1.name.name); } + if (v.tag === "DeclInstanceChain") { return DeclGroupInstance; } + if (v.tag === "DeclDerive") { return DeclGroupInstance; } + if (v.tag === "DeclFixity") { return DeclGroupFixity; } + if (v.tag === "DeclForeign") { return DeclGroupForeign; } + if (v.tag === "DeclRole") { return DeclGroupRole; } + if (v.tag === "DeclError") { return DeclGroupUnknown; } + $runtime.fail(); +})(formatDecl); +const formatModule = conf => v => { + const imports = (() => { + if (conf.importSort.tag === "ImportSortSource") { + return Tidy$dDoc.joinWithMap(Data$dFoldable.foldableArray)(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break))))(x => formatImportDecl(conf)(x))(v.header.imports); + } + if (conf.importSort.tag === "ImportSortIde") { + const v1 = Data$dArray.partition(v1 => { + if (v1.qualified.tag === "Nothing") { + if (v1.names.tag === "Nothing") { return true; } + if (v1.names.tag === "Just") { return v1.names._1._1.tag === "Just"; } + return false; + } + return false; + })(Data$dFunctor.arrayMap(Data$dTuple.snd)(Data$dArray.sortWith(ordImportModuleComparison)(Data$dTuple.fst)(Data$dFunctor.arrayMap(v1 => { + const qualName = (() => { + if (v1.qualified.tag === "Just") { return Data$dMaybe.$Maybe("Just", v1.qualified._1._2.name); } + return Data$dMaybe.Nothing; + })(); + if (v1.names.tag === "Just") { + const v2 = sortImportsIde(v1.names._1._2); + return Data$dTuple.$Tuple( + $ImportModuleComparison( + v1.module.name, + (() => { + if ( + (() => { + if (v1.names._1._1.tag === "Nothing") { return false; } + if (v1.names._1._1.tag === "Just") { return true; } + $runtime.fail(); + })() + ) { + return 3; + } + return 1; + })(), + v2._1, + qualName + ), + {keyword: v1.keyword, module: v1.module, names: Data$dMaybe.$Maybe("Just", Data$dTuple.$Tuple(v1.names._1._1, v2._2)), qualified: v1.qualified} + ); + } + if (v1.names.tag === "Nothing") { return Data$dTuple.$Tuple($ImportModuleComparison(v1.module.name, 2, [], qualName), v1); } + $runtime.fail(); + })(v.header.imports)))); + return Tidy$dDoc.joinDoc(Tidy$dDoc.force(Tidy$dDoc.identity))(Tidy$dDoc.joinWithMap(Data$dFoldable.foldableArray)(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break))))(x => Tidy$dDoc.flattenMax(0)(formatImportDecl(conf)(x)))(v1.yes))(Tidy$dDoc.forceMinSourceBreaks(2)(Tidy$dDoc.joinWithMap(Data$dFoldable.foldableArray)(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break))))(x => Tidy$dDoc.flattenMax(0)(formatImportDecl(conf)(x)))(v1.no))); + } + $runtime.fail(); + })(); + return Tidy$dDoc.joinWithMap(Data$dFoldable.foldableArray)(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.Break))))(Tidy$dDoc.identity)([ + Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " "))))((() => { + const $3 = formatToken(conf)(v.header.keyword); + if ($3.leading.lines > 0) { + return { + doc: $3.doc, + isEmpty: $3.isEmpty, + leading: {doc: $3.leading.doc, left: $3.leading.left, lines: 0, multiline: $3.leading.multiline, right: $3.leading.right}, + multiline: true, + trailing: $3.trailing + }; + } + return $3; + })())(Tidy$dDoc.indent(Tidy$dDoc.joinDoc(Tidy$dDoc.force(Dodo$dInternal.semigroupDoc.append(Dodo$dInternal.$Doc("Text", 1, " "))))(Tidy$dDoc.flexSpaceBreak((() => { + const $3 = formatToken(conf)(v.header.name.token); + if ($3.leading.lines > 0) { + return { + doc: $3.doc, + isEmpty: $3.isEmpty, + leading: {doc: $3.leading.doc, left: $3.leading.left, lines: 0, multiline: $3.leading.multiline, right: $3.leading.right}, + multiline: true, + trailing: $3.trailing + }; + } + return $3; + })())((() => { + const $3 = (() => { + if (v.header.exports.tag === "Nothing") { return Tidy$dDoc.monoidFormatDoc.mempty; } + if (v.header.exports.tag === "Just") { return formatDelimitedNonEmpty(Tidy$dDoc.softSpace)(Tidy$dDoc.softBreak)(2)(NotGrouped)(formatExport)(conf)(v.header.exports._1); } + $runtime.fail(); + })(); + if ($3.leading.lines > 0) { + return { + doc: $3.doc, + isEmpty: $3.isEmpty, + leading: {doc: $3.leading.doc, left: $3.leading.left, lines: 0, multiline: $3.leading.multiline, right: $3.leading.right}, + multiline: true, + trailing: $3.trailing + }; + } + return $3; + })()))((() => { + const $3 = formatToken(conf)(v.header.where); + if ($3.leading.lines > 0) { + return { + doc: $3.doc, + isEmpty: $3.isEmpty, + leading: {doc: $3.leading.doc, left: $3.leading.left, lines: 0, multiline: $3.leading.multiline, right: $3.leading.right}, + multiline: true, + trailing: $3.trailing + }; + } + return $3; + })()))), + Tidy$dDoc.forceMinSourceBreaks(2)((() => { + if (conf.importWrap.tag === "ImportWrapAuto") { return imports; } + if (conf.importWrap.tag === "ImportWrapSource") { + return Tidy$dDoc.locally(v1 => ( + {indent: v1.indent, indentSpaces: v1.indentSpaces, indentUnit: v1.indentUnit, indentWidth: v1.indentWidth, pageWidth: 2147483647, ribbonRatio: 1.0} + ))(imports); + } + $runtime.fail(); + })()), + Tidy$dDoc.forceMinSourceBreaks(2)(formatTopLevelGroups(conf)(v.body.decls)), + Data$dFoldable.foldrArray(formatComment(Tidy$dDoc.leadingLineComment)(Tidy$dDoc.leadingBlockComment))(Tidy$dDoc.monoidFormatDoc.mempty)(v.body.trailingComments) + ]); +}; +export { + $DeclGroup, + $DeclGroupSeparator, + $ElseIfChain, + $FormatGrouped, + $ImportComparison, + $ImportModuleComparison, + $ImportSortOption, + $ImportWrapOption, + $Poly, + $TypeArrowOption, + DeclGroupClass, + DeclGroupFixity, + DeclGroupForeign, + DeclGroupHard, + DeclGroupInstance, + DeclGroupRole, + DeclGroupSame, + DeclGroupSoft, + DeclGroupType, + DeclGroupTypeSignature, + DeclGroupUnknown, + DeclGroupValue, + DeclGroupValueSignature, + Else, + ElseIfThen, + Grouped, + IfThen, + ImportClassCmp, + ImportErrorCmp, + ImportModuleCmp, + ImportOpCmp, + ImportSortIde, + ImportSortSource, + ImportTypeCmp, + ImportTypeOpCmp, + ImportValueCmp, + ImportWrapAuto, + ImportWrapSource, + NotGrouped, + PolyArrow, + PolyForall, + TypeArrowFirst, + TypeArrowLast, + compare3, + compare7, + compare8, + declareHanging, + defaultFormatOptions, + eq10, + eq5, + eqImportComparison, + eqImportModuleComparison, + eqImportSortOpion, + eqImportWrapOption, + eqTypeArrowOption, + flatten, + foldMap2, + foldMap3, + formatBasicList, + formatBasicListNonEmpty, + formatBinder, + formatCaseBranch, + formatClassHead, + formatComment, + formatConstraints, + formatDataCtor, + formatDataHead, + formatDataMembers, + formatDecl, + formatDeclGroups, + formatDelimited, + formatDelimitedNonEmpty, + formatDoStatement, + formatElseIfChain, + formatEmptyList, + formatError, + formatErrorRecoveredError, + formatErrorVoid, + formatExport, + formatExpr, + formatFundep, + formatGuardedExpr, + formatHangingBinder, + formatHangingDataCtor, + formatHangingExpr, + formatHangingMonotype, + formatHangingOperatorTree, + formatHangingPolytype, + formatHangingType, + formatImport, + formatImportDecl, + formatInstance, + formatInstanceBinding, + formatInstanceHead, + formatKindedTypeVarBinding, + formatLetBinding, + formatLetGroups, + formatList, + formatListElem, + formatListTail, + formatModule, + formatMonotype, + formatName, + formatOneOrDelimited, + formatParens, + formatParensBlock, + formatPatternGuard, + formatQualifiedName, + formatRawString, + formatRecordLabeled, + formatRecordUpdate, + formatRow, + formatRowLabeled, + formatSignature, + formatString, + formatToken, + formatTopLevelGroups, + formatType, + formatTypeVarBinding, + formatValueBinding, + formatWhere, + formatWithComments, + identity, + intercalate, + lines, + max, + ordImportComparison, + ordImportModuleComparison, + power, + power1, + sortImportsIde, + toElseIfChain, + toPolytype +}; diff --git a/.storybook/purescript-indexer/output-es/Type.Data.Boolean/index.js b/.storybook/purescript-indexer/output-es/Type.Data.Boolean/index.js new file mode 100644 index 0000000..2fa9640 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Type.Data.Boolean/index.js @@ -0,0 +1,22 @@ +import * as $runtime from "../runtime.js"; +import * as Type$dProxy from "../Type.Proxy/index.js"; +const reflectBoolean = dict => dict.reflectBoolean; +const orTrue = {}; +const orFalse = {}; +const or = () => v => v1 => Type$dProxy.Proxy; +const notTrue = {}; +const notFalse = {}; +const not = () => v => Type$dProxy.Proxy; +const isBooleanTrue = {reflectBoolean: v => true}; +const isBooleanFalse = {reflectBoolean: v => false}; +const reifyBoolean = v => v1 => { + if (v) { return v1(isBooleanTrue)(Type$dProxy.Proxy); } + return v1(isBooleanFalse)(Type$dProxy.Proxy); +}; +const if_ = () => v => v1 => v2 => Type$dProxy.Proxy; +const ifTrue = {}; +const ifFalse = {}; +const andTrue = {}; +const andFalse = {}; +const and = () => v => v1 => Type$dProxy.Proxy; +export {and, andFalse, andTrue, ifFalse, ifTrue, if_, isBooleanFalse, isBooleanTrue, not, notFalse, notTrue, or, orFalse, orTrue, reflectBoolean, reifyBoolean}; diff --git a/.storybook/purescript-indexer/output-es/Type.Data.Ordering/index.js b/.storybook/purescript-indexer/output-es/Type.Data.Ordering/index.js new file mode 100644 index 0000000..ac4918f --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Type.Data.Ordering/index.js @@ -0,0 +1,56 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dOrdering from "../Data.Ordering/index.js"; +import * as Type$dProxy from "../Type.Proxy/index.js"; +const reflectOrdering = dict => dict.reflectOrdering; +const isOrderingLT = {reflectOrdering: v => Data$dOrdering.LT}; +const isOrderingGT = {reflectOrdering: v => Data$dOrdering.GT}; +const isOrderingEQ = {reflectOrdering: v => Data$dOrdering.EQ}; +const reifyOrdering = v => v1 => { + if (v.tag === "LT") { return v1(isOrderingLT)(Type$dProxy.Proxy); } + if (v.tag === "EQ") { return v1(isOrderingEQ)(Type$dProxy.Proxy); } + if (v.tag === "GT") { return v1(isOrderingGT)(Type$dProxy.Proxy); } + $runtime.fail(); +}; +const invertOrderingLT = {}; +const invertOrderingGT = {}; +const invertOrderingEQ = {}; +const invert = () => v => Type$dProxy.Proxy; +const equalsLTLT = {}; +const equalsLTGT = {}; +const equalsLTEQ = {}; +const equalsGTLT = {}; +const equalsGTGT = {}; +const equalsGTEQ = {}; +const equalsEQLT = {}; +const equalsEQGT = {}; +const equalsEQEQ = {}; +const equals = () => v => v1 => Type$dProxy.Proxy; +const appendOrderingLT = {}; +const appendOrderingGT = {}; +const appendOrderingEQ = {}; +const append = () => v => v1 => Type$dProxy.Proxy; +export { + append, + appendOrderingEQ, + appendOrderingGT, + appendOrderingLT, + equals, + equalsEQEQ, + equalsEQGT, + equalsEQLT, + equalsGTEQ, + equalsGTGT, + equalsGTLT, + equalsLTEQ, + equalsLTGT, + equalsLTLT, + invert, + invertOrderingEQ, + invertOrderingGT, + invertOrderingLT, + isOrderingEQ, + isOrderingGT, + isOrderingLT, + reflectOrdering, + reifyOrdering +}; diff --git a/.storybook/purescript-indexer/output-es/Type.Data.Symbol/index.js b/.storybook/purescript-indexer/output-es/Type.Data.Symbol/index.js new file mode 100644 index 0000000..66ca109 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Type.Data.Symbol/index.js @@ -0,0 +1,8 @@ +import * as $runtime from "../runtime.js"; +import * as Type$dProxy from "../Type.Proxy/index.js"; +const uncons = () => v => ({head: Type$dProxy.Proxy, tail: Type$dProxy.Proxy}); +const equalsSymbol = () => () => ({}); +const equals = () => v => v1 => Type$dProxy.Proxy; +const compare = () => v => v1 => Type$dProxy.Proxy; +const append = () => v => v1 => Type$dProxy.Proxy; +export {append, compare, equals, equalsSymbol, uncons}; diff --git a/.storybook/purescript-indexer/output-es/Type.Equality/index.js b/.storybook/purescript-indexer/output-es/Type.Equality/index.js new file mode 100644 index 0000000..be150c4 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Type.Equality/index.js @@ -0,0 +1,6 @@ +import * as $runtime from "../runtime.js"; +const refl = {proof: a => a, Coercible0: () => undefined}; +const proof = dict => dict.proof; +const to = dictTypeEquals => dictTypeEquals.proof(a => a); +const from = dictTypeEquals => dictTypeEquals.proof(a => a); +export {from, proof, refl, to}; diff --git a/.storybook/purescript-indexer/output-es/Type.Function/index.js b/.storybook/purescript-indexer/output-es/Type.Function/index.js new file mode 100644 index 0000000..2d3a7c9 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Type.Function/index.js @@ -0,0 +1,2 @@ +import * as $runtime from "../runtime.js"; +export {}; diff --git a/.storybook/purescript-indexer/output-es/Type.Prelude/index.js b/.storybook/purescript-indexer/output-es/Type.Prelude/index.js new file mode 100644 index 0000000..2d3a7c9 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Type.Prelude/index.js @@ -0,0 +1,2 @@ +import * as $runtime from "../runtime.js"; +export {}; diff --git a/.storybook/purescript-indexer/output-es/Type.Proxy/index.js b/.storybook/purescript-indexer/output-es/Type.Proxy/index.js new file mode 100644 index 0000000..dd9a69f --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Type.Proxy/index.js @@ -0,0 +1,52 @@ +// | The `Proxy` type and values are for situations where type information is +// | required for an input to determine the type of an output, but where it is +// | not possible or convenient to provide a _value_ for the input. +// | +// | A hypothetical example: if you have a class that is used to handle the +// | result of an AJAX request, you may want to use this information to set the +// | expected content type of the request, so you might have a class something +// | like this: +// | +// | ``` purescript +// | class AjaxResponse a where +// | responseType :: a -> ResponseType +// | fromResponse :: Foreign -> a +// | ``` +// | +// | The problem here is `responseType` requires a value of type `a`, but we +// | won't have a value of that type until the request has been completed. The +// | solution is to use a `Proxy` type instead: +// | +// | ``` purescript +// | class AjaxResponse a where +// | responseType :: Proxy a -> ResponseType +// | fromResponse :: Foreign -> a +// | ``` +// | +// | We can now call `responseType (Proxy :: Proxy SomeContentType)` to produce +// | a `ResponseType` for `SomeContentType` without having to construct some +// | empty version of `SomeContentType` first. In situations like this where +// | the `Proxy` type can be statically determined, it is recommended to pull +// | out the definition to the top level and make a declaration like: +// | +// | ``` purescript +// | _SomeContentType :: Proxy SomeContentType +// | _SomeContentType = Proxy +// | ``` +// | +// | That way the proxy value can be used as `responseType _SomeContentType` +// | for improved readability. However, this is not always possible, sometimes +// | the type required will be determined by a type variable. As PureScript has +// | scoped type variables, we can do things like this: +// | +// | ``` purescript +// | makeRequest :: URL -> ResponseType -> Aff _ Foreign +// | makeRequest = ... +// | +// | fetchData :: forall a. (AjaxResponse a) => URL -> Aff _ a +// | fetchData url = fromResponse <$> makeRequest url (responseType (Proxy :: Proxy a)) +// | ``` +import * as $runtime from "../runtime.js"; +const $Proxy = () => ({tag: "Proxy"}); +const $$Proxy = /* #__PURE__ */ $Proxy(); +export {$Proxy, $$Proxy as Proxy}; diff --git a/.storybook/purescript-indexer/output-es/Type.Row.Homogeneous/index.js b/.storybook/purescript-indexer/output-es/Type.Row.Homogeneous/index.js new file mode 100644 index 0000000..d9e4690 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Type.Row.Homogeneous/index.js @@ -0,0 +1,5 @@ +import * as $runtime from "../runtime.js"; +const homogeneousRowListNil = {}; +const homogeneousRowListCons = () => dictTypeEquals => ({}); +const homogeneous = () => () => ({}); +export {homogeneous, homogeneousRowListCons, homogeneousRowListNil}; diff --git a/.storybook/purescript-indexer/output-es/Type.Row/index.js b/.storybook/purescript-indexer/output-es/Type.Row/index.js new file mode 100644 index 0000000..2d3a7c9 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Type.Row/index.js @@ -0,0 +1,2 @@ +import * as $runtime from "../runtime.js"; +export {}; diff --git a/.storybook/purescript-indexer/output-es/Type.RowList/index.js b/.storybook/purescript-indexer/output-es/Type.RowList/index.js new file mode 100644 index 0000000..97373aa --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Type.RowList/index.js @@ -0,0 +1,11 @@ +import * as $runtime from "../runtime.js"; +const rowListSetImpl = dictTypeEquals => dictTypeEquals1 => () => ({}); +const rowListRemoveNil = {}; +const rowListRemoveCons = () => () => () => ({}); +const rowListNubNil = {}; +const rowListNubCons = dictTypeEquals => dictTypeEquals1 => dictTypeEquals2 => () => () => ({}); +const rowListAppendNil = dictTypeEquals => ({}); +const rowListAppendCons = () => dictTypeEquals => ({}); +const listToRowNil = {}; +const listToRowCons = () => () => ({}); +export {listToRowCons, listToRowNil, rowListAppendCons, rowListAppendNil, rowListNubCons, rowListNubNil, rowListRemoveCons, rowListRemoveNil, rowListSetImpl}; diff --git a/.storybook/purescript-indexer/output-es/Unsafe.Coerce/foreign.js b/.storybook/purescript-indexer/output-es/Unsafe.Coerce/foreign.js new file mode 100644 index 0000000..6c7317a --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Unsafe.Coerce/foreign.js @@ -0,0 +1,5 @@ +// module Unsafe.Coerce + +export const unsafeCoerce = function (x) { + return x; +}; diff --git a/.storybook/purescript-indexer/output-es/Unsafe.Coerce/index.js b/.storybook/purescript-indexer/output-es/Unsafe.Coerce/index.js new file mode 100644 index 0000000..33219c7 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Unsafe.Coerce/index.js @@ -0,0 +1,4 @@ +import * as $runtime from "../runtime.js"; +import {unsafeCoerce} from "./foreign.js"; +export {}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/Yoga.JSON.Error/index.js b/.storybook/purescript-indexer/output-es/Yoga.JSON.Error/index.js new file mode 100644 index 0000000..18a03c2 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Yoga.JSON.Error/index.js @@ -0,0 +1,63 @@ +import * as $runtime from "../runtime.js"; +import * as Data$dShow from "../Data.Show/index.js"; +const toJSONPath = fe => { + const go = v => { + if (v.tag === "ForeignError") { return ""; } + if (v.tag === "TypeMismatch") { return ""; } + if (v.tag === "ErrorAtIndex") { return "[" + (Data$dShow.showIntImpl(v._1) + ("]" + go(v._2))); } + if (v.tag === "ErrorAtProperty") { + if (v._2.tag === "TypeMismatch") { + if (v._2._2 === "undefined") { return ""; } + return "." + (v._1 + go(v._2)); + } + return "." + (v._1 + go(v._2)); + } + $runtime.fail(); + }; + return "$" + go(fe); +}; +const errorToJSON = err => { + const path = toJSONPath(err); + 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 === "ForeignError") { + go$c = false; + go$r = {path: path, message: v._1}; + continue; + } + if (v.tag === "TypeMismatch") { + if (v._2 === "Undefined") { + go$c = false; + go$r = {path: path, message: "Must provide a value of type '" + (v._1 + "'")}; + continue; + } + if (v._2 === "undefined") { + go$c = false; + go$r = {path: path, message: "Must provide a value of type '" + (v._1 + "'")}; + continue; + } + go$c = false; + go$r = {path: path, message: "Must provide a value of type '" + (v._1 + ("' instead of '" + (v._2 + "'")))}; + continue; + } + if (v.tag === "ErrorAtIndex") { + go$a0 = v._2; + continue; + } + if (v.tag === "ErrorAtProperty") { + go$a0 = v._2; + continue; + } + $runtime.fail(); + }; + return go$r; + }; + return go(err); +}; +const renderHumanError = x => { + const $1 = errorToJSON(x); + return $1.message + (" at " + $1.path); +}; +export {errorToJSON, renderHumanError, toJSONPath}; diff --git a/.storybook/purescript-indexer/output-es/Yoga.JSON.Generics.EnumSumRep/index.js b/.storybook/purescript-indexer/output-es/Yoga.JSON.Generics.EnumSumRep/index.js new file mode 100644 index 0000000..2e305ee --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Yoga.JSON.Generics.EnumSumRep/index.js @@ -0,0 +1,72 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dExcept$dTrans from "../Control.Monad.Except.Trans/index.js"; +import * as Data$dEither from "../Data.Either/index.js"; +import * as Data$dGeneric$dRep from "../Data.Generic.Rep/index.js"; +import * as Data$dIdentity from "../Data.Identity/index.js"; +import * as Data$dList$dTypes from "../Data.List.Types/index.js"; +import * as Data$dNonEmpty from "../Data.NonEmpty/index.js"; +import * as Foreign from "../Foreign/index.js"; +import * as Type$dProxy from "../Type.Proxy/index.js"; +import * as Yoga$dJSON from "../Yoga.JSON/index.js"; +const bind = /* #__PURE__ */ (() => Control$dMonad$dExcept$dTrans.bindExceptT(Data$dIdentity.monadIdentity).bind)(); +const pure = /* #__PURE__ */ (() => Control$dMonad$dExcept$dTrans.applicativeExceptT(Data$dIdentity.monadIdentity).pure)(); +const fail = /* #__PURE__ */ (() => { + const $0 = Control$dMonad$dExcept$dTrans.monadThrowExceptT(Data$dIdentity.monadIdentity).throwError; + return x => $0(Data$dNonEmpty.$NonEmpty(x, Data$dList$dTypes.Nil)); +})(); +const alt = /* #__PURE__ */ (() => Control$dMonad$dExcept$dTrans.altExceptT(Data$dList$dTypes.semigroupNonEmptyList)(Data$dIdentity.monadIdentity).alt)(); +const genericEnumSumRepConstruc = dictIsSymbol => ( + { + genericEnumReadForeign: options => f => { + const name = dictIsSymbol.reflectSymbol(Type$dProxy.Proxy); + return bind(Yoga$dJSON.readString(f))(s => { + if (s === options.toConstructorName(name)) { return pure(Data$dGeneric$dRep.NoArguments); } + return fail(Foreign.$ForeignError("ForeignError", "Enum string " + (s + (" did not match expected string " + options.toConstructorName(name))))); + }); + }, + genericEnumWriteForeign: options => v => options.toConstructorName(dictIsSymbol.reflectSymbol(Type$dProxy.Proxy)) + } +); +const genericEnumWriteForeign = dict => dict.genericEnumWriteForeign; +const genericWriteForeignEnum = dictGeneric => dictGenericEnumSumRep => options => a => dictGenericEnumSumRep.genericEnumWriteForeign(options)(dictGeneric.from(a)); +const genericEnumReadForeign = dict => dict.genericEnumReadForeign; +const genericReadForeignEnum = dictGeneric => dictGenericEnumSumRep => options => f => { + const $4 = dictGenericEnumSumRep.genericEnumReadForeign(options)(f); + if ($4.tag === "Left") { return Data$dEither.$Either("Left", $4._1); } + if ($4.tag === "Right") { return Data$dEither.$Either("Right", dictGeneric.to($4._1)); } + $runtime.fail(); +}; +const genericEnumSumRepSum = dictGenericEnumSumRep => dictGenericEnumSumRep1 => ( + { + genericEnumReadForeign: options => f => alt((() => { + const $4 = dictGenericEnumSumRep.genericEnumReadForeign(options)(f); + if ($4.tag === "Left") { return Data$dEither.$Either("Left", $4._1); } + if ($4.tag === "Right") { return Data$dEither.$Either("Right", Data$dGeneric$dRep.$Sum("Inl", $4._1)); } + $runtime.fail(); + })())((() => { + const $4 = dictGenericEnumSumRep1.genericEnumReadForeign(options)(f); + if ($4.tag === "Left") { return Data$dEither.$Either("Left", $4._1); } + if ($4.tag === "Right") { return Data$dEither.$Either("Right", Data$dGeneric$dRep.$Sum("Inr", $4._1)); } + $runtime.fail(); + })()), + genericEnumWriteForeign: options => v => { + if (v.tag === "Inl") { return dictGenericEnumSumRep.genericEnumWriteForeign(options)(v._1); } + if (v.tag === "Inr") { return dictGenericEnumSumRep1.genericEnumWriteForeign(options)(v._1); } + $runtime.fail(); + } + } +); +const defaultOptions = {toConstructorName: x => x}; +export { + alt, + bind, + defaultOptions, + fail, + genericEnumReadForeign, + genericEnumSumRepConstruc, + genericEnumSumRepSum, + genericEnumWriteForeign, + genericReadForeignEnum, + genericWriteForeignEnum, + pure +}; diff --git a/.storybook/purescript-indexer/output-es/Yoga.JSON.Generics.TaggedSumRep/index.js b/.storybook/purescript-indexer/output-es/Yoga.JSON.Generics.TaggedSumRep/index.js new file mode 100644 index 0000000..9a444d5 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Yoga.JSON.Generics.TaggedSumRep/index.js @@ -0,0 +1,150 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dExcept$dTrans from "../Control.Monad.Except.Trans/index.js"; +import * as Data$dEither from "../Data.Either/index.js"; +import * as Data$dFoldable from "../Data.Foldable/index.js"; +import * as Data$dGeneric$dRep from "../Data.Generic.Rep/index.js"; +import * as Data$dIdentity from "../Data.Identity/index.js"; +import * as Data$dList$dTypes from "../Data.List.Types/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dNonEmpty from "../Data.NonEmpty/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +import * as Foreign from "../Foreign/index.js"; +import * as Foreign$dObject from "../Foreign.Object/index.js"; +import * as Type$dProxy from "../Type.Proxy/index.js"; +import * as Yoga$dJSON from "../Yoga.JSON/index.js"; +const bind = /* #__PURE__ */ (() => Control$dMonad$dExcept$dTrans.bindExceptT(Data$dIdentity.monadIdentity).bind)(); +const read$p = /* #__PURE__ */ (() => Yoga$dJSON.readForeignObject(Yoga$dJSON.readForeignForeign).readImpl)(); +const fail = /* #__PURE__ */ (() => { + const $0 = Control$dMonad$dExcept$dTrans.monadThrowExceptT(Data$dIdentity.monadIdentity).throwError; + return x => $0(Data$dNonEmpty.$NonEmpty(x, Data$dList$dTypes.Nil)); +})(); +const pure = /* #__PURE__ */ (() => Control$dMonad$dExcept$dTrans.applicativeExceptT(Data$dIdentity.monadIdentity).pure)(); +const fromFoldable = /* #__PURE__ */ Foreign$dObject.fromFoldable(Data$dFoldable.foldableArray); +const alt = /* #__PURE__ */ (() => Control$dMonad$dExcept$dTrans.altExceptT(Data$dList$dTypes.semigroupNonEmptyList)(Data$dIdentity.monadIdentity).alt)(); +const writeGenericTaggedSumRepN = {genericWriteForeignTaggedSumRep: v => v1 => Yoga$dJSON._undefined}; +const writeGenericTaggedSumRepA = dictWriteForeign => ({genericWriteForeignTaggedSumRep: v => v1 => dictWriteForeign.writeImpl(v1)}); +const readGenericTaggedSumRepCo = dictIsSymbol => ( + { + genericReadForeignTaggedSumRep: v => f => { + const name = v.toConstructorName(dictIsSymbol.reflectSymbol(Type$dProxy.Proxy)); + return bind(read$p(f))(v1 => bind((() => { + const $5 = fail(Foreign.$ForeignError("ErrorAtProperty", v.typeTag, Foreign.$ForeignError("ForeignError", "Missing type tag: " + v.typeTag))); + const $6 = Foreign$dObject._lookup(Data$dMaybe.Nothing, Data$dMaybe.Just, v.typeTag, v1); + if ($6.tag === "Nothing") { return $5; } + if ($6.tag === "Just") { return pure($6._1); } + $runtime.fail(); + })())(typeFgn => bind(Yoga$dJSON.readString(typeFgn))(typeStr => { + if (typeStr === name) { + return Control$dMonad$dExcept$dTrans.withExceptT(Data$dIdentity.functorIdentity)(Data$dList$dTypes.functorNonEmptyList.map(Foreign.ErrorAtProperty(name)))(pure(Data$dGeneric$dRep.NoArguments)); + } + return fail(Foreign.$ForeignError("ForeignError", "Wrong type tag " + (typeStr + (" where " + (v.typeTag + " was expected."))))); + }))); + } + } +); +const readGenericTaggedSumRepAr = dictReadForeign => ( + { + genericReadForeignTaggedSumRep: v => f => { + const $3 = dictReadForeign.readImpl(f); + if ($3.tag === "Left") { return Data$dEither.$Either("Left", $3._1); } + if ($3.tag === "Right") { return Data$dEither.$Either("Right", $3._1); } + $runtime.fail(); + } + } +); +const genericWriteForeignTaggedSumRep = dict => dict.genericWriteForeignTaggedSumRep; +const writeGenericTaggedSumRepC = dictWriteGenericTaggedSumRep => dictIsSymbol => ( + { + genericWriteForeignTaggedSumRep: v => v1 => Foreign$dObject._mapWithKey( + fromFoldable([ + Data$dTuple.$Tuple(v.typeTag, v.toConstructorName(dictIsSymbol.reflectSymbol(Type$dProxy.Proxy))), + Data$dTuple.$Tuple(v.valueTag, dictWriteGenericTaggedSumRep.genericWriteForeignTaggedSumRep(v)(v1)) + ]), + v$1 => Yoga$dJSON.writeForeignForeign.writeImpl + ) + } +); +const writeGenericTaggedSumRepS = dictWriteGenericTaggedSumRep => dictWriteGenericTaggedSumRep1 => ( + { + genericWriteForeignTaggedSumRep: options => v => { + if (v.tag === "Inl") { return dictWriteGenericTaggedSumRep.genericWriteForeignTaggedSumRep(options)(v._1); } + if (v.tag === "Inr") { return dictWriteGenericTaggedSumRep1.genericWriteForeignTaggedSumRep(options)(v._1); } + $runtime.fail(); + } + } +); +const genericWriteForeignTaggedSum = dictGeneric => dictWriteGenericTaggedSumRep => options => r => dictWriteGenericTaggedSumRep.genericWriteForeignTaggedSumRep(options)(dictGeneric.from(r)); +const genericReadForeignTaggedSumRep = dict => dict.genericReadForeignTaggedSumRep; +const readGenericTaggedSumRepCo1 = dictReadGenericTaggedSumRep => dictIsSymbol => ( + { + genericReadForeignTaggedSumRep: v => f => { + const name = v.toConstructorName(dictIsSymbol.reflectSymbol(Type$dProxy.Proxy)); + return bind(read$p(f))(v1 => bind((() => { + const $6 = fail(Foreign.$ForeignError("ErrorAtProperty", v.typeTag, Foreign.$ForeignError("ForeignError", "Missing type tag: " + v.typeTag))); + const $7 = Foreign$dObject._lookup(Data$dMaybe.Nothing, Data$dMaybe.Just, v.typeTag, v1); + if ($7.tag === "Nothing") { return $6; } + if ($7.tag === "Just") { return pure($7._1); } + $runtime.fail(); + })())(typeFgn => bind(Yoga$dJSON.readString(typeFgn))(typeStr => bind((() => { + const $8 = fail(Foreign.$ForeignError("ErrorAtProperty", v.valueTag, Foreign.$ForeignError("ForeignError", "Missing value tag: " + v.valueTag))); + const $9 = Foreign$dObject._lookup(Data$dMaybe.Nothing, Data$dMaybe.Just, v.valueTag, v1); + if ($9.tag === "Nothing") { return $8; } + if ($9.tag === "Just") { return pure($9._1); } + $runtime.fail(); + })())(value => { + if (typeStr === name) { + return Control$dMonad$dExcept$dTrans.withExceptT(Data$dIdentity.functorIdentity)(Data$dList$dTypes.functorNonEmptyList.map(Foreign.ErrorAtProperty(name)))((() => { + const $9 = dictReadGenericTaggedSumRep.genericReadForeignTaggedSumRep(v)(value); + if ($9.tag === "Left") { return Data$dEither.$Either("Left", $9._1); } + if ($9.tag === "Right") { return Data$dEither.$Either("Right", $9._1); } + $runtime.fail(); + })()); + } + return fail(Foreign.$ForeignError("ForeignError", "Wrong constructor name tag " + (typeStr + (" where " + (name + " was expected."))))); + })))); + } + } +); +const readGenericTaggedSumRepSu = dictReadGenericTaggedSumRep => dictReadGenericTaggedSumRep1 => ( + { + genericReadForeignTaggedSumRep: options => f => alt((() => { + const $4 = dictReadGenericTaggedSumRep.genericReadForeignTaggedSumRep(options)(f); + if ($4.tag === "Left") { return Data$dEither.$Either("Left", $4._1); } + if ($4.tag === "Right") { return Data$dEither.$Either("Right", Data$dGeneric$dRep.$Sum("Inl", $4._1)); } + $runtime.fail(); + })())((() => { + const $4 = dictReadGenericTaggedSumRep1.genericReadForeignTaggedSumRep(options)(f); + if ($4.tag === "Left") { return Data$dEither.$Either("Left", $4._1); } + if ($4.tag === "Right") { return Data$dEither.$Either("Right", Data$dGeneric$dRep.$Sum("Inr", $4._1)); } + $runtime.fail(); + })()) + } +); +const genericReadForeignTaggedSum = dictGeneric => dictReadGenericTaggedSumRep => options => f => { + const $4 = dictReadGenericTaggedSumRep.genericReadForeignTaggedSumRep(options)(f); + if ($4.tag === "Left") { return Data$dEither.$Either("Left", $4._1); } + if ($4.tag === "Right") { return Data$dEither.$Either("Right", dictGeneric.to($4._1)); } + $runtime.fail(); +}; +const defaultOptions = {typeTag: "type", valueTag: "value", toConstructorName: x => x}; +export { + alt, + bind, + defaultOptions, + fail, + fromFoldable, + genericReadForeignTaggedSum, + genericReadForeignTaggedSumRep, + genericWriteForeignTaggedSum, + genericWriteForeignTaggedSumRep, + pure, + read$p, + readGenericTaggedSumRepAr, + readGenericTaggedSumRepCo, + readGenericTaggedSumRepCo1, + readGenericTaggedSumRepSu, + writeGenericTaggedSumRepA, + writeGenericTaggedSumRepC, + writeGenericTaggedSumRepN, + writeGenericTaggedSumRepS +}; diff --git a/.storybook/purescript-indexer/output-es/Yoga.JSON.Generics.UntaggedProductRep/index.js b/.storybook/purescript-indexer/output-es/Yoga.JSON.Generics.UntaggedProductRep/index.js new file mode 100644 index 0000000..df11895 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Yoga.JSON.Generics.UntaggedProductRep/index.js @@ -0,0 +1,73 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dExcept$dTrans from "../Control.Monad.Except.Trans/index.js"; +import * as Control$dMonad$dST$dInternal from "../Control.Monad.ST.Internal/index.js"; +import * as Data$dArray$dST from "../Data.Array.ST/index.js"; +import * as Data$dEither from "../Data.Either/index.js"; +import * as Data$dFunctor from "../Data.Functor/index.js"; +import * as Data$dGeneric$dRep from "../Data.Generic.Rep/index.js"; +import * as Data$dIdentity from "../Data.Identity/index.js"; +import * as Foreign$dIndex from "../Foreign.Index/index.js"; +import * as Yoga$dJSON from "../Yoga.JSON/index.js"; +const bindExceptT = /* #__PURE__ */ Control$dMonad$dExcept$dTrans.bindExceptT(Data$dIdentity.monadIdentity); +const readIndex = /* #__PURE__ */ Foreign$dIndex.unsafeReadProp(Data$dIdentity.monadIdentity); +const pure = /* #__PURE__ */ (() => Control$dMonad$dExcept$dTrans.applicativeExceptT(Data$dIdentity.monadIdentity).pure)(); +const apply = /* #__PURE__ */ (() => Control$dMonad$dExcept$dTrans.applyExceptT(Data$dIdentity.monadIdentity).apply)(); +const writeGenericUntaggedProdu = dictWriteForeign => ( + {genericWriteForeignUntaggedProductRep: arr => v => Control$dMonad$dST$dInternal.run(Data$dArray$dST.withArray(Data$dArray$dST.pushAll([dictWriteForeign.writeImpl(v)]))(arr))} +); +const readGenericUntaggedProduc = dictReadForeign => ( + {genericReadForeignUntaggedProductRep: i => f => bindExceptT.bind(bindExceptT.bind(readIndex(i)(f))(dictReadForeign.readImpl))(x => pure(x))} +); +const genericWriteForeignUntaggedProductRep = dict => dict.genericWriteForeignUntaggedProductRep; +const writeGenericUntaggedProdu1 = dictWriteGenericUntaggedProduct => ( + {genericWriteForeignUntaggedProductRep: arr => v => dictWriteGenericUntaggedProduct.genericWriteForeignUntaggedProductRep(arr)(v)} +); +const writeGenericUntaggedProdu2 = dictWriteGenericUntaggedProduct => dictWriteGenericUntaggedProduct1 => ( + { + genericWriteForeignUntaggedProductRep: arr => v => dictWriteGenericUntaggedProduct1.genericWriteForeignUntaggedProductRep(dictWriteGenericUntaggedProduct.genericWriteForeignUntaggedProductRep(arr)(v._1))(v._2) + } +); +const genericWriteForeignUntaggedProduct = dictGeneric => dictWriteGenericUntaggedProduct => a => Data$dFunctor.arrayMap(Yoga$dJSON.writeForeignForeign.writeImpl)(dictWriteGenericUntaggedProduct.genericWriteForeignUntaggedProductRep([])(dictGeneric.from(a))); +const genericReadForeignUntaggedProductRep = dict => dict.genericReadForeignUntaggedProductRep; +const readGenericUntaggedProduc1 = dictReadGenericUntaggedProduct => ( + { + genericReadForeignUntaggedProductRep: i => f => { + const $3 = dictReadGenericUntaggedProduct.genericReadForeignUntaggedProductRep(i)(f); + if ($3.tag === "Left") { return Data$dEither.$Either("Left", $3._1); } + if ($3.tag === "Right") { return Data$dEither.$Either("Right", $3._1); } + $runtime.fail(); + } + } +); +const readGenericUntaggedProduc2 = dictReadGenericUntaggedProduct => dictReadGenericUntaggedProduct1 => ( + { + genericReadForeignUntaggedProductRep: i => f => apply((() => { + const $4 = dictReadGenericUntaggedProduct.genericReadForeignUntaggedProductRep(i)(f); + if ($4.tag === "Left") { return Data$dEither.$Either("Left", $4._1); } + if ($4.tag === "Right") { return Data$dEither.$Either("Right", Data$dGeneric$dRep.Product($4._1)); } + $runtime.fail(); + })())(dictReadGenericUntaggedProduct1.genericReadForeignUntaggedProductRep(i + 1 | 0)(f)) + } +); +const genericReadForeignUntaggedProduct = dictGeneric => dictReadGenericUntaggedProduct => f => { + const $3 = dictReadGenericUntaggedProduct.genericReadForeignUntaggedProductRep(0)(f); + if ($3.tag === "Left") { return Data$dEither.$Either("Left", $3._1); } + if ($3.tag === "Right") { return Data$dEither.$Either("Right", dictGeneric.to($3._1)); } + $runtime.fail(); +}; +export { + apply, + bindExceptT, + genericReadForeignUntaggedProduct, + genericReadForeignUntaggedProductRep, + genericWriteForeignUntaggedProduct, + genericWriteForeignUntaggedProductRep, + pure, + readGenericUntaggedProduc, + readGenericUntaggedProduc1, + readGenericUntaggedProduc2, + readIndex, + writeGenericUntaggedProdu, + writeGenericUntaggedProdu1, + writeGenericUntaggedProdu2 +}; diff --git a/.storybook/purescript-indexer/output-es/Yoga.JSON.Generics.UntaggedSumRep/index.js b/.storybook/purescript-indexer/output-es/Yoga.JSON.Generics.UntaggedSumRep/index.js new file mode 100644 index 0000000..52c0b50 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Yoga.JSON.Generics.UntaggedSumRep/index.js @@ -0,0 +1,75 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dExcept$dTrans from "../Control.Monad.Except.Trans/index.js"; +import * as Data$dEither from "../Data.Either/index.js"; +import * as Data$dGeneric$dRep from "../Data.Generic.Rep/index.js"; +import * as Data$dIdentity from "../Data.Identity/index.js"; +import * as Data$dList$dTypes from "../Data.List.Types/index.js"; +const alt = /* #__PURE__ */ (() => Control$dMonad$dExcept$dTrans.altExceptT(Data$dList$dTypes.semigroupNonEmptyList)(Data$dIdentity.monadIdentity).alt)(); +const writeGenericUntaggedSumRe = dictWriteForeign => ({genericWriteForeignUntaggedSumRep: v => dictWriteForeign.writeImpl(v)}); +const readGenericUntaggedSumRep = dictReadForeign => ( + { + genericReadForeignUntaggedSumRep: f => { + const $2 = dictReadForeign.readImpl(f); + if ($2.tag === "Left") { return Data$dEither.$Either("Left", $2._1); } + if ($2.tag === "Right") { return Data$dEither.$Either("Right", $2._1); } + $runtime.fail(); + } + } +); +const genericWriteForeignUntaggedSumRep = dict => dict.genericWriteForeignUntaggedSumRep; +const writeGenericUntaggedSumRe1 = dictWriteGenericUntaggedSumRep => dictWriteGenericUntaggedSumRep1 => ( + { + genericWriteForeignUntaggedSumRep: v => { + if (v.tag === "Inl") { return dictWriteGenericUntaggedSumRep.genericWriteForeignUntaggedSumRep(v._1); } + if (v.tag === "Inr") { return dictWriteGenericUntaggedSumRep1.genericWriteForeignUntaggedSumRep(v._1); } + $runtime.fail(); + } + } +); +const writeGenericUntaggedSumRe2 = dictWriteGenericUntaggedSumRep => ({genericWriteForeignUntaggedSumRep: v => dictWriteGenericUntaggedSumRep.genericWriteForeignUntaggedSumRep(v)}); +const genericWriteForeignUntaggedSum = dictGeneric => dictWriteGenericUntaggedSumRep => a => dictWriteGenericUntaggedSumRep.genericWriteForeignUntaggedSumRep(dictGeneric.from(a)); +const genericReadForeignUntaggedSumRep = dict => dict.genericReadForeignUntaggedSumRep; +const readGenericUntaggedSumRep1 = dictReadGenericUntaggedSumRep => dictReadGenericUntaggedSumRep1 => ( + { + genericReadForeignUntaggedSumRep: f => alt((() => { + const $3 = dictReadGenericUntaggedSumRep.genericReadForeignUntaggedSumRep(f); + if ($3.tag === "Left") { return Data$dEither.$Either("Left", $3._1); } + if ($3.tag === "Right") { return Data$dEither.$Either("Right", Data$dGeneric$dRep.$Sum("Inl", $3._1)); } + $runtime.fail(); + })())((() => { + const $3 = dictReadGenericUntaggedSumRep1.genericReadForeignUntaggedSumRep(f); + if ($3.tag === "Left") { return Data$dEither.$Either("Left", $3._1); } + if ($3.tag === "Right") { return Data$dEither.$Either("Right", Data$dGeneric$dRep.$Sum("Inr", $3._1)); } + $runtime.fail(); + })()) + } +); +const readGenericUntaggedSumRep2 = dictReadGenericUntaggedSumRep => ( + { + genericReadForeignUntaggedSumRep: f => { + const $2 = dictReadGenericUntaggedSumRep.genericReadForeignUntaggedSumRep(f); + if ($2.tag === "Left") { return Data$dEither.$Either("Left", $2._1); } + if ($2.tag === "Right") { return Data$dEither.$Either("Right", $2._1); } + $runtime.fail(); + } + } +); +const genericReadForeignUntaggedSum = dictGeneric => dictReadGenericUntaggedSumRep => f => { + const $3 = dictReadGenericUntaggedSumRep.genericReadForeignUntaggedSumRep(f); + if ($3.tag === "Left") { return Data$dEither.$Either("Left", $3._1); } + if ($3.tag === "Right") { return Data$dEither.$Either("Right", dictGeneric.to($3._1)); } + $runtime.fail(); +}; +export { + alt, + genericReadForeignUntaggedSum, + genericReadForeignUntaggedSumRep, + genericWriteForeignUntaggedSum, + genericWriteForeignUntaggedSumRep, + readGenericUntaggedSumRep, + readGenericUntaggedSumRep1, + readGenericUntaggedSumRep2, + writeGenericUntaggedSumRe, + writeGenericUntaggedSumRe1, + writeGenericUntaggedSumRe2 +}; diff --git a/.storybook/purescript-indexer/output-es/Yoga.JSON.Generics/index.js b/.storybook/purescript-indexer/output-es/Yoga.JSON.Generics/index.js new file mode 100644 index 0000000..2d3a7c9 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Yoga.JSON.Generics/index.js @@ -0,0 +1,2 @@ +import * as $runtime from "../runtime.js"; +export {}; diff --git a/.storybook/purescript-indexer/output-es/Yoga.JSON.Variant/index.js b/.storybook/purescript-indexer/output-es/Yoga.JSON.Variant/index.js new file mode 100644 index 0000000..1391ec3 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Yoga.JSON.Variant/index.js @@ -0,0 +1,127 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dMonad$dExcept$dTrans from "../Control.Monad.Except.Trans/index.js"; +import * as Data$dEither from "../Data.Either/index.js"; +import * as Data$dFoldable from "../Data.Foldable/index.js"; +import * as Data$dIdentity from "../Data.Identity/index.js"; +import * as Data$dList$dTypes from "../Data.List.Types/index.js"; +import * as Data$dNonEmpty from "../Data.NonEmpty/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +import * as Foreign from "../Foreign/index.js"; +import * as Foreign$dIndex from "../Foreign.Index/index.js"; +import * as Foreign$dObject from "../Foreign.Object/index.js"; +import * as Partial from "../Partial/index.js"; +import * as Type$dProxy from "../Type.Proxy/index.js"; +import * as Yoga$dJSON from "../Yoga.JSON/index.js"; +const fail = /* #__PURE__ */ (() => { + const $0 = Control$dMonad$dExcept$dTrans.monadThrowExceptT(Data$dIdentity.monadIdentity).throwError; + return x => $0(Data$dNonEmpty.$NonEmpty(x, Data$dList$dTypes.Nil)); +})(); +const fromFoldable = /* #__PURE__ */ Foreign$dObject.fromFoldable(Data$dFoldable.foldableArray); +const alt = /* #__PURE__ */ (() => Control$dMonad$dExcept$dTrans.altExceptT(Data$dList$dTypes.semigroupNonEmptyList)(Data$dIdentity.monadIdentity).alt)(); +const bind = /* #__PURE__ */ (() => Control$dMonad$dExcept$dTrans.bindExceptT(Data$dIdentity.monadIdentity).bind)(); +const readProp = /* #__PURE__ */ Foreign$dIndex.unsafeReadProp(Data$dIdentity.monadIdentity); +const pure = /* #__PURE__ */ (() => Control$dMonad$dExcept$dTrans.applicativeExceptT(Data$dIdentity.monadIdentity).pure)(); +const UntaggedVariant = x => x; +const TaggedVariant = x => x; +const writeForeignUntaggedVaria = {writeUntaggedVariantImpl: v => v1 => Partial._crashWith("Attempted to write empty Variant")}; +const writeForeignTaggedVariant = {writeVariantImpl: v => v1 => v2 => v3 => Partial._crashWith("Attempted to write empty Variant")}; +const showUntaggedVariant = dictShow => dictShow; +const showTaggedVariant = dictShow => dictShow; +const readForeignUntaggedVarian = {readUntaggedVariantImpl: v => v1 => fail(Foreign.$ForeignError("ForeignError", "Unable to match any variant member."))}; +const readForeignTaggedVariantN = {readVariantImpl: __ => v => fail(Foreign.$ForeignError("ForeignError", "Unable to match any variant member."))}; +const newtypeUntaggedVariantVar = {Coercible0: () => undefined}; +const newtypeTaggedVariantVaria = {Coercible0: () => undefined}; +const eqUntaggedVariant = dictEq => dictEq; +const eqTaggedVariant = dictEq => dictEq; +const writeVariantImpl = dict => dict.writeVariantImpl; +const writeForeignTaggedVariant1 = () => dictWriteForeignTaggedVariant => dictIsSymbol => dictIsSymbol1 => ( + { + writeImpl: v => dictWriteForeignTaggedVariant.writeVariantImpl(dictIsSymbol.reflectSymbol(Type$dProxy.Proxy))(dictIsSymbol1.reflectSymbol(Type$dProxy.Proxy))(Type$dProxy.Proxy)(v) + } +); +const writeForeignTaggedVariant2 = dictIsSymbol => dictWriteForeign => () => dictWriteForeignTaggedVariant => ( + { + writeVariantImpl: typeTag => valueTag => v => variant => { + const name = dictIsSymbol.reflectSymbol(Type$dProxy.Proxy); + const $9 = dictWriteForeignTaggedVariant.writeVariantImpl(typeTag)(valueTag)(Type$dProxy.Proxy); + if (variant.type === dictIsSymbol.reflectSymbol(Type$dProxy.Proxy)) { + return Foreign$dObject._mapWithKey( + fromFoldable([Data$dTuple.$Tuple(valueTag, dictWriteForeign.writeImpl(variant.value)), Data$dTuple.$Tuple(typeTag, name)]), + v$1 => Yoga$dJSON.writeForeignForeign.writeImpl + ); + } + return $9(variant); + } + } +); +const writeUntaggedVariantImpl = dict => dict.writeUntaggedVariantImpl; +const writeForeignUntaggedVaria1 = () => dictWriteForeignUntaggedVariant => ({writeImpl: v => dictWriteForeignUntaggedVariant.writeUntaggedVariantImpl(Type$dProxy.Proxy)(v)}); +const writeForeignUntaggedVaria2 = dictIsSymbol => dictWriteForeign => () => dictWriteForeignUntaggedVariant => ( + { + writeUntaggedVariantImpl: v => variant => { + const $6 = dictWriteForeignUntaggedVariant.writeUntaggedVariantImpl(Type$dProxy.Proxy); + if (variant.type === dictIsSymbol.reflectSymbol(Type$dProxy.Proxy)) { return dictWriteForeign.writeImpl(variant.value); } + return $6(variant); + } + } +); +const readVariantImpl = dict => dict.readVariantImpl; +const readForeignTaggedVariant = () => dictReadForeignTaggedVariant => dictIsSymbol => dictIsSymbol1 => ( + {readImpl: o => dictReadForeignTaggedVariant.readVariantImpl(Type$dProxy.Proxy)(o)} +); +const readForeignTaggedVariantC = dictIsSymbol => dictIsSymbol1 => dictIsSymbol2 => dictReadForeign => () => dictReadForeignTaggedVariant => ( + { + readVariantImpl: v => o => { + const valueTag = dictIsSymbol2.reflectSymbol(Type$dProxy.Proxy); + const name = dictIsSymbol.reflectSymbol(Type$dProxy.Proxy); + return alt(dictReadForeignTaggedVariant.readVariantImpl(Type$dProxy.Proxy)(o))(bind(bind(readProp(dictIsSymbol1.reflectSymbol(Type$dProxy.Proxy))(o))(Yoga$dJSON.readString))(type_ => { + if (type_ === name) { return bind(bind(readProp(valueTag)(o))(dictReadForeign.readImpl))(v1 => pure({type: dictIsSymbol.reflectSymbol(Type$dProxy.Proxy), value: v1})); } + return fail(Foreign.$ForeignError("ForeignError", "Did not match variant tag " + name)); + })); + } + } +); +const readUntaggedVariantImpl = dict => dict.readUntaggedVariantImpl; +const readForeignUntaggedVarian1 = () => dictReadForeignUntaggedVariant => ({readImpl: o => dictReadForeignUntaggedVariant.readUntaggedVariantImpl(Type$dProxy.Proxy)(o)}); +const readForeignUntaggedVarian2 = dictIsSymbol => dictReadForeign => () => dictReadForeignUntaggedVariant => ( + { + readUntaggedVariantImpl: v => o => alt(dictReadForeignUntaggedVariant.readUntaggedVariantImpl(Type$dProxy.Proxy)(o))((() => { + const $6 = dictReadForeign.readImpl(o); + if ($6.tag === "Left") { return Data$dEither.$Either("Left", $6._1); } + if ($6.tag === "Right") { return Data$dEither.$Either("Right", {type: dictIsSymbol.reflectSymbol(Type$dProxy.Proxy), value: $6._1}); } + $runtime.fail(); + })()) + } +); +export { + TaggedVariant, + UntaggedVariant, + alt, + bind, + eqTaggedVariant, + eqUntaggedVariant, + fail, + fromFoldable, + newtypeTaggedVariantVaria, + newtypeUntaggedVariantVar, + pure, + readForeignTaggedVariant, + readForeignTaggedVariantC, + readForeignTaggedVariantN, + readForeignUntaggedVarian, + readForeignUntaggedVarian1, + readForeignUntaggedVarian2, + readProp, + readUntaggedVariantImpl, + readVariantImpl, + showTaggedVariant, + showUntaggedVariant, + writeForeignTaggedVariant, + writeForeignTaggedVariant1, + writeForeignTaggedVariant2, + writeForeignUntaggedVaria, + writeForeignUntaggedVaria1, + writeForeignUntaggedVaria2, + writeUntaggedVariantImpl, + writeVariantImpl +}; diff --git a/.storybook/purescript-indexer/output-es/Yoga.JSON/foreign.js b/.storybook/purescript-indexer/output-es/Yoga.JSON/foreign.js new file mode 100644 index 0000000..cff7639 --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Yoga.JSON/foreign.js @@ -0,0 +1,18 @@ +function reviver(key, value) { + if (key === "big") { + return BigInt(value); + } + return value; +} +export const _parseJSON = (payload) => JSON.parse(payload, reviver); + +export const _undefined = undefined; + +function replacer(key, value) { + if (typeof value === "bigint") { + return value.toString(); + } + return value; +} + +export const _unsafeStringify = (data) => JSON.stringify(data, replacer); diff --git a/.storybook/purescript-indexer/output-es/Yoga.JSON/index.js b/.storybook/purescript-indexer/output-es/Yoga.JSON/index.js new file mode 100644 index 0000000..2c88fca --- /dev/null +++ b/.storybook/purescript-indexer/output-es/Yoga.JSON/index.js @@ -0,0 +1,595 @@ +import * as $runtime from "../runtime.js"; +import * as Control$dApplicative from "../Control.Applicative/index.js"; +import * as Control$dMonad$dExcept$dTrans from "../Control.Monad.Except.Trans/index.js"; +import * as Control$dMonad$dST$dInternal from "../Control.Monad.ST.Internal/index.js"; +import * as Data$dArray from "../Data.Array/index.js"; +import * as Data$dBifunctor from "../Data.Bifunctor/index.js"; +import * as Data$dDateTime$dInstant from "../Data.DateTime.Instant/index.js"; +import * as Data$dEither from "../Data.Either/index.js"; +import * as Data$dFoldable from "../Data.Foldable/index.js"; +import * as Data$dFunctor from "../Data.Functor/index.js"; +import * as Data$dFunctorWithIndex from "../Data.FunctorWithIndex/index.js"; +import * as Data$dIdentity from "../Data.Identity/index.js"; +import * as Data$dInt from "../Data.Int/index.js"; +import * as Data$dJSDate from "../Data.JSDate/index.js"; +import * as Data$dList$dTypes from "../Data.List.Types/index.js"; +import * as Data$dMap$dInternal from "../Data.Map.Internal/index.js"; +import * as Data$dMaybe from "../Data.Maybe/index.js"; +import * as Data$dMonoid from "../Data.Monoid/index.js"; +import * as Data$dNonEmpty from "../Data.NonEmpty/index.js"; +import * as Data$dNullable from "../Data.Nullable/index.js"; +import * as Data$dNumber from "../Data.Number/index.js"; +import * as Data$dOrd from "../Data.Ord/index.js"; +import * as Data$dSemigroup from "../Data.Semigroup/index.js"; +import * as Data$dShow from "../Data.Show/index.js"; +import * as Data$dTraversable from "../Data.Traversable/index.js"; +import * as Data$dTuple from "../Data.Tuple/index.js"; +import * as Data$dUnfoldable from "../Data.Unfoldable/index.js"; +import * as Effect$dException from "../Effect.Exception/index.js"; +import * as Effect$dUncurried from "../Effect.Uncurried/index.js"; +import * as Effect$dUnsafe from "../Effect.Unsafe/index.js"; +import * as Foreign from "../Foreign/index.js"; +import * as Foreign$dIndex from "../Foreign.Index/index.js"; +import * as Foreign$dObject from "../Foreign.Object/index.js"; +import * as Foreign$dObject$dST from "../Foreign.Object.ST/index.js"; +import * as Js$dBigInt$dBigInt from "../Js.BigInt.BigInt/index.js"; +import * as Partial from "../Partial/index.js"; +import * as Record$dBuilder from "../Record.Builder/index.js"; +import * as Record$dUnsafe from "../Record.Unsafe/index.js"; +import * as Type$dProxy from "../Type.Proxy/index.js"; +import * as Unsafe$dCoerce from "../Unsafe.Coerce/index.js"; +import {_parseJSON, _undefined, _unsafeStringify} from "./foreign.js"; +const identity = x => x; +const fail = /* #__PURE__ */ (() => { + const $0 = Control$dMonad$dExcept$dTrans.monadThrowExceptT(Data$dIdentity.monadIdentity).throwError; + return x => $0(Data$dNonEmpty.$NonEmpty(x, Data$dList$dTypes.Nil)); +})(); +const readString = /* #__PURE__ */ Foreign.unsafeReadTagged(Data$dIdentity.monadIdentity)("String"); +const readNumber = /* #__PURE__ */ Foreign.unsafeReadTagged(Data$dIdentity.monadIdentity)("Number"); +const readInt = /* #__PURE__ */ Foreign.readInt(Data$dIdentity.monadIdentity); +const applicativeExceptT = /* #__PURE__ */ Control$dMonad$dExcept$dTrans.applicativeExceptT(Data$dIdentity.monadIdentity); +const typeIsSymbol = {reflectSymbol: () => "type"}; +const valueIsSymbol = {reflectSymbol: () => "value"}; +const functorExceptT = { + map: f => m => { + if (m.tag === "Left") { return Data$dEither.$Either("Left", m._1); } + if (m.tag === "Right") { return Data$dEither.$Either("Right", f(m._1)); } + $runtime.fail(); + } +}; +const bindExceptT = /* #__PURE__ */ Control$dMonad$dExcept$dTrans.bindExceptT(Data$dIdentity.monadIdentity); +const traverse = /* #__PURE__ */ (() => Data$dTraversable.traversableMaybe.traverse(applicativeExceptT))(); +const readNull = /* #__PURE__ */ Foreign.readNull(Data$dIdentity.monadIdentity); +const toUnfoldable = /* #__PURE__ */ (() => { + const $0 = Foreign$dObject.toArrayWithKey(Data$dTuple.Tuple); + return x => Data$dArray.toUnfoldable(Data$dUnfoldable.unfoldableArray)($0(x)); +})(); +const alt = /* #__PURE__ */ (() => Control$dMonad$dExcept$dTrans.altExceptT(Data$dList$dTypes.semigroupNonEmptyList)(Data$dIdentity.monadIdentity).alt)(); +const readProp = /* #__PURE__ */ Foreign$dIndex.unsafeReadProp(Data$dIdentity.monadIdentity); +const readArray = /* #__PURE__ */ Foreign.readArray(Data$dIdentity.monadIdentity); +const throwError = /* #__PURE__ */ (() => Control$dMonad$dExcept$dTrans.monadThrowExceptT(Data$dIdentity.monadIdentity).throwError)(); +const writeForeignVariantNilRow = {writeVariantImpl: v => v1 => Partial._crashWith("Attempted to write empty variant.")}; +const writeForeignString = {writeImpl: Unsafe$dCoerce.unsafeCoerce}; +const writeForeignNumber = {writeImpl: Unsafe$dCoerce.unsafeCoerce}; +const writeForeignInt = {writeImpl: Unsafe$dCoerce.unsafeCoerce}; +const writeForeignForeign = {writeImpl: x => x}; +const writeForeignFieldsNilRowR = {writeImplFields: v => v1 => identity}; +const writeForeignChar = {writeImpl: Unsafe$dCoerce.unsafeCoerce}; +const writeForeignBoolean = {writeImpl: Unsafe$dCoerce.unsafeCoerce}; +const writeForeignBigInt = {writeImpl: Unsafe$dCoerce.unsafeCoerce}; +const readForeignVariantNil = {readVariantImpl: v => v1 => fail(Foreign.$ForeignError("ForeignError", "Unable to match any variant member."))}; +const readForeignString = {readImpl: readString}; +const readForeignNumber = {readImpl: readNumber}; +const readForeignInt = {readImpl: readInt}; +const readForeignForeign = /* #__PURE__ */ (() => ({readImpl: applicativeExceptT.pure}))(); +const readForeignFieldsNilRowRo = {getFields: v => v1 => applicativeExceptT.pure(identity)}; +const readForeignChar = {readImpl: /* #__PURE__ */ Foreign.readChar(Data$dIdentity.monadIdentity)}; +const readForeignBoolean = {readImpl: /* #__PURE__ */ Foreign.unsafeReadTagged(Data$dIdentity.monadIdentity)("Boolean")}; +const writeVariantImpl = dict => dict.writeVariantImpl; +const writeForeignVariant = () => dictWriteForeignVariant => ({writeImpl: variant => dictWriteForeignVariant.writeVariantImpl(Type$dProxy.Proxy)(variant)}); +const writeImplFields = dict => dict.writeImplFields; +const writeForeignRecord = () => dictWriteForeignFields => ({writeImpl: rec => dictWriteForeignFields.writeImplFields(Type$dProxy.Proxy)(rec)({})}); +const writeImpl = dict => dict.writeImpl; +const writeJSON = dictWriteForeign => x => _unsafeStringify(dictWriteForeign.writeImpl(x)); +const writeForeignArray = dictWriteForeign => ({writeImpl: xs => Data$dFunctor.arrayMap(dictWriteForeign.writeImpl)(xs)}); +const writeForeignFieldsCons = dictIsSymbol => dictWriteForeign => dictWriteForeignFields => () => () => () => ( + { + writeImplFields: v => rec => { + const $8 = Record$dBuilder.insert()()(dictIsSymbol)(Type$dProxy.Proxy)(dictWriteForeign.writeImpl(Record$dUnsafe.unsafeGet(dictIsSymbol.reflectSymbol(Type$dProxy.Proxy))(rec))); + const $9 = dictWriteForeignFields.writeImplFields(Type$dProxy.Proxy)(rec); + return x => $8($9(x)); + } + } +); +const writeImpl2 = /* #__PURE__ */ (() => { + const $0 = writeForeignFieldsCons(typeIsSymbol)(writeForeignString)(writeForeignFieldsCons(valueIsSymbol)(writeForeignForeign)(writeForeignFieldsNilRowR)()()())()()(); + return rec => $0.writeImplFields(Type$dProxy.Proxy)(rec)({}); +})(); +const writeForeignEither = dictWriteForeign => dictWriteForeign1 => ( + { + writeImpl: value => { + if (value.tag === "Left") { return writeImpl2({type: "left", value: dictWriteForeign.writeImpl(value._1)}); } + if (value.tag === "Right") { return writeImpl2({type: "right", value: dictWriteForeign1.writeImpl(value._1)}); } + $runtime.fail(); + } + } +); +const writeForeignJSDate = {writeImpl: x => Effect$dUnsafe.unsafePerformEffect(Data$dJSDate.dateMethodEff("toISOString", x))}; +const writeForeignDateTime = {writeImpl: x => Effect$dUnsafe.unsafePerformEffect(Data$dJSDate.dateMethodEff("toISOString", Data$dJSDate.fromDateTime(x)))}; +const writeForeignMap = () => dictWriteForeign => ({writeImpl: x => dictWriteForeign.writeImpl(x)}); +const writeForeignNullable = dictWriteForeign => ( + { + writeImpl: x => { + const $2 = Data$dNullable.nullable(x, Data$dMaybe.Nothing, Data$dMaybe.Just); + if ($2.tag === "Nothing") { return Data$dNullable.null; } + if ($2.tag === "Just") { return dictWriteForeign.writeImpl($2._1); } + $runtime.fail(); + } + } +); +const writeForeignObject = dictWriteForeign => ({writeImpl: x => Foreign$dObject._mapWithKey(x, v => dictWriteForeign.writeImpl)}); +const writeForeignMapInt = dictWriteForeign => ( + { + writeImpl: (() => { + const $1 = Data$dMap$dInternal.foldableWithIndexMap.foldrWithIndex(x => Foreign$dObject.insert(Data$dShow.showIntImpl(x)))(Foreign$dObject.empty); + return x => Foreign$dObject._mapWithKey($1(x), v => dictWriteForeign.writeImpl); + })() + } +); +const writeForeignMapString = dictWriteForeign => ( + { + writeImpl: x => Foreign$dObject._mapWithKey( + Data$dMap$dInternal.foldableWithIndexMap.foldrWithIndex(Foreign$dObject.insert)(Foreign$dObject.empty)(x), + v => dictWriteForeign.writeImpl + ) + } +); +const writeForeignTuple = dictWriteForeign => dictWriteForeign1 => ( + {writeImpl: v => Data$dFunctor.arrayMap(writeForeignForeign.writeImpl)([dictWriteForeign.writeImpl(v._1), dictWriteForeign1.writeImpl(v._2)])} +); +const writeForeignVariantCons = dictIsSymbol => dictWriteForeign => () => dictWriteForeignVariant => ( + { + writeVariantImpl: v => variant => { + const name = dictIsSymbol.reflectSymbol(Type$dProxy.Proxy); + const $7 = dictWriteForeignVariant.writeVariantImpl(Type$dProxy.Proxy); + if (variant.type === dictIsSymbol.reflectSymbol(Type$dProxy.Proxy)) { + return Foreign$dObject._mapWithKey( + Foreign$dObject.runST(Control$dMonad$dST$dInternal.bind_(Foreign$dObject$dST.new)(Foreign$dObject$dST.poke(name)(dictWriteForeign.writeImpl(variant.value)))), + v$1 => writeForeignForeign.writeImpl + ); + } + return $7(variant); + } + } +); +const writeForeignNEArray = dictWriteForeign => ({writeImpl: a => Data$dFunctor.arrayMap(dictWriteForeign.writeImpl)(a)}); +const write = dictWriteForeign => dictWriteForeign.writeImpl; +const unsafeStringify = _unsafeStringify; +const unsafeStringToInt = /* #__PURE__ */ (() => { + const $0 = Data$dMaybe.fromMaybe$p(v => Partial._crashWith("impossible")); + return x => $0(Data$dInt.fromString(x)); +})(); +const $$undefined = _undefined; +const writeForeignMaybe = dictWriteForeign => ( + { + writeImpl: v2 => { + if (v2.tag === "Nothing") { return _undefined; } + if (v2.tag === "Just") { return dictWriteForeign.writeImpl(v2._1); } + $runtime.fail(); + } + } +); +const tupleSize = dict => dict.tupleSize; +const sequenceCombining = dictMonoid => { + const append2 = dictMonoid.Semigroup0().append; + return dictFoldable => dictApplicative => dictFoldable.foldl(acc => elem => { + if (acc.tag === "Left") { + if (elem.tag === "Left") { return Data$dEither.$Either("Left", Data$dList$dTypes.semigroupNonEmptyList.append(acc._1)(elem._1)); } + if (elem.tag === "Right") { return Data$dEither.$Either("Left", acc._1); } + $runtime.fail(); + } + if (acc.tag === "Right") { + if (elem.tag === "Right") { return Data$dEither.$Either("Right", append2(acc._1)(dictApplicative.pure(elem._1))); } + if (elem.tag === "Left") { return Data$dEither.$Either("Left", elem._1); } + $runtime.fail(); + } + $runtime.fail(); + })(Data$dEither.$Either("Right", dictMonoid.mempty)); +}; +const sequenceCombining1 = /* #__PURE__ */ sequenceCombining(Data$dMonoid.monoidArray)(Data$dFoldable.foldableArray)(Control$dApplicative.applicativeArray); +const readVariantImpl = dict => dict.readVariantImpl; +const readForeignVariant = () => dictReadForeignVariant => ({readImpl: o => dictReadForeignVariant.readVariantImpl(Type$dProxy.Proxy)(o)}); +const readTupleImpl = dict => dict.readTupleImpl; +const readForeignTuple = dictReadTuple => ({readImpl: dictReadTuple.readTupleImpl(0)}); +const readImpl = dict => dict.readImpl; +const readForeignJSDate = { + readImpl: x => { + const $1 = readString(x); + if ($1.tag === "Left") { return Data$dEither.$Either("Left", $1._1); } + if ($1.tag === "Right") { return Data$dEither.$Either("Right", Effect$dUnsafe.unsafePerformEffect(Data$dJSDate.parse($1._1))); } + $runtime.fail(); + } +}; +const readForeignDateTime = { + readImpl: a => bindExceptT.bind(readForeignJSDate.readImpl(a))(x => { + const $2 = Data$dJSDate.toInstant(x); + if ($2.tag === "Just") { return Data$dEither.$Either("Right", Data$dDateTime$dInstant.toDateTime($2._1)); } + return Data$dEither.$Either("Left", Data$dNonEmpty.$NonEmpty(Foreign.$ForeignError("ForeignError", "Invalid date time"), Data$dList$dTypes.Nil)); + }) +}; +const readForeignMap = () => dictReadForeign => ( + { + readImpl: x => { + const $3 = dictReadForeign.readImpl(x); + if ($3.tag === "Left") { return Data$dEither.$Either("Left", $3._1); } + if ($3.tag === "Right") { return Data$dEither.$Either("Right", $3._1); } + $runtime.fail(); + } + } +); +const readForeignMaybe = dictReadForeign => ( + { + readImpl: v1 => { + if (Foreign.isNull(v1) || Foreign.isUndefined(v1)) { return applicativeExceptT.pure(Data$dMaybe.Nothing); } + const $2 = dictReadForeign.readImpl(v1); + if ($2.tag === "Left") { return Data$dEither.$Either("Left", $2._1); } + if ($2.tag === "Right") { return Data$dEither.$Either("Right", Data$dMaybe.$Maybe("Just", $2._1)); } + $runtime.fail(); + } + } +); +const readForeignNullable = dictReadForeign => ( + { + readImpl: o => Control$dMonad$dExcept$dTrans.withExceptT(Data$dIdentity.functorIdentity)(Data$dList$dTypes.functorNonEmptyList.map(error => { + if (error.tag === "TypeMismatch") { return Foreign.$ForeignError("TypeMismatch", "Nullable " + error._1, error._2); } + return error; + }))(bindExceptT.bind(readNull(o))((() => { + const $2 = traverse(dictReadForeign.readImpl); + return x => { + const $4 = $2(x); + if ($4.tag === "Left") { return Data$dEither.$Either("Left", $4._1); } + if ($4.tag === "Right") { + return Data$dEither.$Either( + "Right", + (() => { + if ($4._1.tag === "Nothing") { return Data$dNullable.null; } + if ($4._1.tag === "Just") { return Data$dNullable.notNull($4._1._1); } + $runtime.fail(); + })() + ); + } + $runtime.fail(); + }; + })())) + } +); +const readForeignObject = dictReadForeign => ( + { + readImpl: (() => { + const $1 = Data$dFoldable.foldlArray(acc => v => { + if (acc.tag === "Left") { + if (v._2.tag === "Left") { return Data$dEither.$Either("Left", Data$dList$dTypes.semigroupNonEmptyList.append(acc._1)(v._2._1)); } + if (v._2.tag === "Right") { return Data$dEither.$Either("Left", acc._1); } + $runtime.fail(); + } + if (acc.tag === "Right") { + if (v._2.tag === "Right") { return Data$dEither.$Either("Right", Foreign$dObject.mutate(Foreign$dObject$dST.poke(v._1)(v._2._1))(acc._1)); } + if (v._2.tag === "Left") { return Data$dEither.$Either("Left", v._2._1); } + $runtime.fail(); + } + $runtime.fail(); + })(Data$dEither.$Either("Right", Foreign$dObject.empty)); + const $2 = Foreign$dObject.mapWithKey(key => value => Data$dBifunctor.bifunctorEither.bimap(Data$dList$dTypes.functorNonEmptyList.map(Foreign.ErrorAtProperty(key)))(Data$dBifunctor.identity)(dictReadForeign.readImpl(value))); + return a => bindExceptT.bind((() => { + if (Foreign.tagOf(a) === "Object") { return applicativeExceptT.pure(a); } + return fail(Foreign.$ForeignError("TypeMismatch", "Object", Foreign.tagOf(a))); + })())(x => $1(toUnfoldable($2(x)))); + })() + } +); +const readForeignMapInt = dictReadForeign => ( + { + readImpl: (() => { + const $1 = readForeignObject(dictReadForeign).readImpl; + const $2 = functorExceptT.map(Foreign$dObject.foldableWithIndexObject.foldrWithIndex(x => Data$dMap$dInternal.insert(Data$dOrd.ordInt)(unsafeStringToInt(x)))(Data$dMap$dInternal.Leaf)); + return x => $2($1(x)); + })() + } +); +const readForeignMapString = dictReadForeign => ( + { + readImpl: (() => { + const $1 = readForeignObject(dictReadForeign).readImpl; + return x => { + const $3 = $1(x); + if ($3.tag === "Left") { return Data$dEither.$Either("Left", $3._1); } + if ($3.tag === "Right") { + return Data$dEither.$Either( + "Right", + Foreign$dObject.foldableWithIndexObject.foldrWithIndex(Data$dMap$dInternal.insert(Data$dOrd.ordString))(Data$dMap$dInternal.Leaf)($3._1) + ); + } + $runtime.fail(); + }; + })() + } +); +const readForeignVariantCons = dictIsSymbol => dictReadForeign => () => dictReadForeignVariant => ( + { + readVariantImpl: v => o => alt(dictReadForeignVariant.readVariantImpl(Type$dProxy.Proxy)(o))((() => { + const $6 = bindExceptT.bind(readProp(dictIsSymbol.reflectSymbol(Type$dProxy.Proxy))(o))(dictReadForeign.readImpl); + if ($6.tag === "Left") { return Data$dEither.$Either("Left", $6._1); } + if ($6.tag === "Right") { return Data$dEither.$Either("Right", {type: dictIsSymbol.reflectSymbol(Type$dProxy.Proxy), value: $6._1}); } + $runtime.fail(); + })()) + } +); +const readBigInt1 = /* #__PURE__ */ Foreign.unsafeReadTagged(Data$dIdentity.monadIdentity)("BigInt"); +const readForeignBigInt = { + readImpl: fValue => alt((() => { + const $1 = readInt(fValue); + if ($1.tag === "Left") { return Data$dEither.$Either("Left", $1._1); } + if ($1.tag === "Right") { return Data$dEither.$Either("Right", Js$dBigInt$dBigInt.fromInt($1._1)); } + $runtime.fail(); + })())(alt(bindExceptT.bind(readNumber(fValue))(num => { + if (Data$dNumber.round(num) === num) { + const $2 = Data$dNonEmpty.$NonEmpty(Foreign.$ForeignError("ForeignError", "Cannot convert Number " + (Data$dShow.showNumberImpl(num) + " to BigInt")), Data$dList$dTypes.Nil); + const $3 = Js$dBigInt$dBigInt.fromNumber(num); + if ($3.tag === "Nothing") { return Data$dEither.$Either("Left", $2); } + if ($3.tag === "Just") { return Data$dEither.$Either("Right", $3._1); } + $runtime.fail(); + } + return Data$dEither.$Either( + "Left", + Data$dNonEmpty.$NonEmpty(Foreign.$ForeignError("ForeignError", "Cannot convert decimal Number " + (Data$dShow.showNumberImpl(num) + " to BigInt")), Data$dList$dTypes.Nil) + ); + }))(alt(readBigInt1(fValue))(bindExceptT.bind(readString(fValue))(bi => { + const $2 = Data$dNonEmpty.$NonEmpty(Foreign.$ForeignError("ForeignError", "Cannot convert String " + (bi + " to BigInt")), Data$dList$dTypes.Nil); + const $3 = Js$dBigInt$dBigInt.fromString(bi); + if ($3.tag === "Nothing") { return Data$dEither.$Either("Left", $2); } + if ($3.tag === "Just") { return Data$dEither.$Either("Right", $3._1); } + $runtime.fail(); + })))) +}; +const readAtIdx = dictReadForeign => i => f => Control$dMonad$dExcept$dTrans.withExceptT(Data$dIdentity.functorIdentity)(Data$dList$dTypes.functorNonEmptyList.map(Foreign.ErrorAtIndex(i)))(dictReadForeign.readImpl(f)); +const readForeignArray = dictReadForeign => ( + { + readImpl: (() => { + const $1 = Data$dFunctorWithIndex.mapWithIndexArray(readAtIdx(dictReadForeign)); + return a => bindExceptT.bind(readArray(a))(x => sequenceCombining1($1(x))); + })() + } +); +const readForeignArray1 = /* #__PURE__ */ readForeignArray(readForeignForeign); +const readTupleHelper = dictReadForeign => dictReadForeign1 => ( + { + readTupleImpl: n => a => bindExceptT.bind(readForeignArray1.readImpl(a))(v => { + if (v.length === 2) { + const $5 = Control$dMonad$dExcept$dTrans.applyExceptT(Data$dIdentity.monadIdentity); + return $5.apply($5.Functor0().map(Data$dTuple.Tuple)(readAtIdx(dictReadForeign)(n)(v[0])))(readAtIdx(dictReadForeign1)(n + 1 | 0)(v[1])); + } + return throwError(Data$dNonEmpty.$NonEmpty( + Foreign.$ForeignError("TypeMismatch", "array of length " + Data$dShow.showIntImpl(n + 2 | 0), "array of length " + Data$dShow.showIntImpl(n + v.length | 0)), + Data$dList$dTypes.Nil + )); + }), + tupleSize: v => 2 + } +); +const readForeignNonEmptyArray = dictReadForeign => { + const readImpl3 = readForeignArray(dictReadForeign).readImpl; + return { + readImpl: f => bindExceptT.bind(readImpl3(f))(v => { + if (v.length > 0) { return Data$dEither.$Either("Right", v); } + return Data$dEither.$Either("Left", Data$dNonEmpty.$NonEmpty(Foreign.$ForeignError("ForeignError", "Nonempty array expected, got empty array"), Data$dList$dTypes.Nil)); + }) + }; +}; +const readTupleTupleTuple = dictReadForeign => dictReadTuple => ( + { + readTupleImpl: n => a => bindExceptT.bind(readForeignArray1.readImpl(a))(v => { + const v1 = Data$dArray.uncons(v); + if (v1.tag === "Just") { + const $6 = Control$dMonad$dExcept$dTrans.applyExceptT(Data$dIdentity.monadIdentity); + return $6.apply($6.Functor0().map(Data$dTuple.Tuple)(readAtIdx(dictReadForeign)(n)(v1._1.head)))(dictReadTuple.readTupleImpl(n + 1 | 0)(Data$dFunctor.arrayMap(writeForeignForeign.writeImpl)(v1._1.tail))); + } + return throwError(Data$dNonEmpty.$NonEmpty( + Foreign.$ForeignError( + "TypeMismatch", + "array of length " + Data$dShow.showIntImpl((1 + n | 0) + dictReadTuple.tupleSize(Type$dProxy.Proxy) | 0), + "array of length " + Data$dShow.showIntImpl(n) + ), + Data$dList$dTypes.Nil + )); + }), + tupleSize: v => 1 + dictReadTuple.tupleSize(Type$dProxy.Proxy) | 0 + } +); +const read$p = dictReadForeign => dictReadForeign.readImpl; +const read = dictReadForeign => x => dictReadForeign.readImpl(x); +const read_ = dictReadForeign => x => { + const $2 = dictReadForeign.readImpl(x); + if ($2.tag === "Left") { return Data$dMaybe.Nothing; } + if ($2.tag === "Right") { return Data$dMaybe.$Maybe("Just", $2._1); } + $runtime.fail(); +}; +const writeForeignTupleTuple = dictWriteForeign => dictWriteForeign1 => ( + { + writeImpl: v => Data$dFunctor.arrayMap(writeForeignForeign.writeImpl)(Data$dSemigroup.concatArray([dictWriteForeign.writeImpl(v._1)])((() => { + const $3 = read_(readForeignArray1)(dictWriteForeign1.writeImpl(v._2)); + if ($3.tag === "Nothing") { return []; } + if ($3.tag === "Just") { return $3._1; } + $runtime.fail(); + })())) + } +); +const parseJSON = /* #__PURE__ */ (() => { + const $0 = Data$dBifunctor.bifunctorEither.bimap(x => Data$dNonEmpty.$NonEmpty(Foreign.$ForeignError("ForeignError", Effect$dException.message(x)), Data$dList$dTypes.Nil))(Data$dBifunctor.identity); + const $1 = Effect$dUncurried.runEffectFn1(_parseJSON); + return x => $0(Effect$dUnsafe.unsafePerformEffect((() => { + const $3 = $1(x); + return Effect$dException.catchException(x$1 => () => Data$dEither.$Either("Left", x$1))(() => { + const a$p = $3(); + return Data$dEither.$Either("Right", a$p); + }); + })())); +})(); +const readJSON = dictReadForeign => x => bindExceptT.bind(parseJSON(x))(dictReadForeign.readImpl); +const readJSON_ = dictReadForeign => x => { + const $2 = bindExceptT.bind(parseJSON(x))(dictReadForeign.readImpl); + if ($2.tag === "Left") { return Data$dMaybe.Nothing; } + if ($2.tag === "Right") { return Data$dMaybe.$Maybe("Just", $2._1); } + $runtime.fail(); +}; +const readJSON$p = dictReadForeign => a => bindExceptT.bind(parseJSON(a))(dictReadForeign.readImpl); +const getFields = dict => dict.getFields; +const readForeignFieldsCons = dictIsSymbol => dictReadForeign => dictReadForeignFields => () => () => ( + { + getFields: v => obj => { + const name = dictIsSymbol.reflectSymbol(Type$dProxy.Proxy); + const v1 = dictReadForeignFields.getFields(Type$dProxy.Proxy)(obj); + const $9 = Control$dMonad$dExcept$dTrans.withExceptT(Data$dIdentity.functorIdentity)(Data$dList$dTypes.functorNonEmptyList.map(Foreign.ErrorAtProperty(name)))(bindExceptT.bind(readProp(name)(obj))(dictReadForeign.readImpl)); + if ($9.tag === "Left") { + if (v1.tag === "Left") { return Data$dEither.$Either("Left", Data$dList$dTypes.semigroupNonEmptyList.append($9._1)(v1._1)); } + if (v1.tag === "Right") { return Data$dEither.$Either("Left", $9._1); } + $runtime.fail(); + } + if ($9.tag === "Right") { + if (v1.tag === "Right") { return Data$dEither.$Either("Right", x => Record$dBuilder.unsafeInsert(dictIsSymbol.reflectSymbol(Type$dProxy.Proxy))($9._1)(v1._1(x))); } + if (v1.tag === "Left") { return Data$dEither.$Either("Left", v1._1); } + $runtime.fail(); + } + $runtime.fail(); + } + } +); +const readForeignRecord = () => dictReadForeignFields => ( + { + readImpl: o => { + const $3 = dictReadForeignFields.getFields(Type$dProxy.Proxy)(o); + if ($3.tag === "Left") { return Data$dEither.$Either("Left", $3._1); } + if ($3.tag === "Right") { return Data$dEither.$Either("Right", $3._1({})); } + $runtime.fail(); + } + } +); +const readImpl2 = /* #__PURE__ */ (() => readForeignRecord()(readForeignFieldsCons(typeIsSymbol)(readForeignString)(readForeignFieldsCons(valueIsSymbol)(readForeignForeign)(readForeignFieldsNilRowRo)()())()()).readImpl)(); +const readForeignEither = dictReadForeign => dictReadForeign1 => ( + { + readImpl: f => bindExceptT.bind(readImpl2(f))(v => { + if (v.type === "left") { + const $4 = dictReadForeign.readImpl(v.value); + if ($4.tag === "Left") { return Data$dEither.$Either("Left", $4._1); } + if ($4.tag === "Right") { return Data$dEither.$Either("Right", Data$dEither.$Either("Left", $4._1)); } + $runtime.fail(); + } + if (v.type === "right") { + const $4 = dictReadForeign1.readImpl(v.value); + if ($4.tag === "Left") { return Data$dEither.$Either("Left", $4._1); } + if ($4.tag === "Right") { return Data$dEither.$Either("Right", Data$dEither.$Either("Right", $4._1)); } + $runtime.fail(); + } + return Data$dEither.$Either("Left", Data$dNonEmpty.$NonEmpty(Foreign.$ForeignError("ForeignError", "Invalid Either tag " + v.type), Data$dList$dTypes.Nil)); + }) + } +); +export { + alt, + applicativeExceptT, + bindExceptT, + fail, + functorExceptT, + getFields, + identity, + parseJSON, + read, + read$p, + readArray, + readAtIdx, + readBigInt1, + readForeignArray, + readForeignArray1, + readForeignBigInt, + readForeignBoolean, + readForeignChar, + readForeignDateTime, + readForeignEither, + readForeignFieldsCons, + readForeignFieldsNilRowRo, + readForeignForeign, + readForeignInt, + readForeignJSDate, + readForeignMap, + readForeignMapInt, + readForeignMapString, + readForeignMaybe, + readForeignNonEmptyArray, + readForeignNullable, + readForeignNumber, + readForeignObject, + readForeignRecord, + readForeignString, + readForeignTuple, + readForeignVariant, + readForeignVariantCons, + readForeignVariantNil, + readImpl, + readImpl2, + readInt, + readJSON, + readJSON$p, + readJSON_, + readNull, + readNumber, + readProp, + readString, + readTupleHelper, + readTupleImpl, + readTupleTupleTuple, + readVariantImpl, + read_, + sequenceCombining, + sequenceCombining1, + throwError, + toUnfoldable, + traverse, + tupleSize, + typeIsSymbol, + $$undefined as undefined, + unsafeStringToInt, + unsafeStringify, + valueIsSymbol, + write, + writeForeignArray, + writeForeignBigInt, + writeForeignBoolean, + writeForeignChar, + writeForeignDateTime, + writeForeignEither, + writeForeignFieldsCons, + writeForeignFieldsNilRowR, + writeForeignForeign, + writeForeignInt, + writeForeignJSDate, + writeForeignMap, + writeForeignMapInt, + writeForeignMapString, + writeForeignMaybe, + writeForeignNEArray, + writeForeignNullable, + writeForeignNumber, + writeForeignObject, + writeForeignRecord, + writeForeignString, + writeForeignTuple, + writeForeignTupleTuple, + writeForeignVariant, + writeForeignVariantCons, + writeForeignVariantNilRow, + writeImpl, + writeImpl2, + writeImplFields, + writeJSON, + writeVariantImpl +}; +export * from "./foreign.js"; diff --git a/.storybook/purescript-indexer/output-es/package.json b/.storybook/purescript-indexer/output-es/package.json new file mode 100644 index 0000000..1632c2c --- /dev/null +++ b/.storybook/purescript-indexer/output-es/package.json @@ -0,0 +1 @@ +{"type": "module"} \ No newline at end of file diff --git a/.storybook/purescript-indexer/output-es/runtime.js b/.storybook/purescript-indexer/output-es/runtime.js new file mode 100644 index 0000000..1388a4e --- /dev/null +++ b/.storybook/purescript-indexer/output-es/runtime.js @@ -0,0 +1,21 @@ +export function binding(init) { + let state = 0; + let value; + + return () => { + if (state === 2) { + return value; + } + if (state === 1) { + throw new Error("Binding demanded before initialized"); + } + state = 1; + value = init(); + state = 2; + return value; + }; +} + +export function fail() { + throw new Error("Failed pattern match"); +} diff --git a/.storybook/purescript-indexer/package-lock.json b/.storybook/purescript-indexer/package-lock.json new file mode 100644 index 0000000..6e2d2c0 --- /dev/null +++ b/.storybook/purescript-indexer/package-lock.json @@ -0,0 +1,623 @@ +{ + "name": "purescript-indexer", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "purescript-indexer", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "source-map": "^0.7.4" + }, + "devDependencies": { + "esbuild": "^0.15.13", + "purs-backend-es": "^1.2.0" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.13.tgz", + "integrity": "sha512-RY2fVI8O0iFUNvZirXaQ1vMvK0xhCcl0gqRj74Z6yEiO1zAUa7hbsdwZM1kzqbxHK7LFyMizipfXT3JME+12Hw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.13.tgz", + "integrity": "sha512-+BoyIm4I8uJmH/QDIH0fu7MG0AEx9OXEDXnqptXCwKOlOqZiS4iraH1Nr7/ObLMokW3sOCeBNyD68ATcV9b9Ag==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.13.tgz", + "integrity": "sha512-Cu3SC84oyzzhrK/YyN4iEVy2jZu5t2fz66HEOShHURcjSkOSAVL8C/gfUT+lDJxkVHpg8GZ10DD0rMHRPqMFaQ==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.15.13", + "@esbuild/linux-loong64": "0.15.13", + "esbuild-android-64": "0.15.13", + "esbuild-android-arm64": "0.15.13", + "esbuild-darwin-64": "0.15.13", + "esbuild-darwin-arm64": "0.15.13", + "esbuild-freebsd-64": "0.15.13", + "esbuild-freebsd-arm64": "0.15.13", + "esbuild-linux-32": "0.15.13", + "esbuild-linux-64": "0.15.13", + "esbuild-linux-arm": "0.15.13", + "esbuild-linux-arm64": "0.15.13", + "esbuild-linux-mips64le": "0.15.13", + "esbuild-linux-ppc64le": "0.15.13", + "esbuild-linux-riscv64": "0.15.13", + "esbuild-linux-s390x": "0.15.13", + "esbuild-netbsd-64": "0.15.13", + "esbuild-openbsd-64": "0.15.13", + "esbuild-sunos-64": "0.15.13", + "esbuild-windows-32": "0.15.13", + "esbuild-windows-64": "0.15.13", + "esbuild-windows-arm64": "0.15.13" + } + }, + "node_modules/esbuild-android-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.13.tgz", + "integrity": "sha512-yRorukXBlokwTip+Sy4MYskLhJsO0Kn0/Fj43s1krVblfwP+hMD37a4Wmg139GEsMLl+vh8WXp2mq/cTA9J97g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-android-arm64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.13.tgz", + "integrity": "sha512-TKzyymLD6PiVeyYa4c5wdPw87BeAiTXNtK6amWUcXZxkV51gOk5u5qzmDaYSwiWeecSNHamFsaFjLoi32QR5/w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.13.tgz", + "integrity": "sha512-WAx7c2DaOS6CrRcoYCgXgkXDliLnFv3pQLV6GeW1YcGEZq2Gnl8s9Pg7ahValZkpOa0iE/ojRVQ87sbUhF1Cbg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-arm64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.13.tgz", + "integrity": "sha512-U6jFsPfSSxC3V1CLiQqwvDuj3GGrtQNB3P3nNC3+q99EKf94UGpsG9l4CQ83zBs1NHrk1rtCSYT0+KfK5LsD8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.13.tgz", + "integrity": "sha512-whItJgDiOXaDG/idy75qqevIpZjnReZkMGCgQaBWZuKHoElDJC1rh7MpoUgupMcdfOd+PgdEwNQW9DAE6i8wyA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.13.tgz", + "integrity": "sha512-6pCSWt8mLUbPtygv7cufV0sZLeylaMwS5Fznj6Rsx9G2AJJsAjQ9ifA+0rQEIg7DwJmi9it+WjzNTEAzzdoM3Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-32": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.13.tgz", + "integrity": "sha512-VbZdWOEdrJiYApm2kkxoTOgsoCO1krBZ3quHdYk3g3ivWaMwNIVPIfEE0f0XQQ0u5pJtBsnk2/7OPiCFIPOe/w==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.13.tgz", + "integrity": "sha512-rXmnArVNio6yANSqDQlIO4WiP+Cv7+9EuAHNnag7rByAqFVuRusLbGi2697A5dFPNXoO//IiogVwi3AdcfPC6A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.13.tgz", + "integrity": "sha512-Ac6LpfmJO8WhCMQmO253xX2IU2B3wPDbl4IvR0hnqcPrdfCaUa2j/lLMGTjmQ4W5JsJIdHEdW12dG8lFS0MbxQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.13.tgz", + "integrity": "sha512-alEMGU4Z+d17U7KQQw2IV8tQycO6T+rOrgW8OS22Ua25x6kHxoG6Ngry6Aq6uranC+pNWNMB6aHFPh7aTQdORQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-mips64le": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.13.tgz", + "integrity": "sha512-47PgmyYEu+yN5rD/MbwS6DxP2FSGPo4Uxg5LwIdxTiyGC2XKwHhHyW7YYEDlSuXLQXEdTO7mYe8zQ74czP7W8A==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-ppc64le": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.13.tgz", + "integrity": "sha512-z6n28h2+PC1Ayle9DjKoBRcx/4cxHoOa2e689e2aDJSaKug3jXcQw7mM+GLg+9ydYoNzj8QxNL8ihOv/OnezhA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.13.tgz", + "integrity": "sha512-+Lu4zuuXuQhgLUGyZloWCqTslcCAjMZH1k3Xc9MSEJEpEFdpsSU0sRDXAnk18FKOfEjhu4YMGaykx9xjtpA6ow==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-s390x": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.13.tgz", + "integrity": "sha512-BMeXRljruf7J0TMxD5CIXS65y7puiZkAh+s4XFV9qy16SxOuMhxhVIXYLnbdfLrsYGFzx7U9mcdpFWkkvy/Uag==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-netbsd-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.13.tgz", + "integrity": "sha512-EHj9QZOTel581JPj7UO3xYbltFTYnHy+SIqJVq6yd3KkCrsHRbapiPb0Lx3EOOtybBEE9EyqbmfW1NlSDsSzvQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-openbsd-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.13.tgz", + "integrity": "sha512-nkuDlIjF/sfUhfx8SKq0+U+Fgx5K9JcPq1mUodnxI0x4kBdCv46rOGWbuJ6eof2n3wdoCLccOoJAbg9ba/bT2w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-sunos-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.13.tgz", + "integrity": "sha512-jVeu2GfxZQ++6lRdY43CS0Tm/r4WuQQ0Pdsrxbw+aOrHQPHV0+LNOLnvbN28M7BSUGnJnHkHm2HozGgNGyeIRw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-32": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.13.tgz", + "integrity": "sha512-XoF2iBf0wnqo16SDq+aDGi/+QbaLFpkiRarPVssMh9KYbFNCqPLlGAWwDvxEVz+ywX6Si37J2AKm+AXq1kC0JA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.13.tgz", + "integrity": "sha512-Et6htEfGycjDrtqb2ng6nT+baesZPYQIW+HUEHK4D1ncggNrDNk3yoboYQ5KtiVrw/JaDMNttz8rrPubV/fvPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-arm64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.13.tgz", + "integrity": "sha512-3bv7tqntThQC9SWLRouMDmZnlOukBhOCTlkzNqzGCmrkCJI7io5LLjwJBOVY6kOUlIvdxbooNZwjtBvj+7uuVg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/purs-backend-es": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/purs-backend-es/-/purs-backend-es-1.2.0.tgz", + "integrity": "sha512-mvjyKAz0s56f8it2upQlolAus0fYPS71kLIj2bTolspVH9c9YhTrd7EwvRO102EJmGkV4TiSD5vkvD8+UCBJnQ==", + "dev": true, + "bin": { + "purs-backend-es": "index.js" + } + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "engines": { + "node": ">= 8" + } + } + }, + "dependencies": { + "@esbuild/android-arm": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.13.tgz", + "integrity": "sha512-RY2fVI8O0iFUNvZirXaQ1vMvK0xhCcl0gqRj74Z6yEiO1zAUa7hbsdwZM1kzqbxHK7LFyMizipfXT3JME+12Hw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.13.tgz", + "integrity": "sha512-+BoyIm4I8uJmH/QDIH0fu7MG0AEx9OXEDXnqptXCwKOlOqZiS4iraH1Nr7/ObLMokW3sOCeBNyD68ATcV9b9Ag==", + "dev": true, + "optional": true + }, + "esbuild": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.13.tgz", + "integrity": "sha512-Cu3SC84oyzzhrK/YyN4iEVy2jZu5t2fz66HEOShHURcjSkOSAVL8C/gfUT+lDJxkVHpg8GZ10DD0rMHRPqMFaQ==", + "dev": true, + "requires": { + "@esbuild/android-arm": "0.15.13", + "@esbuild/linux-loong64": "0.15.13", + "esbuild-android-64": "0.15.13", + "esbuild-android-arm64": "0.15.13", + "esbuild-darwin-64": "0.15.13", + "esbuild-darwin-arm64": "0.15.13", + "esbuild-freebsd-64": "0.15.13", + "esbuild-freebsd-arm64": "0.15.13", + "esbuild-linux-32": "0.15.13", + "esbuild-linux-64": "0.15.13", + "esbuild-linux-arm": "0.15.13", + "esbuild-linux-arm64": "0.15.13", + "esbuild-linux-mips64le": "0.15.13", + "esbuild-linux-ppc64le": "0.15.13", + "esbuild-linux-riscv64": "0.15.13", + "esbuild-linux-s390x": "0.15.13", + "esbuild-netbsd-64": "0.15.13", + "esbuild-openbsd-64": "0.15.13", + "esbuild-sunos-64": "0.15.13", + "esbuild-windows-32": "0.15.13", + "esbuild-windows-64": "0.15.13", + "esbuild-windows-arm64": "0.15.13" + } + }, + "esbuild-android-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.13.tgz", + "integrity": "sha512-yRorukXBlokwTip+Sy4MYskLhJsO0Kn0/Fj43s1krVblfwP+hMD37a4Wmg139GEsMLl+vh8WXp2mq/cTA9J97g==", + "dev": true, + "optional": true + }, + "esbuild-android-arm64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.13.tgz", + "integrity": "sha512-TKzyymLD6PiVeyYa4c5wdPw87BeAiTXNtK6amWUcXZxkV51gOk5u5qzmDaYSwiWeecSNHamFsaFjLoi32QR5/w==", + "dev": true, + "optional": true + }, + "esbuild-darwin-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.13.tgz", + "integrity": "sha512-WAx7c2DaOS6CrRcoYCgXgkXDliLnFv3pQLV6GeW1YcGEZq2Gnl8s9Pg7ahValZkpOa0iE/ojRVQ87sbUhF1Cbg==", + "dev": true, + "optional": true + }, + "esbuild-darwin-arm64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.13.tgz", + "integrity": "sha512-U6jFsPfSSxC3V1CLiQqwvDuj3GGrtQNB3P3nNC3+q99EKf94UGpsG9l4CQ83zBs1NHrk1rtCSYT0+KfK5LsD8A==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.13.tgz", + "integrity": "sha512-whItJgDiOXaDG/idy75qqevIpZjnReZkMGCgQaBWZuKHoElDJC1rh7MpoUgupMcdfOd+PgdEwNQW9DAE6i8wyA==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-arm64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.13.tgz", + "integrity": "sha512-6pCSWt8mLUbPtygv7cufV0sZLeylaMwS5Fznj6Rsx9G2AJJsAjQ9ifA+0rQEIg7DwJmi9it+WjzNTEAzzdoM3Q==", + "dev": true, + "optional": true + }, + "esbuild-linux-32": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.13.tgz", + "integrity": "sha512-VbZdWOEdrJiYApm2kkxoTOgsoCO1krBZ3quHdYk3g3ivWaMwNIVPIfEE0f0XQQ0u5pJtBsnk2/7OPiCFIPOe/w==", + "dev": true, + "optional": true + }, + "esbuild-linux-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.13.tgz", + "integrity": "sha512-rXmnArVNio6yANSqDQlIO4WiP+Cv7+9EuAHNnag7rByAqFVuRusLbGi2697A5dFPNXoO//IiogVwi3AdcfPC6A==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.13.tgz", + "integrity": "sha512-Ac6LpfmJO8WhCMQmO253xX2IU2B3wPDbl4IvR0hnqcPrdfCaUa2j/lLMGTjmQ4W5JsJIdHEdW12dG8lFS0MbxQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.13.tgz", + "integrity": "sha512-alEMGU4Z+d17U7KQQw2IV8tQycO6T+rOrgW8OS22Ua25x6kHxoG6Ngry6Aq6uranC+pNWNMB6aHFPh7aTQdORQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-mips64le": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.13.tgz", + "integrity": "sha512-47PgmyYEu+yN5rD/MbwS6DxP2FSGPo4Uxg5LwIdxTiyGC2XKwHhHyW7YYEDlSuXLQXEdTO7mYe8zQ74czP7W8A==", + "dev": true, + "optional": true + }, + "esbuild-linux-ppc64le": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.13.tgz", + "integrity": "sha512-z6n28h2+PC1Ayle9DjKoBRcx/4cxHoOa2e689e2aDJSaKug3jXcQw7mM+GLg+9ydYoNzj8QxNL8ihOv/OnezhA==", + "dev": true, + "optional": true + }, + "esbuild-linux-riscv64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.13.tgz", + "integrity": "sha512-+Lu4zuuXuQhgLUGyZloWCqTslcCAjMZH1k3Xc9MSEJEpEFdpsSU0sRDXAnk18FKOfEjhu4YMGaykx9xjtpA6ow==", + "dev": true, + "optional": true + }, + "esbuild-linux-s390x": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.13.tgz", + "integrity": "sha512-BMeXRljruf7J0TMxD5CIXS65y7puiZkAh+s4XFV9qy16SxOuMhxhVIXYLnbdfLrsYGFzx7U9mcdpFWkkvy/Uag==", + "dev": true, + "optional": true + }, + "esbuild-netbsd-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.13.tgz", + "integrity": "sha512-EHj9QZOTel581JPj7UO3xYbltFTYnHy+SIqJVq6yd3KkCrsHRbapiPb0Lx3EOOtybBEE9EyqbmfW1NlSDsSzvQ==", + "dev": true, + "optional": true + }, + "esbuild-openbsd-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.13.tgz", + "integrity": "sha512-nkuDlIjF/sfUhfx8SKq0+U+Fgx5K9JcPq1mUodnxI0x4kBdCv46rOGWbuJ6eof2n3wdoCLccOoJAbg9ba/bT2w==", + "dev": true, + "optional": true + }, + "esbuild-sunos-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.13.tgz", + "integrity": "sha512-jVeu2GfxZQ++6lRdY43CS0Tm/r4WuQQ0Pdsrxbw+aOrHQPHV0+LNOLnvbN28M7BSUGnJnHkHm2HozGgNGyeIRw==", + "dev": true, + "optional": true + }, + "esbuild-windows-32": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.13.tgz", + "integrity": "sha512-XoF2iBf0wnqo16SDq+aDGi/+QbaLFpkiRarPVssMh9KYbFNCqPLlGAWwDvxEVz+ywX6Si37J2AKm+AXq1kC0JA==", + "dev": true, + "optional": true + }, + "esbuild-windows-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.13.tgz", + "integrity": "sha512-Et6htEfGycjDrtqb2ng6nT+baesZPYQIW+HUEHK4D1ncggNrDNk3yoboYQ5KtiVrw/JaDMNttz8rrPubV/fvPQ==", + "dev": true, + "optional": true + }, + "esbuild-windows-arm64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.13.tgz", + "integrity": "sha512-3bv7tqntThQC9SWLRouMDmZnlOukBhOCTlkzNqzGCmrkCJI7io5LLjwJBOVY6kOUlIvdxbooNZwjtBvj+7uuVg==", + "dev": true, + "optional": true + }, + "purs-backend-es": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/purs-backend-es/-/purs-backend-es-1.2.0.tgz", + "integrity": "sha512-mvjyKAz0s56f8it2upQlolAus0fYPS71kLIj2bTolspVH9c9YhTrd7EwvRO102EJmGkV4TiSD5vkvD8+UCBJnQ==", + "dev": true + }, + "source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==" + } + } +} diff --git a/.storybook/purescript-indexer/package.json b/.storybook/purescript-indexer/package.json new file mode 100644 index 0000000..5a2befe --- /dev/null +++ b/.storybook/purescript-indexer/package.json @@ -0,0 +1,26 @@ +{ + "name": "purescript-indexer", + "version": "1.0.0", + "description": "", + "main": "dist/index.mjs", + "type": "module", + "directories": { + "test": "test" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "build:production": "spago -x production.dhall build", + "prebundle": "npm run build:production", + "bundle": "esbuild output-es/Main/index.js --minify --format=esm --bundle --platform=node --outfile=dist/index.mjs" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "source-map": "^0.7.4" + }, + "devDependencies": { + "esbuild": "^0.15.13", + "purs-backend-es": "^1.2.0" + } +} diff --git a/.storybook/purescript-indexer/packages.dhall b/.storybook/purescript-indexer/packages.dhall new file mode 100644 index 0000000..ae97e93 --- /dev/null +++ b/.storybook/purescript-indexer/packages.dhall @@ -0,0 +1,124 @@ +{- +Welcome to your new Dhall package-set! + +Below are instructions for how to edit this file for most use +cases, so that you don't need to know Dhall to use it. + +## Use Cases + +Most will want to do one or both of these options: +1. Override/Patch a package's dependency +2. Add a package not already in the default package set + +This file will continue to work whether you use one or both options. +Instructions for each option are explained below. + +### Overriding/Patching a package + +Purpose: +- Change a package's dependency to a newer/older release than the + default package set's release +- Use your own modified version of some dependency that may + include new API, changed API, removed API by + using your custom git repo of the library rather than + the package set's repo + +Syntax: +where `entityName` is one of the following: +- dependencies +- repo +- version +------------------------------- +let upstream = -- +in upstream + with packageName.entityName = "new value" +------------------------------- + +Example: +------------------------------- +let upstream = -- +in upstream + with halogen.version = "master" + with halogen.repo = "https://example.com/path/to/git/repo.git" + + with halogen-vdom.version = "v4.0.0" + with halogen-vdom.dependencies = [ "extra-dependency" ] # halogen-vdom.dependencies +------------------------------- + +### Additions + +Purpose: +- Add packages that aren't already included in the default package set + +Syntax: +where `` is: +- a tag (i.e. "v4.0.0") +- a branch (i.e. "master") +- commit hash (i.e. "701f3e44aafb1a6459281714858fadf2c4c2a977") +------------------------------- +let upstream = -- +in upstream + with new-package-name = + { dependencies = + [ "dependency1" + , "dependency2" + ] + , repo = + "https://example.com/path/to/git/repo.git" + , version = + "" + } +------------------------------- + +Example: +------------------------------- +let upstream = -- +in upstream + with benchotron = + { dependencies = + [ "arrays" + , "exists" + , "profunctor" + , "strings" + , "quickcheck" + , "lcg" + , "transformers" + , "foldable-traversable" + , "exceptions" + , "node-fs" + , "node-buffer" + , "node-readline" + , "datetime" + , "now" + ] + , repo = + "https://github.com/hdgarrood/purescript-benchotron.git" + , version = + "v7.0.0" + } +------------------------------- +-} +let upstream = + https://github.com/purescript/package-sets/releases/download/psc-0.15.4-20221107/packages.dhall + sha256:cd0c29e8a69cf70b714ce3ee91c57c02b3d20a1118e35dd8405f33aa80177849 + +in upstream + with tidy = + { dependencies = + [ "control" + , "dodo-printer" + , "either" + , "foldable-traversable" + , "lists" + , "maybe" + , "newtype" + , "ordered-collections" + , "partial" + , "prelude" + , "language-cst-parser" + , "strings" + , "tuples" + ] + , repo = "https://github.com/natefaubion/purescript-tidy.git" + , version = "v0.9.0" + } diff --git a/.storybook/purescript-indexer/production.dhall b/.storybook/purescript-indexer/production.dhall new file mode 100644 index 0000000..5e5ece4 --- /dev/null +++ b/.storybook/purescript-indexer/production.dhall @@ -0,0 +1 @@ +./spago.dhall // { backend = "purs-backend-es build" } diff --git a/.storybook/purescript-indexer/spago.dhall b/.storybook/purescript-indexer/spago.dhall new file mode 100644 index 0000000..b4445f9 --- /dev/null +++ b/.storybook/purescript-indexer/spago.dhall @@ -0,0 +1,46 @@ +{- +Welcome to a Spago project! +You can edit this file as you like. + +Need help? See the following resources: +- Spago documentation: https://github.com/purescript/spago +- Dhall language tour: https://docs.dhall-lang.org/tutorials/Language-Tour.html + +When creating a new Spago project, you can use +`spago init --no-comments` or `spago init -C` +to generate this file without the comments in this block. +-} +{ name = "my-project" +, dependencies = + [ "aff" + , "aff-promise" + , "arrays" + , "console" + , "control" + , "debug" + , "effect" + , "either" + , "exceptions" + , "foldable-traversable" + , "foreign" + , "foreign-object" + , "functions" + , "language-cst-parser" + , "maybe" + , "newtype" + , "node-buffer" + , "node-fs-aff" + , "node-path" + , "node-process" + , "ordered-collections" + , "prelude" + , "record" + , "refs" + , "strings" + , "tidy" + , "unsafe-coerce" + , "yoga-json" + ] +, packages = ./packages.dhall +, sources = [ "src/**/*.purs", "test/**/*.purs" ] +} diff --git a/.storybook/purescript-indexer/src/Main.purs b/.storybook/purescript-indexer/src/Main.purs new file mode 100644 index 0000000..99530e5 --- /dev/null +++ b/.storybook/purescript-indexer/src/Main.purs @@ -0,0 +1,11 @@ +module Main (indexer) where + +import Control.Promise (Promise) +import Control.Promise as Promise +import Effect.Uncurried (EffectFn2, mkEffectFn2) +import PureScriptCSFIndexer as PureScriptCSFIndexer +import Storybook.CSFTools.Types (CsfFile, CsfOptions) + +indexer :: EffectFn2 String CsfOptions (Promise CsfFile) +indexer = mkEffectFn2 \fn opts -> Promise.fromAff do + PureScriptCSFIndexer.indexer fn opts diff --git a/.storybook/purescript-indexer/src/PureScriptCSFIndexer.purs b/.storybook/purescript-indexer/src/PureScriptCSFIndexer.purs new file mode 100644 index 0000000..4db1a10 --- /dev/null +++ b/.storybook/purescript-indexer/src/PureScriptCSFIndexer.purs @@ -0,0 +1,124 @@ +module PureScriptCSFIndexer (indexer) where + +import Prelude + +import Data.Array ((!!)) +import Data.Array as Array +import Data.Either (Either(..), either) +import Data.Foldable (for_) +import Data.Map (SemigroupMap(..)) +import Data.Map as Map +import Data.Maybe (Maybe(..), maybe) +import Data.Newtype (un, unwrap) +import Data.Semigroup.First (First(..)) +import Data.Semigroup.Foldable (intercalateMap) +import Data.String (Pattern(..)) +import Data.String as String +import Data.String.CodeUnits as SCU +import Data.String.Regex (Regex) +import Data.String.Regex as Regex +import Data.String.Regex.Flags as RF +import Data.String.Regex.Unsafe (unsafeRegex) +import Effect.Aff (Aff, attempt, throwError) +import Effect.Class (liftEffect) +import Effect.Class.Console as Console +import Effect.Exception (Error, error) +import Effect.Ref as Ref +import Foreign (Foreign) +import Node.Encoding (Encoding(..)) +import Node.FS.Aff (readTextFile) +import Node.Path (dirname, resolve) +import PureScript.CST (RecoveredParserResult(..), parseModule) +import PureScript.CST.Traversal (defaultMonoidalVisitor, foldMapModule) +import PureScript.CST.Types as CST +import Record (merge) +import SourceMap.Types (SourceMap) +import Storybook.CSFTools (formatCsf, parseCsf, setStoryCode) +import Storybook.CSFTools as CSF +import Storybook.CSFTools.Types (CsfFile, CsfOptions) +import Unsafe.Coerce (unsafeCoerce) +import Yoga.JSON as JSON +import Yoga.JSON.Error (renderHumanError) + +-- foreign import defaultVariableRecordRegex :: Regex + +indexer ∷ String → CsfOptions → Aff CsfFile +indexer fileName options = do + fileContent <- readTextFile UTF8 fileName + -- withSourceMapConsumer + let fixedFileContent = adjustSourceForStorybook fileContent + parsed <- parseCsf fixedFileContent (options # merge { fileName }) # liftEffect + + enriched <- enrichWithPureScriptInfo fileName parsed + csf <- case enriched of + Left err -> do + Console.errorShow err + pure parsed + Right r -> pure r + liftEffect do + formatted <- formatCsf csf + parseCsf formatted options + +enrichWithPureScriptInfo ∷ String → CsfFile → Aff (Either Error CsfFile) +enrichWithPureScriptInfo fileName parsed = attempt do + sourceMapText <- readTextFile UTF8 (fileName <> ".map") + sourceMap :: SourceMap <- JSON.readJSON sourceMapText # throwJSONErr + sourcePath <- sourceMap.sources # Array.head # throwMaybe "empty source path" + absoluteSourcePath <- resolve [ (dirname fileName) ] sourcePath # liftEffect + psFile <- readTextFile UTF8 absoluteSourcePath + cst <- case parseModule psFile of + ParseSucceeded mod -> pure mod + _ -> err $ "failed to parse PureScript module " <> psFile + let topLevelDecls = getTopLevelValueDeclarations cst + storyNames <- CSF.getStoryNames parsed # liftEffect + resultRef <- Ref.new parsed # liftEffect + -- The lines we will need later + let lines = String.split (Pattern "\n") psFile + for_ storyNames \storyName -> do + for_ (Map.lookup storyName (unwrap topLevelDecls)) \(pos :: (First CST.SourceRange)) -> liftEffect do + let { start, end } = un First pos + let completeLines = Array.slice (start.line) (end.line - 2) lines + case lines !! (start.line), lines !! (end.line) of + Just startLine, Just endLine -> do + let + code = + SCU.drop start.column startLine <> "\n" + <> Array.intercalate "\n" completeLines + <> "\n" + <> + SCU.take end.column endLine + before <- Ref.read resultRef + after <- setStoryCode { storyName, code } before + Ref.write after resultRef + _, _ -> Console.error "weird" + result <- Ref.read resultRef # liftEffect + pure result + where + + err :: forall a. String -> Aff a + err = throwError <<< error + + throwMaybe msg = maybe (err msg) pure + + throwJSONErr = either (err <<< intercalateMap "\n" renderHumanError) pure + +type TLDMap = SemigroupMap String (First CST.SourceRange) + +getTopLevelValueDeclarations :: forall a. CST.Module a -> TLDMap +getTopLevelValueDeclarations = foldMapModule $ defaultMonoidalVisitor + { onDecl = case _ of + CST.DeclValue { name: CST.Name { token: { range }, name: CST.Ident name } } -> + SemigroupMap $ Map.singleton name (First range) + _ -> mempty + } + +adjustSourceForStorybook ∷ String → String +adjustSourceForStorybook = + Regex.replace + defaultVariableRecordRegex + """var $$$$default = { $1 };""" + +defaultVariableRecordRegex ∷ Regex +defaultVariableRecordRegex = unsafeRegex + """^var \$\$default =[^\{]+\{((?:.*\n)+?)(^\}\);)""" + (RF.multiline <> RF.global) diff --git a/.storybook/purescript-indexer/src/SourceMap.js b/.storybook/purescript-indexer/src/SourceMap.js new file mode 100644 index 0000000..715dd8d --- /dev/null +++ b/.storybook/purescript-indexer/src/SourceMap.js @@ -0,0 +1,4 @@ +import { SourceMapConsumer } from "source-map" + +export const withSourceMapConsumerImpl = + (fn, data) => SourceMapConsumer.with(data, null, fn) diff --git a/.storybook/purescript-indexer/src/SourceMap.purs b/.storybook/purescript-indexer/src/SourceMap.purs new file mode 100644 index 0000000..341e61f --- /dev/null +++ b/.storybook/purescript-indexer/src/SourceMap.purs @@ -0,0 +1,29 @@ +module SourceMap (withSourceMapConsumer) where + +import Prelude + +import Control.Promise (Promise) +import Control.Promise as Promise +import Effect.Aff (Aff) +import Effect.Uncurried (EffectFn1, EffectFn2, mkEffectFn1, runEffectFn2) +import Foreign (Foreign) +import SourceMap.Types (SourceMapConsumer, SourceMap) +import Yoga.JSON as JSON + +foreign import withSourceMapConsumerImpl :: + EffectFn2 + -- handler + (EffectFn1 SourceMapConsumer (Promise Unit)) + -- the map + Foreign + (Promise Unit) + +withSourceMapConsumer + :: (SourceMapConsumer -> Aff Unit) -> + SourceMap -> + Aff Unit +withSourceMapConsumer handler map = + Promise.toAffE do + runEffectFn2 withSourceMapConsumerImpl + (mkEffectFn1 (Promise.fromAff <<< handler)) + (JSON.write map) diff --git a/.storybook/purescript-indexer/src/SourceMap/Types.purs b/.storybook/purescript-indexer/src/SourceMap/Types.purs new file mode 100644 index 0000000..198af8a --- /dev/null +++ b/.storybook/purescript-indexer/src/SourceMap/Types.purs @@ -0,0 +1,14 @@ +module SourceMap.Types where + +import Data.Maybe (Maybe) + +foreign import data SourceMapConsumer :: Type + +type SourceMap = + { file ∷ String + , mappings ∷ String + , names ∷ Array String + , sourceRoot ∷ Maybe String + , sources ∷ Array String + , version ∷ Int + } diff --git a/.storybook/purescript-indexer/src/Storybook/CSFTools.js b/.storybook/purescript-indexer/src/Storybook/CSFTools.js new file mode 100644 index 0000000..e3fcf2b --- /dev/null +++ b/.storybook/purescript-indexer/src/Storybook/CSFTools.js @@ -0,0 +1,16 @@ +import * as CSF from '@storybook/csf-tools'; + +export const parseCsf = code => options => () => CSF.loadCsf(code, options).parse() + +export const formatCsf = file => () => CSF.formatCsf(file) + +export const getStoryNames = csf => () => Object.keys(csf._stories) + +export const setStoryCode = ({ storyName, code }) => csf => () => { + if (!csf._stories[storyName]) return csf; + if (!csf._stories[storyName].parameters) { csf._stories[storyName].parameters = {} } + if (!csf._stories[storyName].parameters.docs) { csf._stories[storyName].parameters.docs = {} } + if (!csf._stories[storyName].parameters.docs.source) { csf._stories[storyName].parameters.docs.source = {} } + csf._stories[storyName].parameters.docs.source.code = code + return csf +} diff --git a/.storybook/purescript-indexer/src/Storybook/CSFTools.purs b/.storybook/purescript-indexer/src/Storybook/CSFTools.purs new file mode 100644 index 0000000..c4e0d7c --- /dev/null +++ b/.storybook/purescript-indexer/src/Storybook/CSFTools.purs @@ -0,0 +1,12 @@ +module Storybook.CSFTools where + +import Effect (Effect) +import Storybook.CSFTools.Types (CsfFile, CsfOptions) + +foreign import parseCsf :: String -> CsfOptions -> Effect CsfFile + +foreign import formatCsf :: CsfFile -> Effect String + +foreign import getStoryNames :: CsfFile -> Effect (Array String) + +foreign import setStoryCode :: { storyName :: String, code :: String } -> CsfFile -> Effect CsfFile diff --git a/.storybook/purescript-indexer/src/Storybook/CSFTools/Types.purs b/.storybook/purescript-indexer/src/Storybook/CSFTools/Types.purs new file mode 100644 index 0000000..1c9feac --- /dev/null +++ b/.storybook/purescript-indexer/src/Storybook/CSFTools/Types.purs @@ -0,0 +1,8 @@ +module Storybook.CSFTools.Types where + +foreign import data CsfFile :: Type + +type CsfOptions = { + fileName :: String, + makeTitle :: String -> String +} diff --git a/.storybook/purescript-indexer/test/Main.purs b/.storybook/purescript-indexer/test/Main.purs new file mode 100644 index 0000000..f91f98c --- /dev/null +++ b/.storybook/purescript-indexer/test/Main.purs @@ -0,0 +1,11 @@ +module Test.Main where + +import Prelude + +import Effect (Effect) +import Effect.Class.Console (log) + +main :: Effect Unit +main = do + log "🍝" + log "You should add some tests." diff --git a/.storybook/purescript-loader.ts b/.storybook/purescript-loader.ts new file mode 100644 index 0000000..e5a09ee --- /dev/null +++ b/.storybook/purescript-loader.ts @@ -0,0 +1,51 @@ +import { promises } from "fs" +import { relative } from "path" + +const mapWithKeys = (obj, fn) => + Object.fromEntries(Object.entries(obj).map(([k, v], i) => fn(k, v, i))) + +const capitalise = str => { + if (str.length === 0) return str + return str.charAt(0).toUpperCase() + str.slice(1) +} + +const toJSPath = (outputFolder, pursPath) => + pursPath + .slice(0, -5) + .split("/") + .reduce((acc, curr) => { + if (acc == "") { + if (curr == "stories") return (outputFolder + "/") + return "" + } + return acc + curr + "." + }, "").slice(0, -1) + "/index.js" + +export default function (source) { + console.log(this.resourcePath) + const options = this.getOptions() + if(!options.outputFolder) { + this.emitError("You must specify an output folder in options") + } + const outputFolder = relative(this.resourcePath, options.outputFolder) + const callback = this.async(); + const path = toJSPath(outputFolder, this.resourcePath).slice(3) + console.log() + console.log() + console.log() + const result = `export * from "${path}" +import originalDefault from "${path}" +export default { title: "Erwin", decorators: originalDefault.decorators } +` + console.log("Result", `export * from "${path}"`) + console.log() + console.log() + console.log() + + callback(null, result) + + // promises.readFile(path).then(file => { + // // console.log(file.toString()) + // callback(null, file.toString()) + // ) +} diff --git a/.storybook/rowtype-yoga-theme.js b/.storybook/rowtype-yoga-theme.js deleted file mode 100644 index 6f2abd2..0000000 --- a/.storybook/rowtype-yoga-theme.js +++ /dev/null @@ -1,28 +0,0 @@ -import logo from "./logo.svg" -import { create } from "@storybook/theming/create" - -export default create({ - base: "light", - - colorSecondary: "#271C5A", - colorPrimary: "#5B43D0", - - // UI - // appBg: '#10354a', - // appContentBg: '#203f50', - // appBorderColor: '#002334', - - // Typography - fontBase: - '"Inter V", "Inter var", Inter, -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Ubuntu, Arial, sans-serif', - fontCode: '"VictorMono", monospace', - - // Text colors - textColor: "black", - - textInverseColor: "rgba(255,255,255,0.9)", - - brandTitle: "Rowtype Yoga", - brandUrl: "https://rowtype.yoga", - brandImage: logo -}) diff --git a/.tidyrc.json b/.tidyrc.json new file mode 100644 index 0000000..a5eaff1 --- /dev/null +++ b/.tidyrc.json @@ -0,0 +1,11 @@ +{ + "importSort": "source", + "importWrap": "source", + "indent": 2, + "operatorsFile": null, + "ribbon": 1, + "typeArrowPlacement": "last", + "unicode": "always", + "width": 80 +} + diff --git a/.vscode/settings.json b/.vscode/settings.json index fcf72ed..4d24222 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,6 +1,6 @@ { "editor.formatOnSave": true, - "workbench.colorTheme": "Espresso Soda", + "workbench.colorTheme": "Halcyon", "search.useGlobalIgnoreFiles": true, "files.watcherExclude": { "**/.spago/**": true, diff --git a/assets/mat.webm b/assets/mat.webm new file mode 100644 index 0000000000000000000000000000000000000000..0d4a29996d3606146c9cf362dcff12f61d343925 GIT binary patch literal 396543 zcmcG#WmFtZ)G*k?z~JugF2P*}cXxMpf(9Gh2`<4Ugx~>!y9XzD2niB_;O?;Vy!)PS z&;Hv#Tc_(x-R`}evi}<*(ra*qL#OK9$?#`*dc%&ob&((o z_3jinNTJⅇ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

w|M!7OBSuTi^amp$QvTYz!M3 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

l==sEwyE^V+|FN?B*ErAXxB;9% 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%0A_n)+5RoJ0!**pqu8q& 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 z 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

R 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´V>BU6+nS~z5C;=@$1*i77LomA}+ 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 Hm4^IZPPJum literal 0 HcmV?d00001 diff --git a/assets/unsplash-mat-2400.jpg b/assets/unsplash-mat-2400.jpg new file mode 100644 index 0000000000000000000000000000000000000000..789648f15e6ba4ab8b314d001fb98d3b81c110c9 GIT binary patch literal 1038846 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�qLEnw}#^;BjZ)HF<9c#1Jb>VYb7=3u! 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

1*A;ke{1g8^E@=n8P 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
q!Vp4H$MnJz0;*5cznnfN3qYX`?%!hCJ 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
)@AEa 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 PHI~-Ok8u4H89t-nx<@?0lOz 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 z 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