From d90b235f9a7d4c6932a2a5cf0ab1bf95fda65eef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filip=20Sodi=C4=87?= Date: Wed, 9 Oct 2024 16:32:18 +0200 Subject: [PATCH] Rename tsconfig constants and refactor --- waspc/src/Wasp/Project/Analyze.hs | 2 +- waspc/src/Wasp/Project/Common.hs | 15 ++++++++------- waspc/src/Wasp/Project/ExternalConfig/TsConfig.hs | 14 ++++++-------- .../waspls/src/Wasp/LSP/ExtImport/ExportsCache.hs | 4 ++-- 4 files changed, 17 insertions(+), 18 deletions(-) diff --git a/waspc/src/Wasp/Project/Analyze.hs b/waspc/src/Wasp/Project/Analyze.hs index ebecaab16d..0004fad4c9 100644 --- a/waspc/src/Wasp/Project/Analyze.hs +++ b/waspc/src/Wasp/Project/Analyze.hs @@ -12,7 +12,6 @@ import Control.Concurrent (newChan) import Control.Concurrent.Async (concurrently) import Control.Monad.Except (ExceptT (..), liftEither, runExceptT) import qualified Data.Aeson as Aeson -import Data.Conduit.Process.Typed (ExitCode (..)) import Data.List (find, isSuffixOf) import StrongPath ( Abs, @@ -29,6 +28,7 @@ import StrongPath relfile, (), ) +import System.Exit (ExitCode (..)) import qualified Wasp.Analyzer as Analyzer import Wasp.Analyzer.AnalyzeError (getErrorMessageAndCtx) import Wasp.Analyzer.Parser.Ctx (Ctx) diff --git a/waspc/src/Wasp/Project/Common.hs b/waspc/src/Wasp/Project/Common.hs index 25b9496c18..9fb166e924 100644 --- a/waspc/src/Wasp/Project/Common.hs +++ b/waspc/src/Wasp/Project/Common.hs @@ -23,7 +23,8 @@ module Wasp.Project.Common extPublicDirInWaspProjectDir, prismaSchemaFileInWaspProjectDir, getSrcTsConfigInWaspProjectDir, - tsConfigInWaspLangProject, + srcTsConfigInWaspLangProject, + srcTsConfigInWaspTsProject, ) where @@ -90,14 +91,14 @@ packageJsonInWaspProjectDir = [relfile|package.json|] -- TODO: The entire tsconfig story is very fragile getSrcTsConfigInWaspProjectDir :: WaspFilePath -> Path' (Rel WaspProjectDir) (File SrcTsConfigFile) getSrcTsConfigInWaspProjectDir = \case - WaspTs _ -> tsConfigInWaspTsProject - WaspLang _ -> tsConfigInWaspLangProject + WaspTs _ -> srcTsConfigInWaspTsProject + WaspLang _ -> srcTsConfigInWaspLangProject -tsConfigInWaspLangProject :: Path' (Rel WaspProjectDir) (File SrcTsConfigFile) -tsConfigInWaspLangProject = [relfile|tsconfig.json|] +srcTsConfigInWaspLangProject :: Path' (Rel WaspProjectDir) (File SrcTsConfigFile) +srcTsConfigInWaspLangProject = [relfile|tsconfig.json|] -tsConfigInWaspTsProject :: Path' (Rel WaspProjectDir) (File SrcTsConfigFile) -tsConfigInWaspTsProject = [relfile|tsconfig.src.json|] +srcTsConfigInWaspTsProject :: Path' (Rel WaspProjectDir) (File SrcTsConfigFile) +srcTsConfigInWaspTsProject = [relfile|tsconfig.src.json|] packageLockJsonInWaspProjectDir :: Path' (Rel WaspProjectDir) File' packageLockJsonInWaspProjectDir = [relfile|package-lock.json|] diff --git a/waspc/src/Wasp/Project/ExternalConfig/TsConfig.hs b/waspc/src/Wasp/Project/ExternalConfig/TsConfig.hs index db82f9ed5a..e12ca1e591 100644 --- a/waspc/src/Wasp/Project/ExternalConfig/TsConfig.hs +++ b/waspc/src/Wasp/Project/ExternalConfig/TsConfig.hs @@ -3,6 +3,7 @@ module Wasp.Project.ExternalConfig.TsConfig ) where +import Control.Arrow (left) import Control.Monad.Except (ExceptT (ExceptT), runExceptT, throwError) import qualified Data.ByteString.Lazy.UTF8 as BS import Data.Either.Extra (maybeToEither) @@ -23,7 +24,7 @@ analyzeSrcTsConfigFile :: IO (Either [String] T.TsConfig) analyzeSrcTsConfigFile waspDir srcTsConfigFile = runExceptT $ do tsConfigFileContents <- ExceptT findTsConfigOrError - srcTsConfigContents <- ExceptT $ readSrcTsConfigFile tsConfigFileContents + srcTsConfigContents <- ExceptT $ left (: []) <$> readTsConfigFile tsConfigFileContents case validateSrcTsConfig srcTsConfigContents of [] -> return srcTsConfigContents errors -> throwError errors @@ -31,12 +32,9 @@ analyzeSrcTsConfigFile waspDir srcTsConfigFile = runExceptT $ do findTsConfigOrError = maybeToEither [fileNotFoundMessage] <$> findFileInWaspProjectDir waspDir srcTsConfigFile fileNotFoundMessage = "Couldn't find the tsconfig.json file in the " ++ toFilePath waspDir ++ " directory" -readSrcTsConfigFile :: Path' Abs (File SrcTsConfigFile) -> IO (Either [String] T.TsConfig) -readSrcTsConfigFile tsConfigFile = do +-- TODO: Reduce polymorphism, should only work with TsConfig files +readTsConfigFile :: Path' Abs (File f) -> IO (Either String T.TsConfig) +readTsConfigFile tsConfigFile = do tsConfigContent <- IOUtil.readFileBytes tsConfigFile - parseResult <- parseJsonWithComments . BS.toString $ tsConfigContent - - case parseResult of - Right tsConfig -> return $ Right tsConfig - Left err -> return $ Left ["Failed to parse tsconfig.json file: " ++ err] + return $ left ("Failed to parse tsconfig file" ++) parseResult diff --git a/waspc/waspls/src/Wasp/LSP/ExtImport/ExportsCache.hs b/waspc/waspls/src/Wasp/LSP/ExtImport/ExportsCache.hs index abb7f75ced..369346be39 100644 --- a/waspc/waspls/src/Wasp/LSP/ExtImport/ExportsCache.hs +++ b/waspc/waspls/src/Wasp/LSP/ExtImport/ExportsCache.hs @@ -22,7 +22,7 @@ import Wasp.LSP.ExtImport.Path (WaspStyleExtFilePath, absPathToCachePath, cacheP import Wasp.LSP.ExtImport.Syntax (ExtImportNode (einName, einPath), getAllExtImports) import Wasp.LSP.ServerMonads (HandlerM, ServerM, getProjectRootDir, handler, modify) import qualified Wasp.LSP.ServerState as State -import Wasp.Project.Common (tsConfigInWaspLangProject) +import Wasp.Project.Common (srcTsConfigInWaspLangProject) import qualified Wasp.TypeScript.Inspect.Exports as TS -- | Based on the files imported in the external imports of the current concrete @@ -63,7 +63,7 @@ refreshExportsOfFiles files = do getExportRequestForFile projectRootDir file = TS.TsExportsRequest { TS.filepaths = [SP.fromAbsFile file], - TS.tsconfig = Just $ SP.fromAbsFile $ projectRootDir tsConfigInWaspLangProject + TS.tsconfig = Just $ SP.fromAbsFile $ projectRootDir srcTsConfigInWaspLangProject } -- Replaces entries in the exports cache with the exports lists in the