Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@
/.psc*
/.purs*
/.psa*
/.spago
11 changes: 11 additions & 0 deletions packages.dhall
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
let mkPackage =
https://raw.githubusercontent.com/purescript/package-sets/psc-0.12.5-20190508/src/mkPackage.dhall sha256:0b197efa1d397ace6eb46b243ff2d73a3da5638d8d0ac8473e8e4a8fc528cf57

let upstream =
https://raw.githubusercontent.com/purescript/package-sets/psc-0.12.5-20190508/src/packages.dhall sha256:8ef3a6d6d123e05933997426da68ef07289e1cbbdd2a844b5d10c9159deef65a

let overrides = {=}

let additions = {=}

in upstream // overrides // additions
15 changes: 0 additions & 15 deletions psc-package.json

This file was deleted.

17 changes: 17 additions & 0 deletions spago.dhall
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{ name =
"purescript-readts"
, dependencies =
[ "argonaut-codecs"
, "argonaut-core"
, "console"
, "debug"
, "effect"
, "exceptions"
, "node-fs"
, "prelude"
, "psci-support"
, "strings"
]
, packages =
./packages.dhall
}
38 changes: 19 additions & 19 deletions src/ReadTS.purs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ module ReadTS where
import Prelude

import Data.Argonaut.Core (Json)
import Data.Argonaut.Decode (decodeJson, (.?), (.??))
import Data.Argonaut.Decode (decodeJson, (.:), (.:?))
import Data.Array (foldMap)
import Data.Either (Either(..), either)
import Data.Maybe (Maybe, maybe)
Expand Down Expand Up @@ -106,15 +106,15 @@ symbolsForDeclaration = case _ of

decodeAlias :: Object Json -> Either String TypeRefParams
decodeAlias o = do
name <- o .? "typeReference"
typeArgs <- o .? "typeParams" >>= traverse decodeTSType
name <- o .: "typeReference"
typeArgs <- o .: "typeParams" >>= traverse decodeTSType
pure {name, typeArgs}

decodeTSType :: Json -> Either String TSType
decodeTSType v = do
o <- decodeJson v
let decodeMembers = o .? "members" >>= traverse decodeMember
o .? "type" >>= case _ of
let decodeMembers = o .: "members" >>= traverse decodeMember
o .: "type" >>= case _ of
"any" -> pure Any
"boolean" -> pure TSBoolean
"string" -> pure TSString
Expand All @@ -125,32 +125,32 @@ decodeTSType v = do
"void" -> pure Void
"undefined" -> pure Undefined
"union" -> do
alias <- o .?? "alias" >>= traverse decodeAlias
Union alias <$> (o .? "types" >>= traverse decodeTSType)
"stringLiteral" -> StringLiteral <$> o .? "value"
"numberLiteral" -> NumberLiteral <$> o .? "value"
alias <- o .:? "alias" >>= traverse decodeAlias
Union alias <$> (o .: "types" >>= traverse decodeTSType)
"stringLiteral" -> StringLiteral <$> o .: "value"
"numberLiteral" -> NumberLiteral <$> o .: "value"
"unknownObject" -> pure Unknown
"typeparam" -> TypeParam <$> o .? "name"
"interfaceReference" -> InterfaceReference <$> o .? "name"
"typeparam" -> TypeParam <$> o .: "name"
"interfaceReference" -> InterfaceReference <$> o .: "name"
"object" -> AnonymousObject <$> decodeMembers
"function" -> do
params <- o .? "params" >>= traverse decodeMember
return <- o .? "return" >>= decodeTSType
params <- o .: "params" >>= traverse decodeMember
return <- o .: "return" >>= decodeTSType
pure $ Function {params, return}
"interface" -> do
name <- o .? "name"
name <- o .: "name"
members <- decodeMembers
pure $ Interface {name,members}
"typeReference" -> do
name <- o .? "name"
typeArgs <- o .? "typeParams" >>= traverse decodeTSType
name <- o .: "name"
typeArgs <- o .: "typeParams" >>= traverse decodeTSType
pure $ TypeReference {name,typeArgs}
t -> Left $ "Unknown type" <> show t
where
decodeMember o = do
name <- o .? "name"
optional <- o .? "optional"
t <- o .? "type" >>= decodeTSType
name <- o .: "name"
optional <- o .: "optional"
t <- o .: "type" >>= decodeTSType
pure $ {name, t, optional}

showNamed :: NamedTSType -> String
Expand Down