11module Node.OS
2- ( OS , NetworkInterface , CPU
2+ ( NetworkInterface
3+ , CPU
34 , eol
45 , Arch (..), arch
56 , cpus
@@ -19,21 +20,20 @@ module Node.OS
1920 ) where
2021
2122import Prelude
22-
23+
2324import Data.Array ((!!))
2425import Data.Maybe (Maybe (..), fromMaybe )
25- import Data.StrMap (StrMap , update )
2626import Data.Time.Duration (Milliseconds , Seconds )
27-
28- import Control.Monad.Eff ( Eff , kind Effect )
29-
27+ import Data.Map ( Map , update )
28+ import Effect ( Effect )
29+
3030type NetworkInterface = { address :: String
3131 , netmask :: String
3232 , family :: String
3333 , mac :: String
3434 , internal :: Boolean
3535 }
36-
36+
3737type CPU = { model :: String
3838 , speed :: Int
3939 , times :: { user :: Milliseconds
@@ -42,9 +42,7 @@ type CPU = { model :: String
4242 , idle :: Milliseconds
4343 , irq :: Milliseconds } }
4444
45- foreign import data OS :: Effect
46-
47- loadavg :: forall eff . Eff ( os :: OS | eff ) { one :: Number , five :: Number , fifteen :: Number }
45+ loadavg :: Effect { one :: Number , five :: Number , fifteen :: Number }
4846loadavg = pure <<< fromMaybe {one: 0.0 , five: 0.0 , fifteen: 0.0 } <<< extract =<< loadavgImpl
4947 where
5048 extract xs = {one: _, five: _, fifteen: _} <$> xs !! 0 <*> xs !! 1 <*> xs !! 2
@@ -59,7 +57,7 @@ instance showArch :: Show Arch where
5957 show IA32 = " IA32"
6058 show UnknownArch = " UnknownArch"
6159
62- arch :: forall eff . Eff ( os :: OS | eff ) Arch
60+ arch :: Effect Arch
6361arch = do
6462 a <- archImpl
6563 pure case a of
@@ -77,7 +75,7 @@ instance showEndianness :: Show Endianness where
7775 show BigEndian = " BigEndian"
7876 show UnknownEndian = " UnknownEndian"
7977
80- endianness :: forall eff . Eff ( os :: OS | eff ) Endianness
78+ endianness :: Effect Endianness
8179endianness = do
8280 e <- endiannessImpl
8381 pure case e of
@@ -97,7 +95,7 @@ instance showPlatform :: Show Platform where
9795 show Win32 = " Win32"
9896 show UnknownPlatform = " UnknownPlatform"
9997
100- platform :: forall eff . Eff ( os :: OS | eff ) Platform
98+ platform :: Effect Platform
10199platform = do
102100 p <- platformImpl
103101 pure case p of
@@ -107,7 +105,7 @@ platform = do
107105 " freebsd" -> FreeBSD
108106 " sunos" -> SunOS
109107 _ -> UnknownPlatform
110-
108+
111109type UserInfo =
112110 { uid :: Int
113111 , gid :: Int
@@ -116,30 +114,29 @@ type UserInfo =
116114 , shell :: Maybe String
117115 }
118116
119- userInfo :: forall eff . { encoding :: String } -> Eff ( os :: OS | eff ) UserInfo
117+ userInfo :: { encoding :: String } -> Effect UserInfo
120118userInfo = userInfoImpl (flip update " shell" ) Nothing Just
121119
122120foreign import eol :: Char
123- foreign import archImpl :: forall eff . Eff ( os :: OS | eff ) String
124- foreign import cpus :: forall eff . Eff ( os :: OS | eff ) (Array CPU )
125- foreign import endiannessImpl :: forall eff . Eff ( os :: OS | eff ) String
126- foreign import freemem :: forall eff . Eff ( os :: OS | eff ) Number
127- foreign import homedir :: forall eff . Eff ( os :: OS | eff ) String
128- foreign import hostname :: forall eff . Eff ( os :: OS | eff ) String
129- foreign import loadavgImpl :: forall eff . Eff ( os :: OS | eff ) (Array Number )
130- foreign import platformImpl :: forall eff . Eff ( os :: OS | eff ) String
131- foreign import release :: forall eff . Eff ( os :: OS | eff ) String
132- foreign import tmpdir :: forall eff . Eff ( os :: OS | eff ) String
133- foreign import totalmem :: forall eff . Eff ( os :: OS | eff ) Number
134- foreign import ostype :: forall eff . Eff ( os :: OS | eff ) String
135- foreign import uptime :: forall eff . Eff ( os :: OS | eff ) Seconds
121+ foreign import archImpl :: Effect String
122+ foreign import cpus :: Effect (Array CPU )
123+ foreign import endiannessImpl :: Effect String
124+ foreign import freemem :: Effect Number
125+ foreign import homedir :: Effect String
126+ foreign import hostname :: Effect String
127+ foreign import loadavgImpl :: Effect (Array Number )
128+ foreign import platformImpl :: Effect String
129+ foreign import release :: Effect String
130+ foreign import tmpdir :: Effect String
131+ foreign import totalmem :: Effect Number
132+ foreign import ostype :: Effect String
133+ foreign import uptime :: Effect Seconds
136134foreign import networkInterfaces
137- :: forall eff
138- . Eff ( os :: OS | eff ) (StrMap (Array NetworkInterface ))
135+ :: Effect (Map String (Array NetworkInterface ))
139136foreign import userInfoImpl
140- :: forall a eff
141- . ((a -> Maybe a ) -> StrMap a -> StrMap a )
137+ :: forall a
138+ . ((a -> Maybe a ) -> Map String a -> Map String a )
142139 -> Maybe a
143140 -> (a -> Maybe a )
144141 -> { encoding :: String }
145- -> Eff ( os :: OS | eff ) UserInfo
142+ -> Effect UserInfo
0 commit comments