UNPKG

@tsed/schema

Version:
30 lines (29 loc) 1.34 kB
import { deepMerge, useDecorators } from "@tsed/core"; import { JsonEntityFn } from "../decorators/common/jsonEntityFn.js"; export function withErrorMsg(errorKey, originalDecorator) { const schema = {}; return ((...decoratorOptions) => { const decorator = useDecorators(originalDecorator(...decoratorOptions)); decorator.Error = (message) => { schema.message = message; return useDecorators(decorator, schema.message && JsonEntityFn((store) => { // since errorMessage is a custom key, it is prefixed with a # to avoid conflict with JSON Schema keywords const errorMessage = store.parentSchema.get("#errorMessage") || {}; if (errorKey === "required") { store.parentSchema.customKey("errorMessage", deepMerge(errorMessage, { [errorKey]: { [store.propertyName]: message } })); } else { store.itemSchema.customKey("errorMessage", deepMerge(errorMessage, { [errorKey]: message })); } })); }; return decorator; }); }