@tsed/schema
Version:
JsonSchema module for Ts.ED Framework
30 lines (29 loc) • 1.34 kB
JavaScript
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;
});
}