truly-ui
Version:
Web Components for Desktop Applications.
22 lines • 5.09 kB
JavaScript
import { LOCALE_I18N } from '../../i18n/i18n.service';
/*https://www.freeformatter.com/credit-card-number-generator-validator.html#howToValidate
https://www.4devs.com.br/validador_numero_cartao_credito
https://www.tools4noobs.com/online_tools/credit_card_validate/
https://pt.stackoverflow.com/questions/97234/validar-n%C3%BAmero-cart%C3%A3o-de-cr%C3%A9dito*/
export function CreditCardValidator(creditCard) {
return (control) => {
if (!creditCard) {
return { creditcard: LOCALE_I18N.Validators.invalidCreditCard };
}
const regex = new RegExp(creditCard.regex);
if ((creditNumberUnmasked(control.value) !== '') &&
(!regex.test(creditNumberUnmasked(control.value)))) {
return { creditcard: LOCALE_I18N.Validators.invalidCreditCard };
}
return null;
};
}
function creditNumberUnmasked(value) {
return String(value).replace(/(\/|\.|-|_|\(|\)|:|\+)/gi, '');
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlZGl0Y2FyZC52YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnVseS11aS9zcmMvY29tcG9uZW50cy92YWxpZGF0b3JzL2NyZWRpdGNhcmQvY3JlZGl0Y2FyZC52YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc0JBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV0RDs7O29HQUdvRztBQUVwRyxNQUFNLFVBQVcsbUJBQW1CLENBQUUsVUFBVTtJQUM5QyxPQUFPLENBQUUsT0FBd0IsRUFBRyxFQUFFO1FBQ3BDLElBQUssQ0FBQyxVQUFVLEVBQUc7WUFDakIsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLENBQUMsVUFBVSxDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FDakU7UUFDRCxNQUFNLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBRSxVQUFVLENBQUMsS0FBSyxDQUFFLENBQUM7UUFDN0MsSUFBSyxDQUFFLG9CQUFvQixDQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUUsS0FBSyxFQUFFLENBQUM7WUFDbEQsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUUsb0JBQW9CLENBQUUsT0FBTyxDQUFDLEtBQUssQ0FBRSxDQUFFLENBQUMsRUFBRztZQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztTQUNqRTtRQUNILE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsb0JBQW9CLENBQUUsS0FBSztJQUNsQyxPQUFPLE1BQU0sQ0FBRSxLQUFLLENBQUUsQ0FBQyxPQUFPLENBQUUsMEJBQTBCLEVBQUUsRUFBRSxDQUFFLENBQUM7QUFDbkUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gTUlUIExpY2Vuc2VcblxuIENvcHlyaWdodCAoYykgMjAxOSBUZW1haW5mbyBTb2Z0d2FyZVxuXG4gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiBTT0ZUV0FSRS5cbiAqL1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IExPQ0FMRV9JMThOIH0gZnJvbSAnLi4vLi4vaTE4bi9pMThuLnNlcnZpY2UnO1xuXG4vKmh0dHBzOi8vd3d3LmZyZWVmb3JtYXR0ZXIuY29tL2NyZWRpdC1jYXJkLW51bWJlci1nZW5lcmF0b3ItdmFsaWRhdG9yLmh0bWwjaG93VG9WYWxpZGF0ZVxuICBodHRwczovL3d3dy40ZGV2cy5jb20uYnIvdmFsaWRhZG9yX251bWVyb19jYXJ0YW9fY3JlZGl0b1xuICAgIGh0dHBzOi8vd3d3LnRvb2xzNG5vb2JzLmNvbS9vbmxpbmVfdG9vbHMvY3JlZGl0X2NhcmRfdmFsaWRhdGUvXG4gICAgICBodHRwczovL3B0LnN0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy85NzIzNC92YWxpZGFyLW4lQzMlQkFtZXJvLWNhcnQlQzMlQTNvLWRlLWNyJUMzJUE5ZGl0byovXG5cbmV4cG9ydCBmdW5jdGlvbiAgQ3JlZGl0Q2FyZFZhbGlkYXRvciggY3JlZGl0Q2FyZCApOiBWYWxpZGF0b3JGbiB7XG4gIHJldHVybiAoIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCApID0+IHtcbiAgICBpZiAoICFjcmVkaXRDYXJkICkge1xuICAgICAgcmV0dXJuIHsgY3JlZGl0Y2FyZDogTE9DQUxFX0kxOE4uVmFsaWRhdG9ycy5pbnZhbGlkQ3JlZGl0Q2FyZCB9O1xuICAgIH1cbiAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoIGNyZWRpdENhcmQucmVnZXggKTtcbiAgICBpZiAoICggY3JlZGl0TnVtYmVyVW5tYXNrZWQoIGNvbnRyb2wudmFsdWUgKSAhPT0gJycpICYmXG4gICAgICAoIXJlZ2V4LnRlc3QoIGNyZWRpdE51bWJlclVubWFza2VkKCBjb250cm9sLnZhbHVlICkgKSkgKSB7XG4gICAgICAgIHJldHVybiB7IGNyZWRpdGNhcmQ6IExPQ0FMRV9JMThOLlZhbGlkYXRvcnMuaW52YWxpZENyZWRpdENhcmQgfTtcbiAgICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcbn1cblxuZnVuY3Rpb24gY3JlZGl0TnVtYmVyVW5tYXNrZWQoIHZhbHVlICkge1xuICByZXR1cm4gU3RyaW5nKCB2YWx1ZSApLnJlcGxhY2UoIC8oXFwvfFxcLnwtfF98XFwofFxcKXw6fFxcKykvZ2ksICcnICk7XG59XG5cbiJdfQ==