Skip to content

Commit c350cbe

Browse files
authored
Update tsconfig.json validation messages (#2322)
1 parent 73e5532 commit c350cbe

File tree

1 file changed

+21
-11
lines changed

1 file changed

+21
-11
lines changed

waspc/src/Wasp/Generator/ExternalConfig/TsConfig.hs

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ module Wasp.Generator.ExternalConfig.TsConfig
55
)
66
where
77

8+
import Data.List (intercalate)
89
import qualified Wasp.ExternalConfig.TsConfig as T
910
import Wasp.Generator.ExternalConfig.Common (ErrorMsg)
1011

@@ -21,7 +22,15 @@ instance IsJavascriptValue Bool where
2122
showAsJsValue True = "true"
2223
showAsJsValue False = "false"
2324

24-
type FieldName = String
25+
-- | Represents a fully qualified field name in a JSON object.
26+
-- For example, for the field "module" in the "compilerOptions" object,
27+
-- the fully qualified field name would be "compilerOptions.module".
28+
data FullyQualifiedFieldName = FieldName FieldPath
29+
30+
type FieldPath = [String]
31+
32+
instance Show FullyQualifiedFieldName where
33+
show (FieldName fieldPath) = intercalate "." fieldPath
2534

2635
validateSrcTsConfig :: T.TsConfig -> [ErrorMsg]
2736
validateSrcTsConfig tsConfig =
@@ -38,30 +47,31 @@ validateSrcTsConfig tsConfig =
3847
validateRequiredFieldInCompilerOptions "outDir" ".wasp/phantom" T.outDir
3948
]
4049
where
41-
validateRequiredFieldInCompilerOptions fieldName expectedValue getFieldValue = case getFieldValue compilerOptionsFields of
42-
Just actualValue -> validateFieldValue ("compilerOptions." ++ fieldName) expectedValue actualValue
50+
validateRequiredFieldInCompilerOptions fieldName expectedValue getFieldValue = case fieldValue of
51+
Just actualValue -> validateFieldValue fullyQualifiedFieldName expectedValue actualValue
4352
Nothing -> [missingFieldErrorMessage]
4453
where
54+
fieldValue = getFieldValue $ T.compilerOptions tsConfig
55+
fullyQualifiedFieldName = FieldName ["compilerOptions", fieldName]
56+
4557
missingFieldErrorMessage =
4658
unwords
4759
[ "The",
48-
show fieldName,
49-
"field is missing in tsconfig.json. Expected value:",
60+
"\"" ++ show fullyQualifiedFieldName ++ "\"",
61+
"field is missing in tsconfig.json, expected value:",
5062
showAsJsValue expectedValue ++ "."
5163
]
5264

53-
compilerOptionsFields = T.compilerOptions tsConfig
54-
55-
validateFieldValue :: (Eq value, IsJavascriptValue value) => FieldName -> value -> value -> [String]
56-
validateFieldValue fieldName expectedValue actualValue =
65+
validateFieldValue :: (Eq value, IsJavascriptValue value) => FullyQualifiedFieldName -> value -> value -> [String]
66+
validateFieldValue fullyQualifiedFieldName expectedValue actualValue =
5767
if actualValue == expectedValue
5868
then []
5969
else [invalidValueErrorMessage]
6070
where
6171
invalidValueErrorMessage =
6272
unwords
6373
[ "Invalid value for the",
64-
show fieldName,
65-
"field in tsconfig.json file, expected value:",
74+
"\"" ++ show fullyQualifiedFieldName ++ "\"",
75+
"field in tsconfig.json, expected value:",
6676
showAsJsValue expectedValue ++ "."
6777
]

0 commit comments

Comments
 (0)