halogen-websocket-ipc-playzone/src/AlternativeMain.purs

42 lines
1.3 KiB
Plaintext
Raw Normal View History

-- | To run this alternative main: spago run -m AlternativeMain
module AlternativeMain where
import Prelude
import Effect (Effect)
import Effect.Class (class MonadEffect, liftEffect)
import Effect.Class.Console as Console
import Data.Argonaut.Core as J
import Data.Codec.Argonaut as CA
import Data.Maybe (Maybe)
import Data.Argonaut.Decode as DAD
import Data.Either (Either(..))
import Data.Codec.Argonaut.Record as CAR
import Data.UInt (fromInt, toInt, UInt)
import Data.Argonaut.Parser as JSONParser
import Data.Bifunctor (lmap)
import Data.Tuple (Tuple(..))
import App.PermissionLevel as PermissionLevel
type SumType = { permission :: PermissionLevel.PermissionLevel }
codecSumType = CA.object "SumType" (CAR.record { permission: PermissionLevel.codec })
encode :: SumType -> String
encode = J.stringify <<< CA.encode codecSumType
decode :: String -> Either String SumType
decode = parseDecodeJSON codecSumType
parseDecodeJSON :: forall a. CA.JsonCodec a -> String -> Either String a
parseDecodeJSON codec str = do
json <- JSONParser.jsonParser str
lmap CA.printJsonDecodeError (CA.decode codec json)
main :: Effect Unit
main = do
Console.log ("Hello this is the main")
let origin = { permission: PermissionLevel.Read }
Console.log ("origin: " <> encode origin)