colorless 2.2.19 → 2.2.20
raw patch · 6 files changed
+26/−23 lines, 6 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
+ Colorless.Types: instance Data.Aeson.Types.FromJSON.FromJSON Colorless.Types.Limits
+ Colorless.Types: instance Data.Aeson.Types.ToJSON.ToJSON Colorless.Types.Limits
+ Colorless.Types: instance GHC.Generics.Generic Colorless.Types.Limits
- Colorless.Client.Exchange: Response'Success :: a -> Response err a
+ Colorless.Client.Exchange: Response'Success :: a -> Limits -> Response err a
- Colorless.Server.Exchange: Response'Success :: Value -> Response
+ Colorless.Server.Exchange: Response'Success :: Value -> Limits -> Response
Files
- colorless.cabal +1/−1
- library/Colorless/Client/Exchange.hs +4/−4
- library/Colorless/Server/Exchange.hs +3/−3
- library/Colorless/Server/Expr.hs +5/−5
- library/Colorless/Types.hs +12/−9
- package.yaml +1/−1
colorless.cabal view
@@ -3,7 +3,7 @@ -- see: https://github.com/sol/hpack name: colorless-version: 2.2.19+version: 2.2.20 synopsis: Colorless | The Programmatic IDL description: Colorless | The Programmatic IDL category: Web
library/Colorless/Client/Exchange.hs view
@@ -8,7 +8,7 @@ import Data.Aeson (Value(..), FromJSON(..), ToJSON(..), object, (.=), (.:)) import Data.Text (Text) -import Colorless.Types (RuntimeError, HasType(..), Version(..))+import Colorless.Types (RuntimeError, HasType(..), Version(..), Limits) import Colorless.Ast (ToAst(..)) import Colorless.Val (ToVal(..), FromVal(..)) import Colorless.Client.Expr (Expr, exprJSON)@@ -53,7 +53,7 @@ data Response err a = Response'Error (ResponseError err)- | Response'Success a+ | Response'Success a Limits deriving (Show, Eq) instance (FromVal err, HasType err, FromVal a, HasType a) => FromJSON (Response err a) where@@ -64,11 +64,11 @@ m <- o .: "success" case fromVal m of Nothing -> mzero- Just v -> return $ Response'Success v+ Just v -> Response'Success v <$> o .: "limits" "Error" -> Response'Error <$> o .: "error" _ -> mzero parseJSON _ = mzero instance (ToVal err, HasType err, ToVal a, HasType a) => ToJSON (Response err a) where toJSON (Response'Error m) = object [ "tag" .= String "Error", "error" .= m ]- toJSON (Response'Success m) = object [ "tag" .= String "Success", "success" .= toVal m ]+ toJSON (Response'Success m limits) = object [ "tag" .= String "Success", "success" .= toVal m, "limits" .= limits]
library/Colorless/Server/Exchange.hs view
@@ -7,7 +7,7 @@ import Control.Monad (mzero) import Data.Aeson (Value(..), FromJSON(..), ToJSON(..), object, (.=), (.:)) -import Colorless.Types (RuntimeError)+import Colorless.Types (RuntimeError, Limits) data Request = Request { meta :: Value@@ -35,9 +35,9 @@ data Response = Response'Error ResponseError- | Response'Success Value+ | Response'Success Value Limits deriving (Show, Eq) instance ToJSON Response where toJSON (Response'Error m) = object [ "tag" .= String "Error", "error" .= m ]- toJSON (Response'Success m) = object [ "tag" .= String "Success", "success" .= m ]+ toJSON (Response'Success m limits) = object [ "tag" .= String "Success", "success" .= m, "limits" .= limits ]
library/Colorless/Server/Expr.hs view
@@ -94,13 +94,13 @@ else liftIO $ writeIORef ref (count + 1) tickServiceCall :: (MonadIO m, RuntimeThrower m) => Eval m ()-tickServiceCall = tick serviceCallLimit langServiceCallCount RuntimeError'LangServiceCallLimit+tickServiceCall = tick serviceCalls langServiceCallCount RuntimeError'LangServiceCallLimit tickLambda :: (MonadIO m, RuntimeThrower m) => Eval m ()-tickLambda = tick lambdaLimit langLambdaCount RuntimeError'LangLambdaLimit+tickLambda = tick lambdas langLambdaCount RuntimeError'LangLambdaLimit tickExpr :: (MonadIO m, RuntimeThrower m) => Eval m ()-tickExpr = tick exprLimit langExprCount RuntimeError'LangExprLimit+tickExpr = tick expressions langExprCount RuntimeError'LangExprLimit type Env m = Map Symbol (IORef (Expr m)) @@ -313,7 +313,7 @@ addVarToScope envRef var expr = do env <- liftIO $ readIORef envRef ref <- liftIO $ newIORef expr- limit <- variableLimit <$> asks limits+ limit <- variables <$> asks limits addVarToEnv limit envRef var ref env varLookup :: (MonadIO m, RuntimeThrower m) => Map Symbol (IORef a) -> Symbol -> m a@@ -504,7 +504,7 @@ else RuntimeError'TooFewArguments else do args' <- liftIO $ mapM newIORef (Map.fromList args)- limit <- variableLimit <$> asks limits+ limit <- variables <$> asks limits envRef' <- addEnvToEnv limit args' envRef eval expr envRef'
library/Colorless/Types.hs view
@@ -149,18 +149,21 @@ parseJSON _ = mzero data Limits = Limits- { variableLimit :: Maybe Int- , serviceCallLimit :: Maybe Int- , lambdaLimit :: Maybe Int- , exprLimit :: Maybe Int- } deriving (Show, Eq)+ { variables :: Maybe Int+ , serviceCalls :: Maybe Int+ , lambdas :: Maybe Int+ , expressions :: Maybe Int+ } deriving (Show, Eq, Generic) +instance ToJSON Limits+instance FromJSON Limits+ defLimits :: Limits defLimits = Limits- { variableLimit = Just 50- , serviceCallLimit = Just 50- , lambdaLimit = Just 10- , exprLimit = Just 100+ { variables = Just 50+ , serviceCalls = Just 50+ , lambdas = Just 10+ , expressions = Just 100 } data Hooks m meta meta' = Hooks
package.yaml view
@@ -1,5 +1,5 @@ name: colorless-version: '2.2.19'+version: '2.2.20' category: Web synopsis: Colorless | The Programmatic IDL description: Colorless | The Programmatic IDL