Is the ProblemDocument class really neessary?
tpluscode opened this issue · 3 comments
tpluscode commented
Working some more with this and related libraries I'm repeatedly thinking whether the ProblemDocument
really needs to be a class?
Wouldn't it be enough to simply define a contract for a problem document and have mapper return plain objects?
interface ProblemDocument extends Record<string, unknown> {
detail?: string;
instance?: string;
status: number;
title: string;
type?: string;
}
class Mapper {
mapError(error): ProblemDocument {
return {
status: 500,
title: 'Something happened'
}
}
}
This would simplify how extensions are implemented and make it easier to work with derived or decorated mappers
tpluscode commented
And as alternative to the Record<>
type, we could keep a closed interface and have consumers extend with module augmentation
declare module 'http-problem-details' {
interface ProblemDocument {
extendingField?: string[]
}
}
AlexZeitler commented
Please send a PR.
tpluscode commented
Definitely, will do.