Files
medusa-store/packages/medusa/src/utils/validators/iso8601-duration.ts
Oliver Windall Juhl 373532ecbc feat: Typescript for API layer (#817)
Co-authored-by: Philip Korsholm <88927411+pKorsholm@users.noreply.github.com>
Co-authored-by: Zakaria El Asri <33696020+zakariaelas@users.noreply.github.com>
Co-authored-by: Kasper Fabricius Kristensen <45367945+kasperkristensen@users.noreply.github.com>
Co-authored-by: Philip Korsholm <philip.korsholm@hotmail.com>
Co-authored-by: Sebastian Rindom <seb@medusa-commerce.com>
2021-11-18 15:19:17 +01:00

27 lines
808 B
TypeScript

import {
registerDecorator,
ValidationArguments,
ValidationOptions,
} from "class-validator"
export function IsISO8601Duration(validationOptions?: ValidationOptions) {
return function (object: any, propertyName: string): void {
registerDecorator({
name: "IsGreaterThan",
target: object.constructor,
propertyName: propertyName,
options: validationOptions,
validator: {
validate(value: any, args: ValidationArguments) {
const isoDurationRegex =
/^P(?!$)(\d+Y)?(\d+M)?(\d+W)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+S)?)?$/
return isoDurationRegex.test(value)
},
defaultMessage(args?: ValidationArguments): string {
return `"${propertyName}" must be a valid ISO 8601 duration`
},
},
})
}
}