Explicit.js allows explicitl annotation, documentation and augmentation of JavaScript methods.
npm i explicit joi -S
var explicit = require("explicit"),
joi = require("joi");
var object = explicit({
foo: {
$args: [
joi.string().meta("bar")
],
$: function (bar) {
console.info(bar);
}
}
});
object.foo(1); // 1
object.foo.valid(1); // will fail because the first argument is not allowed to be a string
object.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); // 1
foo.valid(1); // will fail because the first argument has to be a string
foo.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