2.1.0 • Published 7 years ago

@parkhub/circe-validate-topic v2.1.0

Weekly downloads
1
License
-
Repository
github
Last release
7 years ago

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.

Build Status Code Coverage Dependencies version Apache License PRs Welcome Roadmap Semantic Release Commitizen

Watch on GitHub Star on GitHub Tweet

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.
  • 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

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