@parkhub/circe-validate-topic

2.1.0 • Public • Published

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

Dependencies (0)

    Dev Dependencies (33)

    Package Sidebar

    Install

    npm i @parkhub/circe-validate-topic

    Weekly Downloads

    3

    Version

    2.1.0

    License

    none

    Last publish

    Collaborators

    • nathaniel.brown
    • stephemer
    • akunz_ph
    • zoefiri
    • thielt
    • daytonpe
    • realtschoegl
    • loganbfisher
    • accloudcoder
    • novym
    • justin-ben
    • gregwwalters