@athenna/validator
Version:
The Athenna validation solution. Built on top of VineJS.
40 lines (39 loc) • 1.29 kB
JavaScript
/**
* @athenna/validator
*
* (c) João Lenon <lenon@athenna.io>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
import 'reflect-metadata';
import { debug } from '#src/debug';
import { Annotation } from '@athenna/ioc';
import { Options, String } from '@athenna/common';
/**
* Create a validator inside the service provider.
*/
export function Validator(options) {
return (target) => {
options = Options.create(options, {
name: String.toCamelCase(target.name),
alias: `App/Validators/${target.name}`,
type: 'transient'
});
options.name = `App/Validators/Names/${options.name}`;
debug('Registering validator metadata for the service container %o', {
...options,
name: target.name,
namedAlias: options.name
});
if (ioc.has(options.name)) {
debug('Skipping registration, named alias %s is already registered.', options.name);
return;
}
if (ioc.has(options.alias)) {
debug('Skipping registration, alias %s is already registered.', options.alias);
return;
}
Annotation.defineMeta(target, options);
};
}