Years ago when HTML5 with new input types came out I created my own small vanilla validation library with simple HTML API and not that ugly jQuerish long JS configuration. I also figured out that there wasn't and still today there are almost no vanilla JS libraries around and as a result I started adding new functionality to my 150 lines long library and as a result - BunnyJS has born.
Years later, still I didn't found any good plain JS validation framework with good architecture easy to maintain and extend, however, JS changed a lot, we now have ES6 and I also got more experience as a software architect and not so long time ago I've rewriten that library to be even better and modern and there is a good example on it now available - Vanilla JavaScript Form Validation example
If you will have any questions, problems, proposals or anything else, please don't hesitate to contact me directly or create an issue on GitHub. I'm answering and publishing next version on npm very fast.
My recommended way to use any BunnyJS Component (not utils) is to extend it for each of your project with Object.create() with the main idea - do not change the code you do not own, in other words - do not modify native prototypes and do not modify any 3rd party code in global scope:
import { Validation as BunnyValidation } from 'bunnyjs/src/Validation';
const Validation = Object.create(BunnyValidation);
// extend, do whatever you want, export it and in whole project now use this version
// and not framework's. This will allows you to easily configure
// and control all the validation logic in your project
// It also won't break Bunny Validation original itself
// which might be used as a dependency on any other library
export { Validation };