Skip to content

Commit

Permalink
PR comments
Browse files Browse the repository at this point in the history
  • Loading branch information
infomiho committed Sep 27, 2024
1 parent 3086ed1 commit 6a7ba87
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 36 deletions.
5 changes: 2 additions & 3 deletions waspc/src/Wasp/ExternalConfig/PackageJson.hs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}

module Wasp.ExternalConfig.PackageJson
Expand All @@ -22,7 +23,7 @@ data PackageJson = PackageJson
dependencies :: !DependenciesMap,
devDependencies :: !DependenciesMap
}
deriving (Show, Generic)
deriving (Show, Generic, FromJSON)

getDependencies :: PackageJson -> [Dependency]
getDependencies packageJson = D.fromList $ M.toList $ dependencies packageJson
Expand All @@ -35,5 +36,3 @@ type DependenciesMap = Map PackageName PackageVersion
type PackageName = String

type PackageVersion = String

instance FromJSON PackageJson
10 changes: 5 additions & 5 deletions waspc/src/Wasp/Generator/ExternalConfig/PackageJson.hs
Original file line number Diff line number Diff line change
Expand Up @@ -12,19 +12,19 @@ import Wasp.Generator.WebAppGenerator.Common (reactRouterVersion)
validatePackageJson :: P.PackageJson -> [ErrorMsg]
validatePackageJson packageJson =
concat
[ validate ("wasp", "file:.wasp/out/sdk/wasp", IsListedWithExactVersion),
validate ("prisma", show prismaVersion, IsListedAsDevWithExactVersion),
[ validate ("wasp", "file:.wasp/out/sdk/wasp") IsListedWithExactVersion,
validate ("prisma", show prismaVersion) IsListedAsDevWithExactVersion,
-- Installing the wrong version of "react-router-dom" can make users believe that they
-- can use features that are not available in the version that Wasp supports.
validate ("react-router-dom", show reactRouterVersion, HasExactVersionIfListed)
validate ("react-router-dom", show reactRouterVersion) HasExactVersionIfListed
]
where
validate = validateDep packageJson

data PackageValidationType = IsListedWithExactVersion | IsListedAsDevWithExactVersion | HasExactVersionIfListed

validateDep :: P.PackageJson -> (P.PackageName, P.PackageVersion, PackageValidationType) -> [String]
validateDep packageJson (packageName, expectedPackageVersion, validationType) = case validationType of
validateDep :: P.PackageJson -> (P.PackageName, P.PackageVersion) -> PackageValidationType -> [String]
validateDep packageJson (packageName, expectedPackageVersion) = \case
IsListedWithExactVersion -> checkDeps [P.dependencies packageJson] [requiredPackageMessage "dependencies"]
IsListedAsDevWithExactVersion -> checkDeps [P.devDependencies packageJson] [requiredPackageMessage "devDependencies"]
HasExactVersionIfListed -> checkDeps [P.dependencies packageJson, P.devDependencies packageJson] []
Expand Down
56 changes: 28 additions & 28 deletions waspc/src/Wasp/Generator/ExternalConfig/TsConfig.hs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,21 @@ where
import qualified Wasp.ExternalConfig.TsConfig as T
import Wasp.Generator.ExternalConfig.Common (ErrorMsg)

class IsJavascriptValue a where
showAsJsValue :: a -> String

instance IsJavascriptValue String where
showAsJsValue = show

instance IsJavascriptValue [String] where
showAsJsValue = show

instance IsJavascriptValue Bool where
showAsJsValue True = "true"
showAsJsValue False = "false"

type FieldName = String

validateTsConfig :: T.TsConfig -> [ErrorMsg]
validateTsConfig tsConfig =
concat
Expand Down Expand Up @@ -37,31 +52,16 @@ validateTsConfig tsConfig =

compilerOptionsFields = T.compilerOptions tsConfig

class IsJavascriptValue a where
showAsJsValue :: a -> String

instance IsJavascriptValue String where
showAsJsValue = show

instance IsJavascriptValue [String] where
showAsJsValue = show

instance IsJavascriptValue Bool where
showAsJsValue True = "true"
showAsJsValue False = "false"

type FieldName = String

validateFieldValue :: (Eq value, IsJavascriptValue value) => FieldName -> value -> value -> [String]
validateFieldValue fieldName expectedValue actualValue =
if actualValue == expectedValue
then []
else [invalidValueErrorMessage]
where
invalidValueErrorMessage =
unwords
[ "Invalid value for the",
show fieldName,
"field in tsconfig.json file, expected value:",
showAsJsValue expectedValue ++ "."
]
validateFieldValue :: (Eq value, IsJavascriptValue value) => FieldName -> value -> value -> [String]
validateFieldValue fieldName expectedValue actualValue =
if actualValue == expectedValue
then []
else [invalidValueErrorMessage]
where
invalidValueErrorMessage =
unwords
[ "Invalid value for the",
show fieldName,
"field in tsconfig.json file, expected value:",
showAsJsValue expectedValue ++ "."
]

0 comments on commit 6a7ba87

Please sign in to comment.