-- | To run this alternative main: spago run -m AlternativeMain module AlternativeMain where import Prelude import Effect (Effect) import Effect.Class.Console as Console import Data.Argonaut.Core as J import Data.Codec.Argonaut as CA import Data.Either (Either) import Data.Codec.Argonaut.Record as CAR import Data.Argonaut.Parser as JSONParser import Data.Bifunctor (lmap) import App.PermissionLevel as PermissionLevel type Permission = { permission :: PermissionLevel.PermissionLevel } codecPermission :: CA.JsonCodec Permission codecPermission = CA.object "Permission" (CAR.record { permission: PermissionLevel.codec }) encode :: Permission -> String encode = J.stringify <<< CA.encode codecPermission decode :: String -> Either String Permission decode = parseDecodeJSON codecPermission 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)