Explicit.js
Explicit.js allows explicitl annotation, documentation and augmentation of JavaScript methods.
npm i explicit joi -S
Usage
var explicit = require("explicit"), joi = require("joi"); var object = explicit({ foo: { $args: [ joi.string().meta("bar") ], $: function (bar) { console.info(bar); } }}); object.foo(1); // 1object.foo.valid(1); // will fail because the first argument is not allowed to be a stringobject.foo.validObject({ bar: "Hello World"}); // "Hello World"
For single method definition add the $one
parameter.
var foo = explicit({ $one: true, $args: [ joi.string().meta("bar") ], $: function (bar) { console.info(bar); }}); foo(1); // 1foo.valid(1); // will fail because the first argument has to be a stringfoo.validObject({ bar: "Hello World"}); // "Hello World"
And in case you want to make the assertion required you add the $assert
parameter.
var foo = explicit({ $one: true, $assert: true, $args: [ joi.string().meta("bar") ], $: function (bar) { console.info(bar); }});foo(1); // will fail because the first argument has to be a string