explicit

System to explicitly specify the way a method works.

Usage no npm install needed!

<script type="module">
  import explicit from 'https://cdn.skypack.dev/explicit';
</script>

README

build status Code Climate js-standard-style

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); // 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