Circe Validate Topic
A middleware factory. The function validates topics against specified validate methods. It also gives you the option to short-circuit a middleware chain.
Install
npm install @parkhub/circe-validate-topic
Usage
A factory that generates a middleware function to be used with circe-middleware
import validateTopic from '@parkhub/circe-validate-topic';
const validators = [
{
topic: 'AKAME',
validate: message => console.log('VALIDATING MESSAGE', message),
onInvalid: ({ topic, originalValue, reason }) =>
console.log('DO YOUR THING', { topic, originalValue, reason })
}
];
const onTopicValidatorNotFound = ({ topic, originalValue, reason }) =>
console.log('DO YOUR OTHER THING', { topic, originalValue, reason });
const validateCfgs = {
validators,
onTopicValidatorNotFound
};
// USE THIS IN CIRCE!
const validateMiddleware = validateTopic(validateCfgs);
circe.use(validateMiddleware);
Global Types
ErrorHandler A function that takes an object with the following properties
- topic(String) The topic that is associated with this error
- originalValue(Object) The FULL object passed into the validator middleware(valueToValidate) This is usually the kafka parameters associated with either a Producer's publish parameters or a Consumer's handler message format(see circe)
- reason(String) The reason generated by the validator as to why this failed
API
validateTopic({ validators, onTopicValidatorNotFound }) The factory function that will create a middleware function.
-
validators(validatorCfg[], REQUIRED)
-
validatorCfg(Object)
- topic The topic to validate
-
validate(Function, REQUIRED) The function to pass the message to validate to. This function SHOULD to return an object with the following properties:
- isValid(Boolean, REQUIRED) Did this message pass validation
- reason(String, optional) Reason why this failed
- onInvalid(Function, optional) A function that should accept an ErrorHandler type . When this function is called, it effectively short-circuits the middleware chain.
-
validatorCfg(Object)
- onTopicValidatorNotFound(Function, optional) A function that accepts an ErrorHandler type. This is called when a topic message is received for a topic that is not configured to be validated. When this is called, it effectively short-circuits the middleware chain.
Returns a function with the signature:
-
function (valueToValidate, next)
-
valueToValidate(Object, REQUIRED) This object can be an object with any properties, but it must contain:
- topic(String, REQUIRED) The topic to validate
- message(Object | String, REQUIRED) The message to validate
- next The function injected by circe-middleware
-
valueToValidate(Object, REQUIRED) This object can be an object with any properties, but it must contain:
Next call When a validation passes, it passes the full valueToValidate object to the next middleware.
Caveats
Both the onTopicValidatorNotFound and the onValid configurations are optional but BOTH have a default handler that THROWS ERRORS