add mail type and validation

This commit is contained in:
Julian Krauser 2025-04-25 12:13:26 +02:00
parent 2e3d0a755c
commit ce9f621b8b
11 changed files with 193 additions and 19 deletions

View file

@ -60,6 +60,41 @@ export abstract class MsTypeConverter extends TypeConverter<ms.StringValue> {
}
}
export abstract class EmailTypeConverter extends TypeConverter<string> {
fromString(value: string): string {
return value;
}
toString(value: string): string {
return value;
}
validate(value: string): boolean {
var tester =
/^[-!#$%&'*+\/0-9=?A-Z^_a-z`{|}~](\.?[-!#$%&'*+\/0-9=?A-Z^_a-z`{|}~])*@[a-zA-Z0-9](-*\.?[a-zA-Z0-9])*\.[a-zA-Z](-?[a-zA-Z0-9])+$/;
if (!value) return false;
var emailParts = value.split("@");
if (emailParts.length !== 2) return false;
var account = emailParts[0];
var address = emailParts[1];
if (account.length > 64) return false;
else if (address.length > 255) return false;
var domainParts = address.split(".");
if (
domainParts.some(function (part) {
return part.length > 63;
})
)
return false;
return tester.test(value);
}
}
// Konkrete Implementierungen der Converter
export class StringConverter extends StringTypeConverter {}
export class LongStringConverter extends StringTypeConverter {}
@ -67,3 +102,4 @@ export class UrlConverter extends StringTypeConverter {}
export class NumberConverter extends NumberTypeConverter {}
export class BooleanConverter extends BooleanTypeConverter {}
export class MsConverter extends MsTypeConverter {}
export class EmailConverter extends EmailTypeConverter {}