joiful
Version:
TypeScript Declarative Validation. Decorate your class properties to validate them using Joi.
43 lines • 2.78 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.createAnyPropertyDecorator = exports.getAnySchemaModifierProviders = void 0;
const common_1 = require("./common");
function getAnySchemaModifierProviders(getJoi) {
const result = {
allow: (value, ...values) => ({ schema }) => schema.allow(...(value instanceof Array ? [...value, ...values] : [value, ...values])),
valid: (value, ...values) => ({ schema }) => schema.valid(...(value instanceof Array ? [...value, ...values] : [value, ...values])),
only: () => ({ schema }) => schema.only(),
equal: (value, ...values) => ({ schema }) => schema.equal(...(value instanceof Array ? [...value, ...values] : [value, ...values])),
required: () => ({ schema }) => schema.required(),
optional: () => ({ schema }) => schema.optional(),
invalid: (value, ...values) => ({ schema }) => schema.invalid(value, ...values),
disallow: (value, ...values) => ({ schema }) => schema.disallow(value, ...values),
not: (value, ...values) => ({ schema }) => schema.not(value, ...values),
forbidden: () => ({ schema }) => schema.forbidden(),
strip: () => ({ schema }) => schema.strip(),
description: (description) => ({ schema }) => schema.description(description),
note: (notes) => ({ schema }) => schema.note(notes),
tag: (tag, ...tags) => ({ schema }) => schema.tag(...(tag instanceof Array ? [...tag, ...tags] : [tag, ...tags])),
meta: (meta) => ({ schema }) => schema.meta(meta),
example: (value) => ({ schema }) => schema.example(value),
unit: (name) => ({ schema }) => schema.unit(name),
options: (options) => ({ schema }) => schema.options(options),
strict: (isStrict = true) => ({ schema }) => schema.strict(isStrict),
default: (value) => ({ schema }) => schema.default(value),
label: (label) => ({ schema }) => schema.label(label),
raw: (isRaw = true) => ({ schema }) => schema.raw(isRaw),
empty: (schema) => ({ schema: existingSchema }) => existingSchema.empty(schema),
error: (err) => ({ schema }) => {
if (!schema.error) {
throw new common_1.NotImplemented('Joi.error');
}
return schema.error(err);
},
custom: (schemaBuilder) => ({ schema }) => schemaBuilder({ schema, joi: getJoi() }),
};
return result;
}
exports.getAnySchemaModifierProviders = getAnySchemaModifierProviders;
const createAnyPropertyDecorator = (joifulOptions) => (common_1.createPropertyDecorator()(({ joi }) => joi.any(), getAnySchemaModifierProviders, joifulOptions));
exports.createAnyPropertyDecorator = createAnyPropertyDecorator;
//# sourceMappingURL=any.js.map
;