@@ -5,6 +5,7 @@ module Wasp.Generator.ExternalConfig.TsConfig
5
5
)
6
6
where
7
7
8
+ import Data.List (intercalate )
8
9
import qualified Wasp.ExternalConfig.TsConfig as T
9
10
import Wasp.Generator.ExternalConfig.Common (ErrorMsg )
10
11
@@ -21,7 +22,15 @@ instance IsJavascriptValue Bool where
21
22
showAsJsValue True = " true"
22
23
showAsJsValue False = " false"
23
24
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
25
34
26
35
validateSrcTsConfig :: T. TsConfig -> [ErrorMsg ]
27
36
validateSrcTsConfig tsConfig =
@@ -38,30 +47,31 @@ validateSrcTsConfig tsConfig =
38
47
validateRequiredFieldInCompilerOptions " outDir" " .wasp/phantom" T. outDir
39
48
]
40
49
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
43
52
Nothing -> [missingFieldErrorMessage]
44
53
where
54
+ fieldValue = getFieldValue $ T. compilerOptions tsConfig
55
+ fullyQualifiedFieldName = FieldName [" compilerOptions" , fieldName]
56
+
45
57
missingFieldErrorMessage =
46
58
unwords
47
59
[ " 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:" ,
50
62
showAsJsValue expectedValue ++ " ."
51
63
]
52
64
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 =
57
67
if actualValue == expectedValue
58
68
then []
59
69
else [invalidValueErrorMessage]
60
70
where
61
71
invalidValueErrorMessage =
62
72
unwords
63
73
[ " 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:" ,
66
76
showAsJsValue expectedValue ++ " ."
67
77
]
0 commit comments