colorless 2.2.16 → 2.2.17
raw patch · 4 files changed
+28/−19 lines, 4 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
+ Colorless.Types: RuntimeError'LambdaNotPermitted :: RuntimeError
- Colorless.Types: Options :: Maybe Int -> Options
+ Colorless.Types: Options :: Maybe Int -> Bool -> Options
Files
- colorless.cabal +1/−1
- library/Colorless/Server/Expr.hs +19/−15
- library/Colorless/Types.hs +7/−2
- package.yaml +1/−1
colorless.cabal view
@@ -3,7 +3,7 @@ -- see: https://github.com/sol/hpack name: colorless-version: 2.2.16+version: 2.2.17 synopsis: Colorless | The Programmatic IDL description: Colorless | The Programmatic IDL category: Web
library/Colorless/Server/Expr.hs view
@@ -343,26 +343,30 @@ expr' <- eval expr envRef env <- liftIO $ readIORef envRef ref <- liftIO $ newIORef expr'- limit <- variableLimit <$> getOptions+ limit <- hardVariableLimit <$> getOptions addVarToEnv limit envRef var ref env return expr' evalLambda :: (MonadIO m, RuntimeThrower m) => Lambda m -> IORef (Env m) -> Eval m (Expr m) evalLambda Lambda{params, expr} envRef = do- return . Expr'Fn . Fn $ \vals -> do- let keys = map fst params- let args = zip keys vals- let keysLen = length keys- let argsLen = length args- if keysLen /= argsLen- then runtimeThrow $ if keysLen < argsLen- then RuntimeError'TooManyArguments- else RuntimeError'TooFewArguments- else do- args' <- liftIO $ mapM newIORef (Map.fromList args)- limit <- variableLimit <$> getOptions- envRef' <- addEnvToEnv limit args' envRef- eval expr envRef'+ disabled <- hardDisableLambdas <$> getOptions+ if disabled+ then runtimeThrow $ RuntimeError'LambdaNotPermitted+ else+ return . Expr'Fn . Fn $ \vals -> do+ let keys = map fst params+ let args = zip keys vals+ let keysLen = length keys+ let argsLen = length args+ if keysLen /= argsLen+ then runtimeThrow $ if keysLen < argsLen+ then RuntimeError'TooManyArguments+ else RuntimeError'TooFewArguments+ else do+ args' <- liftIO $ mapM newIORef (Map.fromList args)+ limit <- hardVariableLimit <$> getOptions+ envRef' <- addEnvToEnv limit args' envRef+ eval expr envRef' evalList :: (MonadIO m, RuntimeThrower m) => List m -> IORef (Env m)-> Eval m (Expr m) evalList List{list} envRef = do
library/Colorless/Types.hs view
@@ -82,6 +82,7 @@ | RuntimeError'UnparsableQuery | RuntimeError'NoImplementation | RuntimeError'NotMember+ | RuntimeError'LambdaNotPermitted deriving (Show, Eq) instance ToJSON RuntimeError where@@ -105,6 +106,7 @@ RuntimeError'UnparsableQuery -> e "UnparsableQuery" RuntimeError'NoImplementation -> e "NoImplementation" RuntimeError'NotMember -> e "NotMember"+ RuntimeError'LambdaNotPermitted -> e "LambdaNotPermitted" where e s = object [ "tag" .= String s ] @@ -131,16 +133,19 @@ "UnparsableQuery" -> pure RuntimeError'UnparsableQuery "NoImplementation" -> pure RuntimeError'NoImplementation "NotMember" -> pure RuntimeError'NotMember+ "LambdaNotPermitted" -> pure RuntimeError'LambdaNotPermitted _ -> mzero parseJSON _ = mzero data Options = Options- { variableLimit :: Maybe Int+ { hardVariableLimit :: Maybe Int+ , hardDisableLambdas :: Bool } deriving (Show, Eq) defOptions :: Options defOptions = Options- { variableLimit = Just 100+ { hardVariableLimit = Just 100+ , hardDisableLambdas = True } --
package.yaml view
@@ -1,5 +1,5 @@ name: colorless-version: '2.2.16'+version: '2.2.17' category: Web synopsis: Colorless | The Programmatic IDL description: Colorless | The Programmatic IDL