🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

@epilot/validators

Package Overview
Dependencies
Maintainers
5
Versions
25
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@epilot/validators - npm Package Compare versions

Comparing version
0.0.15
to
0.0.16
+2
-0
CHANGELOG.md

@@ -5,2 +5,4 @@ # Changelog

### [0.0.16](https://gitlab.com/e-pilot/product/frontend/base/validators/compare/v0.0.15...v0.0.16) (2021-07-29)
### [0.0.15](https://gitlab.com/e-pilot/product/frontend/base/validators/compare/v0.0.14...v0.0.15) (2021-07-06)

@@ -7,0 +9,0 @@

import IBAN from 'iban';
/**
* Validates that a date is actually valid
* @param data date as string in DD.MM.YYYY
* @returns boolean
*/
export declare function validateDate(data: string): boolean;
/**
* Validate date in german format is in the past

@@ -4,0 +10,0 @@ * @param data date as string DD.MM.YYY

@@ -8,2 +8,4 @@ 'use strict';

var IBAN = _interopDefault(require('iban'));
var dayjs = _interopDefault(require('dayjs'));
var customParseFormat = _interopDefault(require('dayjs/plugin/customParseFormat'));

@@ -53,3 +55,13 @@ var regExpStatments = {

dayjs.extend(customParseFormat);
/**
* Validates that a date is actually valid
* @param data date as string in DD.MM.YYYY
* @returns boolean
*/
function validateDate(data) {
return dayjs(data, 'DD.MM.YYYY', true).isValid();
}
/**
* Validate date in german format is in the past

@@ -168,2 +180,11 @@ * @param data date as string DD.MM.YYY

}, {
keyword: 'validDateDE',
callback: function callback(schema, data) {
return schema ? !validateDate(data) : false;
},
errorMessage: {
en: 'Please enter a valid date.',
de: 'Bitte geben Sie ein gültiges datum ein.'
}
}, {
keyword: 'futureDateDE',

@@ -257,2 +278,3 @@ callback: function callback(schema, data) {

exports.validateBirthDate = validateBirthDate;
exports.validateDate = validateDate;
exports.validateFutureDate = validateFutureDate;

@@ -259,0 +281,0 @@ exports.validateIBAN = validateIBAN;

+1
-1

@@ -1,1 +0,1 @@

{"version":3,"file":"validators.cjs.development.js","sources":["../src/utils/reg_exps.ts","../src/utils/validators.ts","../src/utils/schema_keywords.ts"],"sourcesContent":["type RegExpStatment = {\n [key: string]: {\n name: string\n regex: RegExp\n description: string\n }\n}\n\nconst regExpStatments: RegExpStatment = {\n email: {\n name: 'email',\n regex: /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/,\n description: 'this pattern is used to check if the email is valid'\n },\n\n lettersMinimum_3: {\n name: 'lettersMinimum_3',\n regex: /^[a-zA-Z]{3,}$/,\n description:\n 'this pattern is used to validate that the input length is at least 3 letter'\n },\n\n numbersMinimum_6: {\n name: 'numbersMinimum_6',\n regex: /^[0-9]{6,}$/,\n description:\n 'this pattern is used to validate that the input length is at least 6 numbers'\n },\n\n numbersTelephone_6: {\n name: 'numbersTelephone_6',\n regex: /^[+]*[0-9]{6,}$/,\n description:\n 'this pattern is used to validate that the input length is at least 6 numbers and it could start with + sign'\n },\n\n numbersExact_11: {\n name: 'numbersExact_11',\n regex: /^[0-9]{11,11}$/,\n description:\n 'this pattern is used to validate that the input length exactly 12 numbers'\n },\n\n numbersMaximum_11: {\n name: 'numbersMaximum_11',\n regex: /^[0-9]{1,11}$/,\n description:\n 'this pattern is used to validate that the input length is maximum 11 numbers'\n },\n\n date_de: {\n name: 'date_de',\n regex: /^[0-3][0-9][.][0-1][0-9][.][1|2][0-9]{3}$/,\n description:\n 'this pattern is used to validate that the input is valid german date DD.MM.YYYY'\n },\n\n telephone_de: {\n name: 'telephone_de',\n regex: /^([+][0-9]{1,3}[ .-]?)?([(]{1}[0-9]{1,6}[)])?([0-9 .-/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/,\n description: 'this pattern is used to validate that the input is a german telephone'\n }\n}\n\nexport default regExpStatments\n","import regExpStatments from './reg_exps'\nimport IBAN from 'iban'\n\n/**\n * Validate date in german format is in the past\n * @param data date as string DD.MM.YYY\n * @returns boolean\n */\nexport function validateBirthDate(data: string): boolean {\n const de_date = regExpStatments.date_de.regex\n // check if the data format matches the de format and the date in the past\n\n if (de_date.test(data)) {\n if (parseDateDE(data).getTime() < new Date().getTime()) {\n return true\n }\n }\n\n return false\n}\n\n\n/**\n * Validate date is 14 days in the future\n * @param data date as string DD.MM.YYY\n * @returns boolean\n */\nexport function validateFutureDate(data: string): boolean {\n const de_date = regExpStatments.date_de.regex\n // check if the data format matches the de format\n\n if (de_date.test(data)) {\n if (parseDateDE(data).getTime() > new Date().getTime()+(14*24*60*60*1000)) {\n return true\n }\n }\n\n return false\n}\n\nexport function parseDateDE(dateStr: string): Date {\n const dateArray = dateStr.split('.')\n const date = new Date()\n\n date.setFullYear(+dateArray[2], +dateArray[1] - 1, +dateArray[0])\n\n return date\n}\n\ntype FunctionalValidators = {\n [key: string]: {\n name: string\n callback: (data: string) => boolean\n description: string\n }\n}\n\n/**\n * Validate iban and validate its syntax\n * @param data iban string\n * @returns boolean\n */\nexport function validateIBAN(data: string): boolean {\n return IBAN.isValid(data)\n}\n\nexport const functionalValidators: FunctionalValidators = {\n iban: {\n name: 'iban',\n callback: validateIBAN,\n description:\n 'this validation function will validate the syntax of the provided iban'\n },\n birth_date: {\n name: 'birth_date',\n callback: validateBirthDate,\n description:\n 'this function will validate that the date is in the past'\n },\n future_date_14: {\n name: 'future_date_14',\n callback: validateFutureDate,\n description:\n 'this function will validate that the date is in the future with 14 days at least'\n }\n}\n\nexport const IBAN_Specifications = IBAN.countries","import regExpStatments from './reg_exps'\nimport { ErrorObject } from 'ajv'\nimport { parseDateDE } from './validators'\n\ntype SchemaValidateFunction = {\n (schema: any, data: any):\n | boolean\n | Promise<any>\n errors?: Partial<ErrorObject>[]\n}\n\ntype SchemaKeyword = {\n keyword: string\n callback: (schema: any, data: any) => boolean\n errorMessage: {\n [locale: string]: string\n }\n}\n\nexport const schemaKeywords: SchemaKeyword[] = [\n {\n keyword: 'email',\n callback: (schema: boolean, data: string) =>\n schema ? regExpStatments.email.regex.test(data) : false,\n errorMessage: {\n en: 'Please enter a valid email address.',\n de: 'Bitte geben Sie eine gültige E-Mail-Adresse ein.'\n }\n },\n {\n keyword: 'onlyLetters',\n callback: (schema: boolean, data: string) =>\n schema ? /^[a-zA-Z]+$/.test(data) : false,\n errorMessage: {\n en: 'Only letters allowed.',\n de: 'Nur Buchstaben erlaubt.'\n }\n },\n {\n keyword: 'onlyNumbers',\n callback: (schema: boolean, data: string) =>\n schema ? /^[0-9]+$/.test(data) : false,\n errorMessage: {\n en: 'Only numbers allowed.',\n de: 'Nur Zahlen erlaubt.'\n }\n },\n {\n keyword: 'dateDE',\n callback: (schema: boolean, data: string) =>\n schema\n ? regExpStatments.date_de.regex.test(data)\n : false,\n errorMessage: {\n en: 'Date should have the format DD.MM.YYYY.',\n de: 'Das Datum sollte das Format TT.MM.JJJJ haben.'\n }\n },\n {\n keyword: 'minNumbersTelephone',\n callback: (schema: number, data: string) =>\n schema && typeof schema === 'number'\n ? new RegExp(`^[+]*[0-9]{${schema},}$`).test(data)\n : false,\n errorMessage: {\n en: 'Please enter a valid telephone number.',\n de: 'Bitte geben Sie eine gültige Telefonnummer ein.'\n }\n },\n {\n keyword: 'futureDateDE',\n callback: (schema: number, data: string) =>\n schema && typeof schema === 'number'\n ? parseDateDE(data).getTime() > new Date().getTime()+(schema*24*60*60*1000)\n : false,\n errorMessage: {\n en: 'The date must be at least {schema} days in the future.',\n de: 'Das Datum muss mind. {schema} Tage in der Zukunft liegen.'\n }\n },\n {\n keyword: 'rangeDateDE',\n callback: (schema: number[], data: string) => {\n return schema && Array.isArray(schema) && schema.length === 2\n ? parseDateDE(data).getTime() >= new Date().getTime()+(schema[0]*24*60*60*1000) && parseDateDE(data).getTime() <= new Date().getTime()+(schema[1]*24*60*60*1000)\n : false\n },\n errorMessage: {\n en: 'Date must be between {minDate} and {maxDate}.',\n de: 'Datum muss zwischen {minDate} und {maxDate} liegen.'\n }\n },\n {\n keyword: 'birthdateDE',\n callback: (schema: boolean, data: string) =>\n schema\n ? parseDateDE(data).getTime() < new Date().getTime()\n : false,\n errorMessage: {\n en: 'Please enter a valid date of birth.',\n de: 'Bitte geben Sie ein gültiges Geburtsdatum ein.'\n }\n }\n]\n\nfunction convertDate(date: Date, separator = '.') {\n function pad(s: number) { return (s < 10) ? '0' + s : s; }\n return [pad(date.getDate()), pad(date.getMonth()+1), date.getFullYear()].join(separator)\n}\n\nexport function validateSchemaKeyword(\n schemaKeyword: SchemaKeyword,\n locale?: string\n): SchemaValidateFunction {\n const { keyword, callback, errorMessage } = schemaKeyword\n\n const validate: SchemaValidateFunction = (schema: any, data: any) => {\n switch(keyword) {\n case 'rangeDateDE': {\n const [minDays, maxDays] = schema\n const minDate = new Date()\n minDate.setDate(minDate.getDate() + minDays)\n const maxDate = new Date()\n maxDate.setDate(maxDate.getDate() + maxDays)\n\n validate.errors = [\n {\n keyword,\n message: errorMessage[locale || 'de'].replace('{minDate}', convertDate(minDate)).replace('{maxDate}', convertDate(maxDate)),\n params: { keyword }\n }\n ]\n break\n }\n default:\n validate.errors = [\n {\n keyword,\n message: errorMessage\n ? errorMessage[locale || 'de'].replace('{schema}', schema)\n : locale === 'en'\n ? 'The entered format is invalid.'\n : 'Das eingegebene Format ist ungültig.',\n params: { keyword }\n }\n ]\n break\n }\n\n return callback(schema, data)\n }\n\n return validate\n}\n"],"names":["regExpStatments","email","name","regex","description","lettersMinimum_3","numbersMinimum_6","numbersTelephone_6","numbersExact_11","numbersMaximum_11","date_de","telephone_de","validateBirthDate","data","de_date","test","parseDateDE","getTime","Date","validateFutureDate","dateStr","dateArray","split","date","setFullYear","validateIBAN","IBAN","isValid","functionalValidators","iban","callback","birth_date","future_date_14","IBAN_Specifications","countries","schemaKeywords","keyword","schema","errorMessage","en","de","RegExp","Array","isArray","length","convertDate","separator","pad","s","getDate","getMonth","getFullYear","join","validateSchemaKeyword","schemaKeyword","locale","validate","minDays","maxDays","minDate","setDate","maxDate","errors","message","replace","params"],"mappings":"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"}
{"version":3,"file":"validators.cjs.development.js","sources":["../src/utils/reg_exps.ts","../src/utils/validators.ts","../src/utils/schema_keywords.ts"],"sourcesContent":["type RegExpStatment = {\n [key: string]: {\n name: string\n regex: RegExp\n description: string\n }\n}\n\nconst regExpStatments: RegExpStatment = {\n email: {\n name: 'email',\n regex: /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/,\n description: 'this pattern is used to check if the email is valid'\n },\n\n lettersMinimum_3: {\n name: 'lettersMinimum_3',\n regex: /^[a-zA-Z]{3,}$/,\n description:\n 'this pattern is used to validate that the input length is at least 3 letter'\n },\n\n numbersMinimum_6: {\n name: 'numbersMinimum_6',\n regex: /^[0-9]{6,}$/,\n description:\n 'this pattern is used to validate that the input length is at least 6 numbers'\n },\n\n numbersTelephone_6: {\n name: 'numbersTelephone_6',\n regex: /^[+]*[0-9]{6,}$/,\n description:\n 'this pattern is used to validate that the input length is at least 6 numbers and it could start with + sign'\n },\n\n numbersExact_11: {\n name: 'numbersExact_11',\n regex: /^[0-9]{11,11}$/,\n description:\n 'this pattern is used to validate that the input length exactly 12 numbers'\n },\n\n numbersMaximum_11: {\n name: 'numbersMaximum_11',\n regex: /^[0-9]{1,11}$/,\n description:\n 'this pattern is used to validate that the input length is maximum 11 numbers'\n },\n\n date_de: {\n name: 'date_de',\n regex: /^[0-3][0-9][.][0-1][0-9][.][1|2][0-9]{3}$/,\n description:\n 'this pattern is used to validate that the input is valid german date DD.MM.YYYY'\n },\n\n telephone_de: {\n name: 'telephone_de',\n regex: /^([+][0-9]{1,3}[ .-]?)?([(]{1}[0-9]{1,6}[)])?([0-9 .-/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/,\n description: 'this pattern is used to validate that the input is a german telephone'\n }\n}\n\nexport default regExpStatments\n","import regExpStatments from './reg_exps'\nimport IBAN from 'iban'\nimport dayjs from 'dayjs'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\n\ndayjs.extend(customParseFormat)\n\n/**\n * Validates that a date is actually valid\n * @param data date as string in DD.MM.YYYY\n * @returns boolean\n */\nexport function validateDate(data: string): boolean {\n return dayjs(data, 'DD.MM.YYYY', true).isValid()\n}\n\n/**\n * Validate date in german format is in the past\n * @param data date as string DD.MM.YYY\n * @returns boolean\n */\nexport function validateBirthDate(data: string): boolean {\n const de_date = regExpStatments.date_de.regex\n // check if the data format matches the de format and the date in the past\n\n if (de_date.test(data)) {\n if (parseDateDE(data).getTime() < new Date().getTime()) {\n return true\n }\n }\n\n return false\n}\n\n/**\n * Validate date is 14 days in the future\n * @param data date as string DD.MM.YYY\n * @returns boolean\n */\nexport function validateFutureDate(data: string): boolean {\n const de_date = regExpStatments.date_de.regex\n // check if the data format matches the de format\n\n if (de_date.test(data)) {\n if (parseDateDE(data).getTime() > new Date().getTime()+(14*24*60*60*1000)) {\n return true\n }\n }\n\n return false\n}\n\nexport function parseDateDE(dateStr: string): Date {\n const dateArray = dateStr.split('.')\n const date = new Date()\n\n date.setFullYear(+dateArray[2], +dateArray[1] - 1, +dateArray[0])\n\n return date\n}\n\ntype FunctionalValidators = {\n [key: string]: {\n name: string\n callback: (data: string) => boolean\n description: string\n }\n}\n\n/**\n * Validate iban and validate its syntax\n * @param data iban string\n * @returns boolean\n */\nexport function validateIBAN(data: string): boolean {\n return IBAN.isValid(data)\n}\n\nexport const functionalValidators: FunctionalValidators = {\n iban: {\n name: 'iban',\n callback: validateIBAN,\n description:\n 'this validation function will validate the syntax of the provided iban'\n },\n birth_date: {\n name: 'birth_date',\n callback: validateBirthDate,\n description:\n 'this function will validate that the date is in the past'\n },\n future_date_14: {\n name: 'future_date_14',\n callback: validateFutureDate,\n description:\n 'this function will validate that the date is in the future with 14 days at least'\n }\n}\n\nexport const IBAN_Specifications = IBAN.countries","import regExpStatments from './reg_exps'\nimport { ErrorObject } from 'ajv'\nimport { parseDateDE, validateDate } from './validators'\n\ntype SchemaValidateFunction = {\n (schema: any, data: any):\n | boolean\n | Promise<any>\n errors?: Partial<ErrorObject>[]\n}\n\ntype SchemaKeyword = {\n keyword: string\n callback: (schema: any, data: any) => boolean\n errorMessage: {\n [locale: string]: string\n }\n}\n\nexport const schemaKeywords: SchemaKeyword[] = [\n {\n keyword: 'email',\n callback: (schema: boolean, data: string) =>\n schema ? regExpStatments.email.regex.test(data) : false,\n errorMessage: {\n en: 'Please enter a valid email address.',\n de: 'Bitte geben Sie eine gültige E-Mail-Adresse ein.'\n }\n },\n {\n keyword: 'onlyLetters',\n callback: (schema: boolean, data: string) =>\n schema ? /^[a-zA-Z]+$/.test(data) : false,\n errorMessage: {\n en: 'Only letters allowed.',\n de: 'Nur Buchstaben erlaubt.'\n }\n },\n {\n keyword: 'onlyNumbers',\n callback: (schema: boolean, data: string) =>\n schema ? /^[0-9]+$/.test(data) : false,\n errorMessage: {\n en: 'Only numbers allowed.',\n de: 'Nur Zahlen erlaubt.'\n }\n },\n {\n keyword: 'dateDE',\n callback: (schema: boolean, data: string) =>\n schema\n ? regExpStatments.date_de.regex.test(data)\n : false,\n errorMessage: {\n en: 'Date should have the format DD.MM.YYYY.',\n de: 'Das Datum sollte das Format TT.MM.JJJJ haben.'\n }\n },\n {\n keyword: 'minNumbersTelephone',\n callback: (schema: number, data: string) =>\n schema && typeof schema === 'number'\n ? new RegExp(`^[+]*[0-9]{${schema},}$`).test(data)\n : false,\n errorMessage: {\n en: 'Please enter a valid telephone number.',\n de: 'Bitte geben Sie eine gültige Telefonnummer ein.'\n }\n },\n {\n keyword: 'validDateDE',\n callback: (schema: boolean, data: string ) =>\n schema? !validateDate(data): false,\n errorMessage: {\n en: 'Please enter a valid date.',\n de: 'Bitte geben Sie ein gültiges datum ein.'\n }\n },\n {\n keyword: 'futureDateDE',\n callback: (schema: number, data: string) =>\n schema && typeof schema === 'number'\n ? parseDateDE(data).getTime() > new Date().getTime()+(schema*24*60*60*1000)\n : false,\n errorMessage: {\n en: 'The date must be at least {schema} days in the future.',\n de: 'Das Datum muss mind. {schema} Tage in der Zukunft liegen.'\n }\n },\n {\n keyword: 'rangeDateDE',\n callback: (schema: number[], data: string) => {\n return schema && Array.isArray(schema) && schema.length === 2\n ? parseDateDE(data).getTime() >= new Date().getTime()+(schema[0]*24*60*60*1000) && parseDateDE(data).getTime() <= new Date().getTime()+(schema[1]*24*60*60*1000)\n : false\n },\n errorMessage: {\n en: 'Date must be between {minDate} and {maxDate}.',\n de: 'Datum muss zwischen {minDate} und {maxDate} liegen.'\n }\n },\n {\n keyword: 'birthdateDE',\n callback: (schema: boolean, data: string) =>\n schema\n ? parseDateDE(data).getTime() < new Date().getTime()\n : false,\n errorMessage: {\n en: 'Please enter a valid date of birth.',\n de: 'Bitte geben Sie ein gültiges Geburtsdatum ein.'\n }\n }\n]\n\nfunction convertDate(date: Date, separator = '.') {\n function pad(s: number) { return (s < 10) ? '0' + s : s; }\n return [pad(date.getDate()), pad(date.getMonth()+1), date.getFullYear()].join(separator)\n}\n\nexport function validateSchemaKeyword(\n schemaKeyword: SchemaKeyword,\n locale?: string\n): SchemaValidateFunction {\n const { keyword, callback, errorMessage } = schemaKeyword\n\n const validate: SchemaValidateFunction = (schema: any, data: any) => {\n switch(keyword) {\n case 'rangeDateDE': {\n const [minDays, maxDays] = schema\n const minDate = new Date()\n minDate.setDate(minDate.getDate() + minDays)\n const maxDate = new Date()\n maxDate.setDate(maxDate.getDate() + maxDays)\n\n validate.errors = [\n {\n keyword,\n message: errorMessage[locale || 'de'].replace('{minDate}', convertDate(minDate)).replace('{maxDate}', convertDate(maxDate)),\n params: { keyword }\n }\n ]\n break\n }\n default:\n validate.errors = [\n {\n keyword,\n message: errorMessage\n ? errorMessage[locale || 'de'].replace('{schema}', schema)\n : locale === 'en'\n ? 'The entered format is invalid.'\n : 'Das eingegebene Format ist ungültig.',\n params: { keyword }\n }\n ]\n break\n }\n\n return callback(schema, data)\n }\n\n return validate\n}\n"],"names":["regExpStatments","email","name","regex","description","lettersMinimum_3","numbersMinimum_6","numbersTelephone_6","numbersExact_11","numbersMaximum_11","date_de","telephone_de","dayjs","extend","customParseFormat","validateDate","data","isValid","validateBirthDate","de_date","test","parseDateDE","getTime","Date","validateFutureDate","dateStr","dateArray","split","date","setFullYear","validateIBAN","IBAN","functionalValidators","iban","callback","birth_date","future_date_14","IBAN_Specifications","countries","schemaKeywords","keyword","schema","errorMessage","en","de","RegExp","Array","isArray","length","convertDate","separator","pad","s","getDate","getMonth","getFullYear","join","validateSchemaKeyword","schemaKeyword","locale","validate","minDays","maxDays","minDate","setDate","maxDate","errors","message","replace","params"],"mappings":"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"}

@@ -1,2 +0,2 @@

"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e,t=(e=require("iban"))&&"object"==typeof e&&"default"in e?e.default:e,a={email:{name:"email",regex:/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,description:"this pattern is used to check if the email is valid"},lettersMinimum_3:{name:"lettersMinimum_3",regex:/^[a-zA-Z]{3,}$/,description:"this pattern is used to validate that the input length is at least 3 letter"},numbersMinimum_6:{name:"numbersMinimum_6",regex:/^[0-9]{6,}$/,description:"this pattern is used to validate that the input length is at least 6 numbers"},numbersTelephone_6:{name:"numbersTelephone_6",regex:/^[+]*[0-9]{6,}$/,description:"this pattern is used to validate that the input length is at least 6 numbers and it could start with + sign"},numbersExact_11:{name:"numbersExact_11",regex:/^[0-9]{11,11}$/,description:"this pattern is used to validate that the input length exactly 12 numbers"},numbersMaximum_11:{name:"numbersMaximum_11",regex:/^[0-9]{1,11}$/,description:"this pattern is used to validate that the input length is maximum 11 numbers"},date_de:{name:"date_de",regex:/^[0-3][0-9][.][0-1][0-9][.][1|2][0-9]{3}$/,description:"this pattern is used to validate that the input is valid german date DD.MM.YYYY"},telephone_de:{name:"telephone_de",regex:/^([+][0-9]{1,3}[ .-]?)?([(]{1}[0-9]{1,6}[)])?([0-9 .-/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/,description:"this pattern is used to validate that the input is a german telephone"}};function n(e){return!!(a.date_de.regex.test(e)&&i(e).getTime()<(new Date).getTime())}function r(e){return!!(a.date_de.regex.test(e)&&i(e).getTime()>(new Date).getTime()+12096e5)}function i(e){var t=e.split("."),a=new Date;return a.setFullYear(+t[2],+t[1]-1,+t[0]),a}function s(e){return t.isValid(e)}var l={iban:{name:"iban",callback:s,description:"this validation function will validate the syntax of the provided iban"},birth_date:{name:"birth_date",callback:n,description:"this function will validate that the date is in the past"},future_date_14:{name:"future_date_14",callback:r,description:"this function will validate that the date is in the future with 14 days at least"}},u=[{keyword:"email",callback:function(e,t){return!!e&&a.email.regex.test(t)},errorMessage:{en:"Please enter a valid email address.",de:"Bitte geben Sie eine gültige E-Mail-Adresse ein."}},{keyword:"onlyLetters",callback:function(e,t){return!!e&&/^[a-zA-Z]+$/.test(t)},errorMessage:{en:"Only letters allowed.",de:"Nur Buchstaben erlaubt."}},{keyword:"onlyNumbers",callback:function(e,t){return!!e&&/^[0-9]+$/.test(t)},errorMessage:{en:"Only numbers allowed.",de:"Nur Zahlen erlaubt."}},{keyword:"dateDE",callback:function(e,t){return!!e&&a.date_de.regex.test(t)},errorMessage:{en:"Date should have the format DD.MM.YYYY.",de:"Das Datum sollte das Format TT.MM.JJJJ haben."}},{keyword:"minNumbersTelephone",callback:function(e,t){return!(!e||"number"!=typeof e)&&new RegExp("^[+]*[0-9]{"+e+",}$").test(t)},errorMessage:{en:"Please enter a valid telephone number.",de:"Bitte geben Sie eine gültige Telefonnummer ein."}},{keyword:"futureDateDE",callback:function(e,t){return!(!e||"number"!=typeof e)&&i(t).getTime()>(new Date).getTime()+24*e*60*60*1e3},errorMessage:{en:"The date must be at least {schema} days in the future.",de:"Das Datum muss mind. {schema} Tage in der Zukunft liegen."}},{keyword:"rangeDateDE",callback:function(e,t){return!(!e||!Array.isArray(e)||2!==e.length)&&i(t).getTime()>=(new Date).getTime()+24*e[0]*60*60*1e3&&i(t).getTime()<=(new Date).getTime()+24*e[1]*60*60*1e3},errorMessage:{en:"Date must be between {minDate} and {maxDate}.",de:"Datum muss zwischen {minDate} und {maxDate} liegen."}},{keyword:"birthdateDE",callback:function(e,t){return!!e&&i(t).getTime()<(new Date).getTime()},errorMessage:{en:"Please enter a valid date of birth.",de:"Bitte geben Sie ein gültiges Geburtsdatum ein."}}];function d(e,t){function a(e){return e<10?"0"+e:e}return void 0===t&&(t="."),[a(e.getDate()),a(e.getMonth()+1),e.getFullYear()].join(t)}exports.IBAN_Specifications=t.countries,exports.functionalValidators=l,exports.parseDateDE=i,exports.regExpStatments=a,exports.schemaKeywords=u,exports.validateBirthDate=n,exports.validateFutureDate=r,exports.validateIBAN=s,exports.validateSchemaKeyword=function(e,t){var a=e.keyword,n=e.callback,r=e.errorMessage;return function e(i,s){switch(a){case"rangeDateDE":var l=i[0],u=i[1],o=new Date;o.setDate(o.getDate()+l);var m=new Date;m.setDate(m.getDate()+u),e.errors=[{keyword:a,message:r[t||"de"].replace("{minDate}",d(o)).replace("{maxDate}",d(m)),params:{keyword:a}}];break;default:e.errors=[{keyword:a,message:r?r[t||"de"].replace("{schema}",i):"en"===t?"The entered format is invalid.":"Das eingegebene Format ist ungültig.",params:{keyword:a}}]}return n(i,s)}};
"use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t=e(require("iban")),a=e(require("dayjs")),n=e(require("dayjs/plugin/customParseFormat")),r={email:{name:"email",regex:/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,description:"this pattern is used to check if the email is valid"},lettersMinimum_3:{name:"lettersMinimum_3",regex:/^[a-zA-Z]{3,}$/,description:"this pattern is used to validate that the input length is at least 3 letter"},numbersMinimum_6:{name:"numbersMinimum_6",regex:/^[0-9]{6,}$/,description:"this pattern is used to validate that the input length is at least 6 numbers"},numbersTelephone_6:{name:"numbersTelephone_6",regex:/^[+]*[0-9]{6,}$/,description:"this pattern is used to validate that the input length is at least 6 numbers and it could start with + sign"},numbersExact_11:{name:"numbersExact_11",regex:/^[0-9]{11,11}$/,description:"this pattern is used to validate that the input length exactly 12 numbers"},numbersMaximum_11:{name:"numbersMaximum_11",regex:/^[0-9]{1,11}$/,description:"this pattern is used to validate that the input length is maximum 11 numbers"},date_de:{name:"date_de",regex:/^[0-3][0-9][.][0-1][0-9][.][1|2][0-9]{3}$/,description:"this pattern is used to validate that the input is valid german date DD.MM.YYYY"},telephone_de:{name:"telephone_de",regex:/^([+][0-9]{1,3}[ .-]?)?([(]{1}[0-9]{1,6}[)])?([0-9 .-/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/,description:"this pattern is used to validate that the input is a german telephone"}};function i(e){return a(e,"DD.MM.YYYY",!0).isValid()}function s(e){return!!(r.date_de.regex.test(e)&&u(e).getTime()<(new Date).getTime())}function l(e){return!!(r.date_de.regex.test(e)&&u(e).getTime()>(new Date).getTime()+12096e5)}function u(e){var t=e.split("."),a=new Date;return a.setFullYear(+t[2],+t[1]-1,+t[0]),a}function d(e){return t.isValid(e)}a.extend(n);var o={iban:{name:"iban",callback:d,description:"this validation function will validate the syntax of the provided iban"},birth_date:{name:"birth_date",callback:s,description:"this function will validate that the date is in the past"},future_date_14:{name:"future_date_14",callback:l,description:"this function will validate that the date is in the future with 14 days at least"}},m=[{keyword:"email",callback:function(e,t){return!!e&&r.email.regex.test(t)},errorMessage:{en:"Please enter a valid email address.",de:"Bitte geben Sie eine gültige E-Mail-Adresse ein."}},{keyword:"onlyLetters",callback:function(e,t){return!!e&&/^[a-zA-Z]+$/.test(t)},errorMessage:{en:"Only letters allowed.",de:"Nur Buchstaben erlaubt."}},{keyword:"onlyNumbers",callback:function(e,t){return!!e&&/^[0-9]+$/.test(t)},errorMessage:{en:"Only numbers allowed.",de:"Nur Zahlen erlaubt."}},{keyword:"dateDE",callback:function(e,t){return!!e&&r.date_de.regex.test(t)},errorMessage:{en:"Date should have the format DD.MM.YYYY.",de:"Das Datum sollte das Format TT.MM.JJJJ haben."}},{keyword:"minNumbersTelephone",callback:function(e,t){return!(!e||"number"!=typeof e)&&new RegExp("^[+]*[0-9]{"+e+",}$").test(t)},errorMessage:{en:"Please enter a valid telephone number.",de:"Bitte geben Sie eine gültige Telefonnummer ein."}},{keyword:"validDateDE",callback:function(e,t){return!!e&&!i(t)},errorMessage:{en:"Please enter a valid date.",de:"Bitte geben Sie ein gültiges datum ein."}},{keyword:"futureDateDE",callback:function(e,t){return!(!e||"number"!=typeof e)&&u(t).getTime()>(new Date).getTime()+24*e*60*60*1e3},errorMessage:{en:"The date must be at least {schema} days in the future.",de:"Das Datum muss mind. {schema} Tage in der Zukunft liegen."}},{keyword:"rangeDateDE",callback:function(e,t){return!(!e||!Array.isArray(e)||2!==e.length)&&u(t).getTime()>=(new Date).getTime()+24*e[0]*60*60*1e3&&u(t).getTime()<=(new Date).getTime()+24*e[1]*60*60*1e3},errorMessage:{en:"Date must be between {minDate} and {maxDate}.",de:"Datum muss zwischen {minDate} und {maxDate} liegen."}},{keyword:"birthdateDE",callback:function(e,t){return!!e&&u(t).getTime()<(new Date).getTime()},errorMessage:{en:"Please enter a valid date of birth.",de:"Bitte geben Sie ein gültiges Geburtsdatum ein."}}];function c(e,t){function a(e){return e<10?"0"+e:e}return void 0===t&&(t="."),[a(e.getDate()),a(e.getMonth()+1),e.getFullYear()].join(t)}exports.IBAN_Specifications=t.countries,exports.functionalValidators=o,exports.parseDateDE=u,exports.regExpStatments=r,exports.schemaKeywords=m,exports.validateBirthDate=s,exports.validateDate=i,exports.validateFutureDate=l,exports.validateIBAN=d,exports.validateSchemaKeyword=function(e,t){var a=e.keyword,n=e.callback,r=e.errorMessage;return function e(i,s){switch(a){case"rangeDateDE":var l=i[0],u=i[1],d=new Date;d.setDate(d.getDate()+l);var o=new Date;o.setDate(o.getDate()+u),e.errors=[{keyword:a,message:r[t||"de"].replace("{minDate}",c(d)).replace("{maxDate}",c(o)),params:{keyword:a}}];break;default:e.errors=[{keyword:a,message:r?r[t||"de"].replace("{schema}",i):"en"===t?"The entered format is invalid.":"Das eingegebene Format ist ungültig.",params:{keyword:a}}]}return n(i,s)}};
//# sourceMappingURL=validators.cjs.production.min.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"validators.cjs.production.min.js","sources":["../src/utils/reg_exps.ts","../src/utils/validators.ts","../src/utils/schema_keywords.ts"],"sourcesContent":["type RegExpStatment = {\n [key: string]: {\n name: string\n regex: RegExp\n description: string\n }\n}\n\nconst regExpStatments: RegExpStatment = {\n email: {\n name: 'email',\n regex: /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/,\n description: 'this pattern is used to check if the email is valid'\n },\n\n lettersMinimum_3: {\n name: 'lettersMinimum_3',\n regex: /^[a-zA-Z]{3,}$/,\n description:\n 'this pattern is used to validate that the input length is at least 3 letter'\n },\n\n numbersMinimum_6: {\n name: 'numbersMinimum_6',\n regex: /^[0-9]{6,}$/,\n description:\n 'this pattern is used to validate that the input length is at least 6 numbers'\n },\n\n numbersTelephone_6: {\n name: 'numbersTelephone_6',\n regex: /^[+]*[0-9]{6,}$/,\n description:\n 'this pattern is used to validate that the input length is at least 6 numbers and it could start with + sign'\n },\n\n numbersExact_11: {\n name: 'numbersExact_11',\n regex: /^[0-9]{11,11}$/,\n description:\n 'this pattern is used to validate that the input length exactly 12 numbers'\n },\n\n numbersMaximum_11: {\n name: 'numbersMaximum_11',\n regex: /^[0-9]{1,11}$/,\n description:\n 'this pattern is used to validate that the input length is maximum 11 numbers'\n },\n\n date_de: {\n name: 'date_de',\n regex: /^[0-3][0-9][.][0-1][0-9][.][1|2][0-9]{3}$/,\n description:\n 'this pattern is used to validate that the input is valid german date DD.MM.YYYY'\n },\n\n telephone_de: {\n name: 'telephone_de',\n regex: /^([+][0-9]{1,3}[ .-]?)?([(]{1}[0-9]{1,6}[)])?([0-9 .-/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/,\n description: 'this pattern is used to validate that the input is a german telephone'\n }\n}\n\nexport default regExpStatments\n","import regExpStatments from './reg_exps'\nimport IBAN from 'iban'\n\n/**\n * Validate date in german format is in the past\n * @param data date as string DD.MM.YYY\n * @returns boolean\n */\nexport function validateBirthDate(data: string): boolean {\n const de_date = regExpStatments.date_de.regex\n // check if the data format matches the de format and the date in the past\n\n if (de_date.test(data)) {\n if (parseDateDE(data).getTime() < new Date().getTime()) {\n return true\n }\n }\n\n return false\n}\n\n\n/**\n * Validate date is 14 days in the future\n * @param data date as string DD.MM.YYY\n * @returns boolean\n */\nexport function validateFutureDate(data: string): boolean {\n const de_date = regExpStatments.date_de.regex\n // check if the data format matches the de format\n\n if (de_date.test(data)) {\n if (parseDateDE(data).getTime() > new Date().getTime()+(14*24*60*60*1000)) {\n return true\n }\n }\n\n return false\n}\n\nexport function parseDateDE(dateStr: string): Date {\n const dateArray = dateStr.split('.')\n const date = new Date()\n\n date.setFullYear(+dateArray[2], +dateArray[1] - 1, +dateArray[0])\n\n return date\n}\n\ntype FunctionalValidators = {\n [key: string]: {\n name: string\n callback: (data: string) => boolean\n description: string\n }\n}\n\n/**\n * Validate iban and validate its syntax\n * @param data iban string\n * @returns boolean\n */\nexport function validateIBAN(data: string): boolean {\n return IBAN.isValid(data)\n}\n\nexport const functionalValidators: FunctionalValidators = {\n iban: {\n name: 'iban',\n callback: validateIBAN,\n description:\n 'this validation function will validate the syntax of the provided iban'\n },\n birth_date: {\n name: 'birth_date',\n callback: validateBirthDate,\n description:\n 'this function will validate that the date is in the past'\n },\n future_date_14: {\n name: 'future_date_14',\n callback: validateFutureDate,\n description:\n 'this function will validate that the date is in the future with 14 days at least'\n }\n}\n\nexport const IBAN_Specifications = IBAN.countries","import regExpStatments from './reg_exps'\nimport { ErrorObject } from 'ajv'\nimport { parseDateDE } from './validators'\n\ntype SchemaValidateFunction = {\n (schema: any, data: any):\n | boolean\n | Promise<any>\n errors?: Partial<ErrorObject>[]\n}\n\ntype SchemaKeyword = {\n keyword: string\n callback: (schema: any, data: any) => boolean\n errorMessage: {\n [locale: string]: string\n }\n}\n\nexport const schemaKeywords: SchemaKeyword[] = [\n {\n keyword: 'email',\n callback: (schema: boolean, data: string) =>\n schema ? regExpStatments.email.regex.test(data) : false,\n errorMessage: {\n en: 'Please enter a valid email address.',\n de: 'Bitte geben Sie eine gültige E-Mail-Adresse ein.'\n }\n },\n {\n keyword: 'onlyLetters',\n callback: (schema: boolean, data: string) =>\n schema ? /^[a-zA-Z]+$/.test(data) : false,\n errorMessage: {\n en: 'Only letters allowed.',\n de: 'Nur Buchstaben erlaubt.'\n }\n },\n {\n keyword: 'onlyNumbers',\n callback: (schema: boolean, data: string) =>\n schema ? /^[0-9]+$/.test(data) : false,\n errorMessage: {\n en: 'Only numbers allowed.',\n de: 'Nur Zahlen erlaubt.'\n }\n },\n {\n keyword: 'dateDE',\n callback: (schema: boolean, data: string) =>\n schema\n ? regExpStatments.date_de.regex.test(data)\n : false,\n errorMessage: {\n en: 'Date should have the format DD.MM.YYYY.',\n de: 'Das Datum sollte das Format TT.MM.JJJJ haben.'\n }\n },\n {\n keyword: 'minNumbersTelephone',\n callback: (schema: number, data: string) =>\n schema && typeof schema === 'number'\n ? new RegExp(`^[+]*[0-9]{${schema},}$`).test(data)\n : false,\n errorMessage: {\n en: 'Please enter a valid telephone number.',\n de: 'Bitte geben Sie eine gültige Telefonnummer ein.'\n }\n },\n {\n keyword: 'futureDateDE',\n callback: (schema: number, data: string) =>\n schema && typeof schema === 'number'\n ? parseDateDE(data).getTime() > new Date().getTime()+(schema*24*60*60*1000)\n : false,\n errorMessage: {\n en: 'The date must be at least {schema} days in the future.',\n de: 'Das Datum muss mind. {schema} Tage in der Zukunft liegen.'\n }\n },\n {\n keyword: 'rangeDateDE',\n callback: (schema: number[], data: string) => {\n return schema && Array.isArray(schema) && schema.length === 2\n ? parseDateDE(data).getTime() >= new Date().getTime()+(schema[0]*24*60*60*1000) && parseDateDE(data).getTime() <= new Date().getTime()+(schema[1]*24*60*60*1000)\n : false\n },\n errorMessage: {\n en: 'Date must be between {minDate} and {maxDate}.',\n de: 'Datum muss zwischen {minDate} und {maxDate} liegen.'\n }\n },\n {\n keyword: 'birthdateDE',\n callback: (schema: boolean, data: string) =>\n schema\n ? parseDateDE(data).getTime() < new Date().getTime()\n : false,\n errorMessage: {\n en: 'Please enter a valid date of birth.',\n de: 'Bitte geben Sie ein gültiges Geburtsdatum ein.'\n }\n }\n]\n\nfunction convertDate(date: Date, separator = '.') {\n function pad(s: number) { return (s < 10) ? '0' + s : s; }\n return [pad(date.getDate()), pad(date.getMonth()+1), date.getFullYear()].join(separator)\n}\n\nexport function validateSchemaKeyword(\n schemaKeyword: SchemaKeyword,\n locale?: string\n): SchemaValidateFunction {\n const { keyword, callback, errorMessage } = schemaKeyword\n\n const validate: SchemaValidateFunction = (schema: any, data: any) => {\n switch(keyword) {\n case 'rangeDateDE': {\n const [minDays, maxDays] = schema\n const minDate = new Date()\n minDate.setDate(minDate.getDate() + minDays)\n const maxDate = new Date()\n maxDate.setDate(maxDate.getDate() + maxDays)\n\n validate.errors = [\n {\n keyword,\n message: errorMessage[locale || 'de'].replace('{minDate}', convertDate(minDate)).replace('{maxDate}', convertDate(maxDate)),\n params: { keyword }\n }\n ]\n break\n }\n default:\n validate.errors = [\n {\n keyword,\n message: errorMessage\n ? errorMessage[locale || 'de'].replace('{schema}', schema)\n : locale === 'en'\n ? 'The entered format is invalid.'\n : 'Das eingegebene Format ist ungültig.',\n params: { keyword }\n }\n ]\n break\n }\n\n return callback(schema, data)\n }\n\n return validate\n}\n"],"names":["regExpStatments","email","name","regex","description","lettersMinimum_3","numbersMinimum_6","numbersTelephone_6","numbersExact_11","numbersMaximum_11","date_de","telephone_de","validateBirthDate","data","test","parseDateDE","getTime","Date","validateFutureDate","dateStr","dateArray","split","date","setFullYear","validateIBAN","IBAN","isValid","functionalValidators","iban","callback","birth_date","future_date_14","schemaKeywords","keyword","schema","errorMessage","en","de","RegExp","Array","isArray","length","convertDate","separator","pad","s","getDate","getMonth","getFullYear","join","countries","schemaKeyword","locale","validate","minDays","maxDays","minDate","setDate","maxDate","errors","message","replace","params"],"mappings":"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"}
{"version":3,"file":"validators.cjs.production.min.js","sources":["../src/utils/reg_exps.ts","../src/utils/validators.ts","../src/utils/schema_keywords.ts"],"sourcesContent":["type RegExpStatment = {\n [key: string]: {\n name: string\n regex: RegExp\n description: string\n }\n}\n\nconst regExpStatments: RegExpStatment = {\n email: {\n name: 'email',\n regex: /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/,\n description: 'this pattern is used to check if the email is valid'\n },\n\n lettersMinimum_3: {\n name: 'lettersMinimum_3',\n regex: /^[a-zA-Z]{3,}$/,\n description:\n 'this pattern is used to validate that the input length is at least 3 letter'\n },\n\n numbersMinimum_6: {\n name: 'numbersMinimum_6',\n regex: /^[0-9]{6,}$/,\n description:\n 'this pattern is used to validate that the input length is at least 6 numbers'\n },\n\n numbersTelephone_6: {\n name: 'numbersTelephone_6',\n regex: /^[+]*[0-9]{6,}$/,\n description:\n 'this pattern is used to validate that the input length is at least 6 numbers and it could start with + sign'\n },\n\n numbersExact_11: {\n name: 'numbersExact_11',\n regex: /^[0-9]{11,11}$/,\n description:\n 'this pattern is used to validate that the input length exactly 12 numbers'\n },\n\n numbersMaximum_11: {\n name: 'numbersMaximum_11',\n regex: /^[0-9]{1,11}$/,\n description:\n 'this pattern is used to validate that the input length is maximum 11 numbers'\n },\n\n date_de: {\n name: 'date_de',\n regex: /^[0-3][0-9][.][0-1][0-9][.][1|2][0-9]{3}$/,\n description:\n 'this pattern is used to validate that the input is valid german date DD.MM.YYYY'\n },\n\n telephone_de: {\n name: 'telephone_de',\n regex: /^([+][0-9]{1,3}[ .-]?)?([(]{1}[0-9]{1,6}[)])?([0-9 .-/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/,\n description: 'this pattern is used to validate that the input is a german telephone'\n }\n}\n\nexport default regExpStatments\n","import regExpStatments from './reg_exps'\nimport IBAN from 'iban'\nimport dayjs from 'dayjs'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\n\ndayjs.extend(customParseFormat)\n\n/**\n * Validates that a date is actually valid\n * @param data date as string in DD.MM.YYYY\n * @returns boolean\n */\nexport function validateDate(data: string): boolean {\n return dayjs(data, 'DD.MM.YYYY', true).isValid()\n}\n\n/**\n * Validate date in german format is in the past\n * @param data date as string DD.MM.YYY\n * @returns boolean\n */\nexport function validateBirthDate(data: string): boolean {\n const de_date = regExpStatments.date_de.regex\n // check if the data format matches the de format and the date in the past\n\n if (de_date.test(data)) {\n if (parseDateDE(data).getTime() < new Date().getTime()) {\n return true\n }\n }\n\n return false\n}\n\n/**\n * Validate date is 14 days in the future\n * @param data date as string DD.MM.YYY\n * @returns boolean\n */\nexport function validateFutureDate(data: string): boolean {\n const de_date = regExpStatments.date_de.regex\n // check if the data format matches the de format\n\n if (de_date.test(data)) {\n if (parseDateDE(data).getTime() > new Date().getTime()+(14*24*60*60*1000)) {\n return true\n }\n }\n\n return false\n}\n\nexport function parseDateDE(dateStr: string): Date {\n const dateArray = dateStr.split('.')\n const date = new Date()\n\n date.setFullYear(+dateArray[2], +dateArray[1] - 1, +dateArray[0])\n\n return date\n}\n\ntype FunctionalValidators = {\n [key: string]: {\n name: string\n callback: (data: string) => boolean\n description: string\n }\n}\n\n/**\n * Validate iban and validate its syntax\n * @param data iban string\n * @returns boolean\n */\nexport function validateIBAN(data: string): boolean {\n return IBAN.isValid(data)\n}\n\nexport const functionalValidators: FunctionalValidators = {\n iban: {\n name: 'iban',\n callback: validateIBAN,\n description:\n 'this validation function will validate the syntax of the provided iban'\n },\n birth_date: {\n name: 'birth_date',\n callback: validateBirthDate,\n description:\n 'this function will validate that the date is in the past'\n },\n future_date_14: {\n name: 'future_date_14',\n callback: validateFutureDate,\n description:\n 'this function will validate that the date is in the future with 14 days at least'\n }\n}\n\nexport const IBAN_Specifications = IBAN.countries","import regExpStatments from './reg_exps'\nimport { ErrorObject } from 'ajv'\nimport { parseDateDE, validateDate } from './validators'\n\ntype SchemaValidateFunction = {\n (schema: any, data: any):\n | boolean\n | Promise<any>\n errors?: Partial<ErrorObject>[]\n}\n\ntype SchemaKeyword = {\n keyword: string\n callback: (schema: any, data: any) => boolean\n errorMessage: {\n [locale: string]: string\n }\n}\n\nexport const schemaKeywords: SchemaKeyword[] = [\n {\n keyword: 'email',\n callback: (schema: boolean, data: string) =>\n schema ? regExpStatments.email.regex.test(data) : false,\n errorMessage: {\n en: 'Please enter a valid email address.',\n de: 'Bitte geben Sie eine gültige E-Mail-Adresse ein.'\n }\n },\n {\n keyword: 'onlyLetters',\n callback: (schema: boolean, data: string) =>\n schema ? /^[a-zA-Z]+$/.test(data) : false,\n errorMessage: {\n en: 'Only letters allowed.',\n de: 'Nur Buchstaben erlaubt.'\n }\n },\n {\n keyword: 'onlyNumbers',\n callback: (schema: boolean, data: string) =>\n schema ? /^[0-9]+$/.test(data) : false,\n errorMessage: {\n en: 'Only numbers allowed.',\n de: 'Nur Zahlen erlaubt.'\n }\n },\n {\n keyword: 'dateDE',\n callback: (schema: boolean, data: string) =>\n schema\n ? regExpStatments.date_de.regex.test(data)\n : false,\n errorMessage: {\n en: 'Date should have the format DD.MM.YYYY.',\n de: 'Das Datum sollte das Format TT.MM.JJJJ haben.'\n }\n },\n {\n keyword: 'minNumbersTelephone',\n callback: (schema: number, data: string) =>\n schema && typeof schema === 'number'\n ? new RegExp(`^[+]*[0-9]{${schema},}$`).test(data)\n : false,\n errorMessage: {\n en: 'Please enter a valid telephone number.',\n de: 'Bitte geben Sie eine gültige Telefonnummer ein.'\n }\n },\n {\n keyword: 'validDateDE',\n callback: (schema: boolean, data: string ) =>\n schema? !validateDate(data): false,\n errorMessage: {\n en: 'Please enter a valid date.',\n de: 'Bitte geben Sie ein gültiges datum ein.'\n }\n },\n {\n keyword: 'futureDateDE',\n callback: (schema: number, data: string) =>\n schema && typeof schema === 'number'\n ? parseDateDE(data).getTime() > new Date().getTime()+(schema*24*60*60*1000)\n : false,\n errorMessage: {\n en: 'The date must be at least {schema} days in the future.',\n de: 'Das Datum muss mind. {schema} Tage in der Zukunft liegen.'\n }\n },\n {\n keyword: 'rangeDateDE',\n callback: (schema: number[], data: string) => {\n return schema && Array.isArray(schema) && schema.length === 2\n ? parseDateDE(data).getTime() >= new Date().getTime()+(schema[0]*24*60*60*1000) && parseDateDE(data).getTime() <= new Date().getTime()+(schema[1]*24*60*60*1000)\n : false\n },\n errorMessage: {\n en: 'Date must be between {minDate} and {maxDate}.',\n de: 'Datum muss zwischen {minDate} und {maxDate} liegen.'\n }\n },\n {\n keyword: 'birthdateDE',\n callback: (schema: boolean, data: string) =>\n schema\n ? parseDateDE(data).getTime() < new Date().getTime()\n : false,\n errorMessage: {\n en: 'Please enter a valid date of birth.',\n de: 'Bitte geben Sie ein gültiges Geburtsdatum ein.'\n }\n }\n]\n\nfunction convertDate(date: Date, separator = '.') {\n function pad(s: number) { return (s < 10) ? '0' + s : s; }\n return [pad(date.getDate()), pad(date.getMonth()+1), date.getFullYear()].join(separator)\n}\n\nexport function validateSchemaKeyword(\n schemaKeyword: SchemaKeyword,\n locale?: string\n): SchemaValidateFunction {\n const { keyword, callback, errorMessage } = schemaKeyword\n\n const validate: SchemaValidateFunction = (schema: any, data: any) => {\n switch(keyword) {\n case 'rangeDateDE': {\n const [minDays, maxDays] = schema\n const minDate = new Date()\n minDate.setDate(minDate.getDate() + minDays)\n const maxDate = new Date()\n maxDate.setDate(maxDate.getDate() + maxDays)\n\n validate.errors = [\n {\n keyword,\n message: errorMessage[locale || 'de'].replace('{minDate}', convertDate(minDate)).replace('{maxDate}', convertDate(maxDate)),\n params: { keyword }\n }\n ]\n break\n }\n default:\n validate.errors = [\n {\n keyword,\n message: errorMessage\n ? errorMessage[locale || 'de'].replace('{schema}', schema)\n : locale === 'en'\n ? 'The entered format is invalid.'\n : 'Das eingegebene Format ist ungültig.',\n params: { keyword }\n }\n ]\n break\n }\n\n return callback(schema, data)\n }\n\n return validate\n}\n"],"names":["regExpStatments","email","name","regex","description","lettersMinimum_3","numbersMinimum_6","numbersTelephone_6","numbersExact_11","numbersMaximum_11","date_de","telephone_de","validateDate","data","dayjs","isValid","validateBirthDate","test","parseDateDE","getTime","Date","validateFutureDate","dateStr","dateArray","split","date","setFullYear","validateIBAN","IBAN","extend","customParseFormat","functionalValidators","iban","callback","birth_date","future_date_14","schemaKeywords","keyword","schema","errorMessage","en","de","RegExp","Array","isArray","length","convertDate","separator","pad","s","getDate","getMonth","getFullYear","join","countries","schemaKeyword","locale","validate","minDays","maxDays","minDate","setDate","maxDate","errors","message","replace","params"],"mappings":"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"}
import IBAN from 'iban';
import dayjs from 'dayjs';
import customParseFormat from 'dayjs/plugin/customParseFormat';

@@ -46,3 +48,13 @@ var regExpStatments = {

dayjs.extend(customParseFormat);
/**
* Validates that a date is actually valid
* @param data date as string in DD.MM.YYYY
* @returns boolean
*/
function validateDate(data) {
return dayjs(data, 'DD.MM.YYYY', true).isValid();
}
/**
* Validate date in german format is in the past

@@ -161,2 +173,11 @@ * @param data date as string DD.MM.YYY

}, {
keyword: 'validDateDE',
callback: function callback(schema, data) {
return schema ? !validateDate(data) : false;
},
errorMessage: {
en: 'Please enter a valid date.',
de: 'Bitte geben Sie ein gültiges datum ein.'
}
}, {
keyword: 'futureDateDE',

@@ -244,3 +265,3 @@ callback: function callback(schema, data) {

export { IBAN_Specifications, functionalValidators, parseDateDE, regExpStatments, schemaKeywords, validateBirthDate, validateFutureDate, validateIBAN, validateSchemaKeyword };
export { IBAN_Specifications, functionalValidators, parseDateDE, regExpStatments, schemaKeywords, validateBirthDate, validateDate, validateFutureDate, validateIBAN, validateSchemaKeyword };
//# sourceMappingURL=validators.esm.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"validators.esm.js","sources":["../src/utils/reg_exps.ts","../src/utils/validators.ts","../src/utils/schema_keywords.ts"],"sourcesContent":["type RegExpStatment = {\n [key: string]: {\n name: string\n regex: RegExp\n description: string\n }\n}\n\nconst regExpStatments: RegExpStatment = {\n email: {\n name: 'email',\n regex: /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/,\n description: 'this pattern is used to check if the email is valid'\n },\n\n lettersMinimum_3: {\n name: 'lettersMinimum_3',\n regex: /^[a-zA-Z]{3,}$/,\n description:\n 'this pattern is used to validate that the input length is at least 3 letter'\n },\n\n numbersMinimum_6: {\n name: 'numbersMinimum_6',\n regex: /^[0-9]{6,}$/,\n description:\n 'this pattern is used to validate that the input length is at least 6 numbers'\n },\n\n numbersTelephone_6: {\n name: 'numbersTelephone_6',\n regex: /^[+]*[0-9]{6,}$/,\n description:\n 'this pattern is used to validate that the input length is at least 6 numbers and it could start with + sign'\n },\n\n numbersExact_11: {\n name: 'numbersExact_11',\n regex: /^[0-9]{11,11}$/,\n description:\n 'this pattern is used to validate that the input length exactly 12 numbers'\n },\n\n numbersMaximum_11: {\n name: 'numbersMaximum_11',\n regex: /^[0-9]{1,11}$/,\n description:\n 'this pattern is used to validate that the input length is maximum 11 numbers'\n },\n\n date_de: {\n name: 'date_de',\n regex: /^[0-3][0-9][.][0-1][0-9][.][1|2][0-9]{3}$/,\n description:\n 'this pattern is used to validate that the input is valid german date DD.MM.YYYY'\n },\n\n telephone_de: {\n name: 'telephone_de',\n regex: /^([+][0-9]{1,3}[ .-]?)?([(]{1}[0-9]{1,6}[)])?([0-9 .-/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/,\n description: 'this pattern is used to validate that the input is a german telephone'\n }\n}\n\nexport default regExpStatments\n","import regExpStatments from './reg_exps'\nimport IBAN from 'iban'\n\n/**\n * Validate date in german format is in the past\n * @param data date as string DD.MM.YYY\n * @returns boolean\n */\nexport function validateBirthDate(data: string): boolean {\n const de_date = regExpStatments.date_de.regex\n // check if the data format matches the de format and the date in the past\n\n if (de_date.test(data)) {\n if (parseDateDE(data).getTime() < new Date().getTime()) {\n return true\n }\n }\n\n return false\n}\n\n\n/**\n * Validate date is 14 days in the future\n * @param data date as string DD.MM.YYY\n * @returns boolean\n */\nexport function validateFutureDate(data: string): boolean {\n const de_date = regExpStatments.date_de.regex\n // check if the data format matches the de format\n\n if (de_date.test(data)) {\n if (parseDateDE(data).getTime() > new Date().getTime()+(14*24*60*60*1000)) {\n return true\n }\n }\n\n return false\n}\n\nexport function parseDateDE(dateStr: string): Date {\n const dateArray = dateStr.split('.')\n const date = new Date()\n\n date.setFullYear(+dateArray[2], +dateArray[1] - 1, +dateArray[0])\n\n return date\n}\n\ntype FunctionalValidators = {\n [key: string]: {\n name: string\n callback: (data: string) => boolean\n description: string\n }\n}\n\n/**\n * Validate iban and validate its syntax\n * @param data iban string\n * @returns boolean\n */\nexport function validateIBAN(data: string): boolean {\n return IBAN.isValid(data)\n}\n\nexport const functionalValidators: FunctionalValidators = {\n iban: {\n name: 'iban',\n callback: validateIBAN,\n description:\n 'this validation function will validate the syntax of the provided iban'\n },\n birth_date: {\n name: 'birth_date',\n callback: validateBirthDate,\n description:\n 'this function will validate that the date is in the past'\n },\n future_date_14: {\n name: 'future_date_14',\n callback: validateFutureDate,\n description:\n 'this function will validate that the date is in the future with 14 days at least'\n }\n}\n\nexport const IBAN_Specifications = IBAN.countries","import regExpStatments from './reg_exps'\nimport { ErrorObject } from 'ajv'\nimport { parseDateDE } from './validators'\n\ntype SchemaValidateFunction = {\n (schema: any, data: any):\n | boolean\n | Promise<any>\n errors?: Partial<ErrorObject>[]\n}\n\ntype SchemaKeyword = {\n keyword: string\n callback: (schema: any, data: any) => boolean\n errorMessage: {\n [locale: string]: string\n }\n}\n\nexport const schemaKeywords: SchemaKeyword[] = [\n {\n keyword: 'email',\n callback: (schema: boolean, data: string) =>\n schema ? regExpStatments.email.regex.test(data) : false,\n errorMessage: {\n en: 'Please enter a valid email address.',\n de: 'Bitte geben Sie eine gültige E-Mail-Adresse ein.'\n }\n },\n {\n keyword: 'onlyLetters',\n callback: (schema: boolean, data: string) =>\n schema ? /^[a-zA-Z]+$/.test(data) : false,\n errorMessage: {\n en: 'Only letters allowed.',\n de: 'Nur Buchstaben erlaubt.'\n }\n },\n {\n keyword: 'onlyNumbers',\n callback: (schema: boolean, data: string) =>\n schema ? /^[0-9]+$/.test(data) : false,\n errorMessage: {\n en: 'Only numbers allowed.',\n de: 'Nur Zahlen erlaubt.'\n }\n },\n {\n keyword: 'dateDE',\n callback: (schema: boolean, data: string) =>\n schema\n ? regExpStatments.date_de.regex.test(data)\n : false,\n errorMessage: {\n en: 'Date should have the format DD.MM.YYYY.',\n de: 'Das Datum sollte das Format TT.MM.JJJJ haben.'\n }\n },\n {\n keyword: 'minNumbersTelephone',\n callback: (schema: number, data: string) =>\n schema && typeof schema === 'number'\n ? new RegExp(`^[+]*[0-9]{${schema},}$`).test(data)\n : false,\n errorMessage: {\n en: 'Please enter a valid telephone number.',\n de: 'Bitte geben Sie eine gültige Telefonnummer ein.'\n }\n },\n {\n keyword: 'futureDateDE',\n callback: (schema: number, data: string) =>\n schema && typeof schema === 'number'\n ? parseDateDE(data).getTime() > new Date().getTime()+(schema*24*60*60*1000)\n : false,\n errorMessage: {\n en: 'The date must be at least {schema} days in the future.',\n de: 'Das Datum muss mind. {schema} Tage in der Zukunft liegen.'\n }\n },\n {\n keyword: 'rangeDateDE',\n callback: (schema: number[], data: string) => {\n return schema && Array.isArray(schema) && schema.length === 2\n ? parseDateDE(data).getTime() >= new Date().getTime()+(schema[0]*24*60*60*1000) && parseDateDE(data).getTime() <= new Date().getTime()+(schema[1]*24*60*60*1000)\n : false\n },\n errorMessage: {\n en: 'Date must be between {minDate} and {maxDate}.',\n de: 'Datum muss zwischen {minDate} und {maxDate} liegen.'\n }\n },\n {\n keyword: 'birthdateDE',\n callback: (schema: boolean, data: string) =>\n schema\n ? parseDateDE(data).getTime() < new Date().getTime()\n : false,\n errorMessage: {\n en: 'Please enter a valid date of birth.',\n de: 'Bitte geben Sie ein gültiges Geburtsdatum ein.'\n }\n }\n]\n\nfunction convertDate(date: Date, separator = '.') {\n function pad(s: number) { return (s < 10) ? '0' + s : s; }\n return [pad(date.getDate()), pad(date.getMonth()+1), date.getFullYear()].join(separator)\n}\n\nexport function validateSchemaKeyword(\n schemaKeyword: SchemaKeyword,\n locale?: string\n): SchemaValidateFunction {\n const { keyword, callback, errorMessage } = schemaKeyword\n\n const validate: SchemaValidateFunction = (schema: any, data: any) => {\n switch(keyword) {\n case 'rangeDateDE': {\n const [minDays, maxDays] = schema\n const minDate = new Date()\n minDate.setDate(minDate.getDate() + minDays)\n const maxDate = new Date()\n maxDate.setDate(maxDate.getDate() + maxDays)\n\n validate.errors = [\n {\n keyword,\n message: errorMessage[locale || 'de'].replace('{minDate}', convertDate(minDate)).replace('{maxDate}', convertDate(maxDate)),\n params: { keyword }\n }\n ]\n break\n }\n default:\n validate.errors = [\n {\n keyword,\n message: errorMessage\n ? errorMessage[locale || 'de'].replace('{schema}', schema)\n : locale === 'en'\n ? 'The entered format is invalid.'\n : 'Das eingegebene Format ist ungültig.',\n params: { keyword }\n }\n ]\n break\n }\n\n return callback(schema, data)\n }\n\n return validate\n}\n"],"names":["regExpStatments","email","name","regex","description","lettersMinimum_3","numbersMinimum_6","numbersTelephone_6","numbersExact_11","numbersMaximum_11","date_de","telephone_de","validateBirthDate","data","de_date","test","parseDateDE","getTime","Date","validateFutureDate","dateStr","dateArray","split","date","setFullYear","validateIBAN","IBAN","isValid","functionalValidators","iban","callback","birth_date","future_date_14","IBAN_Specifications","countries","schemaKeywords","keyword","schema","errorMessage","en","de","RegExp","Array","isArray","length","convertDate","separator","pad","s","getDate","getMonth","getFullYear","join","validateSchemaKeyword","schemaKeyword","locale","validate","minDays","maxDays","minDate","setDate","maxDate","errors","message","replace","params"],"mappings":"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"}
{"version":3,"file":"validators.esm.js","sources":["../src/utils/reg_exps.ts","../src/utils/validators.ts","../src/utils/schema_keywords.ts"],"sourcesContent":["type RegExpStatment = {\n [key: string]: {\n name: string\n regex: RegExp\n description: string\n }\n}\n\nconst regExpStatments: RegExpStatment = {\n email: {\n name: 'email',\n regex: /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/,\n description: 'this pattern is used to check if the email is valid'\n },\n\n lettersMinimum_3: {\n name: 'lettersMinimum_3',\n regex: /^[a-zA-Z]{3,}$/,\n description:\n 'this pattern is used to validate that the input length is at least 3 letter'\n },\n\n numbersMinimum_6: {\n name: 'numbersMinimum_6',\n regex: /^[0-9]{6,}$/,\n description:\n 'this pattern is used to validate that the input length is at least 6 numbers'\n },\n\n numbersTelephone_6: {\n name: 'numbersTelephone_6',\n regex: /^[+]*[0-9]{6,}$/,\n description:\n 'this pattern is used to validate that the input length is at least 6 numbers and it could start with + sign'\n },\n\n numbersExact_11: {\n name: 'numbersExact_11',\n regex: /^[0-9]{11,11}$/,\n description:\n 'this pattern is used to validate that the input length exactly 12 numbers'\n },\n\n numbersMaximum_11: {\n name: 'numbersMaximum_11',\n regex: /^[0-9]{1,11}$/,\n description:\n 'this pattern is used to validate that the input length is maximum 11 numbers'\n },\n\n date_de: {\n name: 'date_de',\n regex: /^[0-3][0-9][.][0-1][0-9][.][1|2][0-9]{3}$/,\n description:\n 'this pattern is used to validate that the input is valid german date DD.MM.YYYY'\n },\n\n telephone_de: {\n name: 'telephone_de',\n regex: /^([+][0-9]{1,3}[ .-]?)?([(]{1}[0-9]{1,6}[)])?([0-9 .-/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/,\n description: 'this pattern is used to validate that the input is a german telephone'\n }\n}\n\nexport default regExpStatments\n","import regExpStatments from './reg_exps'\nimport IBAN from 'iban'\nimport dayjs from 'dayjs'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\n\ndayjs.extend(customParseFormat)\n\n/**\n * Validates that a date is actually valid\n * @param data date as string in DD.MM.YYYY\n * @returns boolean\n */\nexport function validateDate(data: string): boolean {\n return dayjs(data, 'DD.MM.YYYY', true).isValid()\n}\n\n/**\n * Validate date in german format is in the past\n * @param data date as string DD.MM.YYY\n * @returns boolean\n */\nexport function validateBirthDate(data: string): boolean {\n const de_date = regExpStatments.date_de.regex\n // check if the data format matches the de format and the date in the past\n\n if (de_date.test(data)) {\n if (parseDateDE(data).getTime() < new Date().getTime()) {\n return true\n }\n }\n\n return false\n}\n\n/**\n * Validate date is 14 days in the future\n * @param data date as string DD.MM.YYY\n * @returns boolean\n */\nexport function validateFutureDate(data: string): boolean {\n const de_date = regExpStatments.date_de.regex\n // check if the data format matches the de format\n\n if (de_date.test(data)) {\n if (parseDateDE(data).getTime() > new Date().getTime()+(14*24*60*60*1000)) {\n return true\n }\n }\n\n return false\n}\n\nexport function parseDateDE(dateStr: string): Date {\n const dateArray = dateStr.split('.')\n const date = new Date()\n\n date.setFullYear(+dateArray[2], +dateArray[1] - 1, +dateArray[0])\n\n return date\n}\n\ntype FunctionalValidators = {\n [key: string]: {\n name: string\n callback: (data: string) => boolean\n description: string\n }\n}\n\n/**\n * Validate iban and validate its syntax\n * @param data iban string\n * @returns boolean\n */\nexport function validateIBAN(data: string): boolean {\n return IBAN.isValid(data)\n}\n\nexport const functionalValidators: FunctionalValidators = {\n iban: {\n name: 'iban',\n callback: validateIBAN,\n description:\n 'this validation function will validate the syntax of the provided iban'\n },\n birth_date: {\n name: 'birth_date',\n callback: validateBirthDate,\n description:\n 'this function will validate that the date is in the past'\n },\n future_date_14: {\n name: 'future_date_14',\n callback: validateFutureDate,\n description:\n 'this function will validate that the date is in the future with 14 days at least'\n }\n}\n\nexport const IBAN_Specifications = IBAN.countries","import regExpStatments from './reg_exps'\nimport { ErrorObject } from 'ajv'\nimport { parseDateDE, validateDate } from './validators'\n\ntype SchemaValidateFunction = {\n (schema: any, data: any):\n | boolean\n | Promise<any>\n errors?: Partial<ErrorObject>[]\n}\n\ntype SchemaKeyword = {\n keyword: string\n callback: (schema: any, data: any) => boolean\n errorMessage: {\n [locale: string]: string\n }\n}\n\nexport const schemaKeywords: SchemaKeyword[] = [\n {\n keyword: 'email',\n callback: (schema: boolean, data: string) =>\n schema ? regExpStatments.email.regex.test(data) : false,\n errorMessage: {\n en: 'Please enter a valid email address.',\n de: 'Bitte geben Sie eine gültige E-Mail-Adresse ein.'\n }\n },\n {\n keyword: 'onlyLetters',\n callback: (schema: boolean, data: string) =>\n schema ? /^[a-zA-Z]+$/.test(data) : false,\n errorMessage: {\n en: 'Only letters allowed.',\n de: 'Nur Buchstaben erlaubt.'\n }\n },\n {\n keyword: 'onlyNumbers',\n callback: (schema: boolean, data: string) =>\n schema ? /^[0-9]+$/.test(data) : false,\n errorMessage: {\n en: 'Only numbers allowed.',\n de: 'Nur Zahlen erlaubt.'\n }\n },\n {\n keyword: 'dateDE',\n callback: (schema: boolean, data: string) =>\n schema\n ? regExpStatments.date_de.regex.test(data)\n : false,\n errorMessage: {\n en: 'Date should have the format DD.MM.YYYY.',\n de: 'Das Datum sollte das Format TT.MM.JJJJ haben.'\n }\n },\n {\n keyword: 'minNumbersTelephone',\n callback: (schema: number, data: string) =>\n schema && typeof schema === 'number'\n ? new RegExp(`^[+]*[0-9]{${schema},}$`).test(data)\n : false,\n errorMessage: {\n en: 'Please enter a valid telephone number.',\n de: 'Bitte geben Sie eine gültige Telefonnummer ein.'\n }\n },\n {\n keyword: 'validDateDE',\n callback: (schema: boolean, data: string ) =>\n schema? !validateDate(data): false,\n errorMessage: {\n en: 'Please enter a valid date.',\n de: 'Bitte geben Sie ein gültiges datum ein.'\n }\n },\n {\n keyword: 'futureDateDE',\n callback: (schema: number, data: string) =>\n schema && typeof schema === 'number'\n ? parseDateDE(data).getTime() > new Date().getTime()+(schema*24*60*60*1000)\n : false,\n errorMessage: {\n en: 'The date must be at least {schema} days in the future.',\n de: 'Das Datum muss mind. {schema} Tage in der Zukunft liegen.'\n }\n },\n {\n keyword: 'rangeDateDE',\n callback: (schema: number[], data: string) => {\n return schema && Array.isArray(schema) && schema.length === 2\n ? parseDateDE(data).getTime() >= new Date().getTime()+(schema[0]*24*60*60*1000) && parseDateDE(data).getTime() <= new Date().getTime()+(schema[1]*24*60*60*1000)\n : false\n },\n errorMessage: {\n en: 'Date must be between {minDate} and {maxDate}.',\n de: 'Datum muss zwischen {minDate} und {maxDate} liegen.'\n }\n },\n {\n keyword: 'birthdateDE',\n callback: (schema: boolean, data: string) =>\n schema\n ? parseDateDE(data).getTime() < new Date().getTime()\n : false,\n errorMessage: {\n en: 'Please enter a valid date of birth.',\n de: 'Bitte geben Sie ein gültiges Geburtsdatum ein.'\n }\n }\n]\n\nfunction convertDate(date: Date, separator = '.') {\n function pad(s: number) { return (s < 10) ? '0' + s : s; }\n return [pad(date.getDate()), pad(date.getMonth()+1), date.getFullYear()].join(separator)\n}\n\nexport function validateSchemaKeyword(\n schemaKeyword: SchemaKeyword,\n locale?: string\n): SchemaValidateFunction {\n const { keyword, callback, errorMessage } = schemaKeyword\n\n const validate: SchemaValidateFunction = (schema: any, data: any) => {\n switch(keyword) {\n case 'rangeDateDE': {\n const [minDays, maxDays] = schema\n const minDate = new Date()\n minDate.setDate(minDate.getDate() + minDays)\n const maxDate = new Date()\n maxDate.setDate(maxDate.getDate() + maxDays)\n\n validate.errors = [\n {\n keyword,\n message: errorMessage[locale || 'de'].replace('{minDate}', convertDate(minDate)).replace('{maxDate}', convertDate(maxDate)),\n params: { keyword }\n }\n ]\n break\n }\n default:\n validate.errors = [\n {\n keyword,\n message: errorMessage\n ? errorMessage[locale || 'de'].replace('{schema}', schema)\n : locale === 'en'\n ? 'The entered format is invalid.'\n : 'Das eingegebene Format ist ungültig.',\n params: { keyword }\n }\n ]\n break\n }\n\n return callback(schema, data)\n }\n\n return validate\n}\n"],"names":["regExpStatments","email","name","regex","description","lettersMinimum_3","numbersMinimum_6","numbersTelephone_6","numbersExact_11","numbersMaximum_11","date_de","telephone_de","dayjs","extend","customParseFormat","validateDate","data","isValid","validateBirthDate","de_date","test","parseDateDE","getTime","Date","validateFutureDate","dateStr","dateArray","split","date","setFullYear","validateIBAN","IBAN","functionalValidators","iban","callback","birth_date","future_date_14","IBAN_Specifications","countries","schemaKeywords","keyword","schema","errorMessage","en","de","RegExp","Array","isArray","length","convertDate","separator","pad","s","getDate","getMonth","getFullYear","join","validateSchemaKeyword","schemaKeyword","locale","validate","minDays","maxDays","minDate","setDate","maxDate","errors","message","replace","params"],"mappings":";;;;AAQA,IAAMA,eAAe,GAAmB;AACtCC,EAAAA,KAAK,EAAE;AACLC,IAAAA,IAAI,EAAE,OADD;AAELC,IAAAA,KAAK,EAAE,uJAFF;AAGLC,IAAAA,WAAW,EAAE;AAHR,GAD+B;AAOtCC,EAAAA,gBAAgB,EAAE;AAChBH,IAAAA,IAAI,EAAE,kBADU;AAEhBC,IAAAA,KAAK,EAAE,gBAFS;AAGhBC,IAAAA,WAAW,EACT;AAJc,GAPoB;AActCE,EAAAA,gBAAgB,EAAE;AAChBJ,IAAAA,IAAI,EAAE,kBADU;AAEhBC,IAAAA,KAAK,EAAE,aAFS;AAGhBC,IAAAA,WAAW,EACT;AAJc,GAdoB;AAqBtCG,EAAAA,kBAAkB,EAAE;AAClBL,IAAAA,IAAI,EAAE,oBADY;AAElBC,IAAAA,KAAK,EAAE,iBAFW;AAGlBC,IAAAA,WAAW,EACT;AAJgB,GArBkB;AA4BtCI,EAAAA,eAAe,EAAE;AACfN,IAAAA,IAAI,EAAE,iBADS;AAEfC,IAAAA,KAAK,EAAE,gBAFQ;AAGfC,IAAAA,WAAW,EACT;AAJa,GA5BqB;AAmCtCK,EAAAA,iBAAiB,EAAE;AACjBP,IAAAA,IAAI,EAAE,mBADW;AAEjBC,IAAAA,KAAK,EAAE,eAFU;AAGjBC,IAAAA,WAAW,EACT;AAJe,GAnCmB;AA0CtCM,EAAAA,OAAO,EAAE;AACPR,IAAAA,IAAI,EAAE,SADC;AAEPC,IAAAA,KAAK,EAAE,2CAFA;AAGPC,IAAAA,WAAW,EACT;AAJK,GA1C6B;AAiDtCO,EAAAA,YAAY,EAAE;AACZT,IAAAA,IAAI,EAAE,cADM;AAEZC,IAAAA,KAAK,EAAE,mGAFK;AAGZC,IAAAA,WAAW,EAAE;AAHD;AAjDwB,CAAxC;;ACHAQ,KAAK,CAACC,MAAN,CAAaC,iBAAb;AAEA;;;;;;AAKA,SAAgBC,aAAaC;AAC3B,SAAOJ,KAAK,CAACI,IAAD,EAAO,YAAP,EAAqB,IAArB,CAAL,CAAgCC,OAAhC,EAAP;AACD;AAED;;;;;;AAKA,SAAgBC,kBAAkBF;AAChC,MAAMG,OAAO,GAAGnB,eAAe,CAACU,OAAhB,CAAwBP,KAAxC;;AAGA,MAAIgB,OAAO,CAACC,IAAR,CAAaJ,IAAb,CAAJ,EAAwB;AACtB,QAAIK,WAAW,CAACL,IAAD,CAAX,CAAkBM,OAAlB,KAA8B,IAAIC,IAAJ,GAAWD,OAAX,EAAlC,EAAwD;AACtD,aAAO,IAAP;AACD;AACF;;AAED,SAAO,KAAP;AACD;AAED;;;;;;AAKA,SAAgBE,mBAAmBR;AACjC,MAAMG,OAAO,GAAGnB,eAAe,CAACU,OAAhB,CAAwBP,KAAxC;;AAGA,MAAIgB,OAAO,CAACC,IAAR,CAAaJ,IAAb,CAAJ,EAAwB;AACtB,QAAIK,WAAW,CAACL,IAAD,CAAX,CAAkBM,OAAlB,KAA8B,IAAIC,IAAJ,GAAWD,OAAX,KAAsB,KAAG,EAAH,GAAM,EAAN,GAAS,EAAT,GAAY,IAApE,EAA2E;AACzE,aAAO,IAAP;AACD;AACF;;AAED,SAAO,KAAP;AACD;AAED,SAAgBD,YAAYI;AAC1B,MAAMC,SAAS,GAAGD,OAAO,CAACE,KAAR,CAAc,GAAd,CAAlB;AACA,MAAMC,IAAI,GAAG,IAAIL,IAAJ,EAAb;AAEAK,EAAAA,IAAI,CAACC,WAAL,CAAiB,CAACH,SAAS,CAAC,CAAD,CAA3B,EAAgC,CAACA,SAAS,CAAC,CAAD,CAAV,GAAgB,CAAhD,EAAmD,CAACA,SAAS,CAAC,CAAD,CAA7D;AAEA,SAAOE,IAAP;AACD;AAUD;;;;;;AAKA,SAAgBE,aAAad;AAC3B,SAAOe,IAAI,CAACd,OAAL,CAAaD,IAAb,CAAP;AACD;AAED,IAAagB,oBAAoB,GAAyB;AACxDC,EAAAA,IAAI,EAAE;AACJ/B,IAAAA,IAAI,EAAE,MADF;AAEJgC,IAAAA,QAAQ,EAAEJ,YAFN;AAGJ1B,IAAAA,WAAW,EACT;AAJE,GADkD;AAOxD+B,EAAAA,UAAU,EAAE;AACVjC,IAAAA,IAAI,EAAE,YADI;AAEVgC,IAAAA,QAAQ,EAAEhB,iBAFA;AAGVd,IAAAA,WAAW,EACT;AAJQ,GAP4C;AAaxDgC,EAAAA,cAAc,EAAE;AACdlC,IAAAA,IAAI,EAAE,gBADQ;AAEdgC,IAAAA,QAAQ,EAAEV,kBAFI;AAGdpB,IAAAA,WAAW,EACT;AAJY;AAbwC,CAAnD;AAqBP,IAAaiC,mBAAmB,GAAGN,IAAI,CAACO,SAAjC;;IChFMC,cAAc,GAAoB,CAC7C;AACEC,EAAAA,OAAO,EAAE,OADX;AAEEN,EAAAA,QAAQ,EAAE,kBAACO,MAAD,EAAkBzB,IAAlB;AAAA,WACRyB,MAAM,GAAGzC,eAAe,CAACC,KAAhB,CAAsBE,KAAtB,CAA4BiB,IAA5B,CAAiCJ,IAAjC,CAAH,GAA4C,KAD1C;AAAA,GAFZ;AAIE0B,EAAAA,YAAY,EAAE;AACZC,IAAAA,EAAE,EAAE,qCADQ;AAEZC,IAAAA,EAAE,EAAE;AAFQ;AAJhB,CAD6C,EAU7C;AACEJ,EAAAA,OAAO,EAAE,aADX;AAEEN,EAAAA,QAAQ,EAAE,kBAACO,MAAD,EAAkBzB,IAAlB;AAAA,WACRyB,MAAM,GAAG,cAAcrB,IAAd,CAAmBJ,IAAnB,CAAH,GAA8B,KAD5B;AAAA,GAFZ;AAIE0B,EAAAA,YAAY,EAAE;AACZC,IAAAA,EAAE,EAAE,uBADQ;AAEZC,IAAAA,EAAE,EAAE;AAFQ;AAJhB,CAV6C,EAmB7C;AACEJ,EAAAA,OAAO,EAAE,aADX;AAEEN,EAAAA,QAAQ,EAAE,kBAACO,MAAD,EAAkBzB,IAAlB;AAAA,WACRyB,MAAM,GAAG,WAAWrB,IAAX,CAAgBJ,IAAhB,CAAH,GAA2B,KADzB;AAAA,GAFZ;AAIE0B,EAAAA,YAAY,EAAE;AACZC,IAAAA,EAAE,EAAE,uBADQ;AAEZC,IAAAA,EAAE,EAAE;AAFQ;AAJhB,CAnB6C,EA4B7C;AACEJ,EAAAA,OAAO,EAAE,QADX;AAEEN,EAAAA,QAAQ,EAAE,kBAACO,MAAD,EAAkBzB,IAAlB;AAAA,WACRyB,MAAM,GACFzC,eAAe,CAACU,OAAhB,CAAwBP,KAAxB,CAA8BiB,IAA9B,CAAmCJ,IAAnC,CADE,GAEF,KAHI;AAAA,GAFZ;AAME0B,EAAAA,YAAY,EAAE;AACZC,IAAAA,EAAE,EAAE,yCADQ;AAEZC,IAAAA,EAAE,EAAE;AAFQ;AANhB,CA5B6C,EAuC7C;AACEJ,EAAAA,OAAO,EAAE,qBADX;AAEEN,EAAAA,QAAQ,EAAE,kBAACO,MAAD,EAAiBzB,IAAjB;AAAA,WACVyB,MAAM,IAAI,OAAOA,MAAP,KAAkB,QAA5B,GACM,IAAII,MAAJ,iBAAyBJ,MAAzB,UAAsCrB,IAAtC,CAA2CJ,IAA3C,CADN,GAEM,KAHI;AAAA,GAFZ;AAME0B,EAAAA,YAAY,EAAE;AACZC,IAAAA,EAAE,EAAE,wCADQ;AAEZC,IAAAA,EAAE,EAAE;AAFQ;AANhB,CAvC6C,EAkD7C;AACEJ,EAAAA,OAAO,EAAE,aADX;AAEEN,EAAAA,QAAQ,EAAE,kBAACO,MAAD,EAAkBzB,IAAlB;AAAA,WACRyB,MAAM,GAAE,CAAC1B,YAAY,CAACC,IAAD,CAAf,GAAuB,KADrB;AAAA,GAFZ;AAII0B,EAAAA,YAAY,EAAE;AACZC,IAAAA,EAAE,EAAE,4BADQ;AAEZC,IAAAA,EAAE,EAAE;AAFQ;AAJlB,CAlD6C,EA2D7C;AACEJ,EAAAA,OAAO,EAAE,cADX;AAEEN,EAAAA,QAAQ,EAAE,kBAACO,MAAD,EAAiBzB,IAAjB;AAAA,WACRyB,MAAM,IAAI,OAAOA,MAAP,KAAkB,QAA5B,GACIpB,WAAW,CAACL,IAAD,CAAX,CAAkBM,OAAlB,KAA8B,IAAIC,IAAJ,GAAWD,OAAX,KAAsBmB,MAAM,GAAC,EAAP,GAAU,EAAV,GAAa,EAAb,GAAgB,IADxE,GAEI,KAHI;AAAA,GAFZ;AAMEC,EAAAA,YAAY,EAAE;AACZC,IAAAA,EAAE,EAAE,wDADQ;AAEZC,IAAAA,EAAE,EAAE;AAFQ;AANhB,CA3D6C,EAsE7C;AACEJ,EAAAA,OAAO,EAAE,aADX;AAEEN,EAAAA,QAAQ,EAAE,kBAACO,MAAD,EAAmBzB,IAAnB;AACR,WAAOyB,MAAM,IAAIK,KAAK,CAACC,OAAN,CAAcN,MAAd,CAAV,IAAmCA,MAAM,CAACO,MAAP,KAAkB,CAArD,GACH3B,WAAW,CAACL,IAAD,CAAX,CAAkBM,OAAlB,MAA+B,IAAIC,IAAJ,GAAWD,OAAX,KAAsBmB,MAAM,CAAC,CAAD,CAAN,GAAU,EAAV,GAAa,EAAb,GAAgB,EAAhB,GAAmB,IAAxE,IAAiFpB,WAAW,CAACL,IAAD,CAAX,CAAkBM,OAAlB,MAA+B,IAAIC,IAAJ,GAAWD,OAAX,KAAsBmB,MAAM,CAAC,CAAD,CAAN,GAAU,EAAV,GAAa,EAAb,GAAgB,EAAhB,GAAmB,IADtJ,GAEH,KAFJ;AAGD,GANH;AAOEC,EAAAA,YAAY,EAAE;AACZC,IAAAA,EAAE,EAAE,+CADQ;AAEZC,IAAAA,EAAE,EAAE;AAFQ;AAPhB,CAtE6C,EAkF7C;AACEJ,EAAAA,OAAO,EAAE,aADX;AAEEN,EAAAA,QAAQ,EAAE,kBAACO,MAAD,EAAkBzB,IAAlB;AAAA,WACRyB,MAAM,GACFpB,WAAW,CAACL,IAAD,CAAX,CAAkBM,OAAlB,KAA8B,IAAIC,IAAJ,GAAWD,OAAX,EAD5B,GAEF,KAHI;AAAA,GAFZ;AAMEoB,EAAAA,YAAY,EAAE;AACZC,IAAAA,EAAE,EAAE,qCADQ;AAEZC,IAAAA,EAAE,EAAE;AAFQ;AANhB,CAlF6C,CAAxC;;AA+FP,SAASK,WAAT,CAAqBrB,IAArB,EAAiCsB,SAAjC;MAAiCA;AAAAA,IAAAA,YAAY;;;AAC3C,WAASC,GAAT,CAAaC,CAAb;AAA0B,WAAQA,CAAC,GAAG,EAAL,GAAW,MAAMA,CAAjB,GAAqBA,CAA5B;AAAgC;;AAC1D,SAAO,CAACD,GAAG,CAACvB,IAAI,CAACyB,OAAL,EAAD,CAAJ,EAAsBF,GAAG,CAACvB,IAAI,CAAC0B,QAAL,KAAgB,CAAjB,CAAzB,EAA8C1B,IAAI,CAAC2B,WAAL,EAA9C,EAAkEC,IAAlE,CAAuEN,SAAvE,CAAP;AACD;;AAED,SAAgBO,sBACdC,eACAC;MAEQnB,UAAoCkB,cAApClB;MAASN,WAA2BwB,cAA3BxB;MAAUQ,eAAiBgB,cAAjBhB;;AAE3B,MAAMkB,QAAQ,GAA2B,SAAnCA,QAAmC,CAACnB,MAAD,EAAczB,IAAd;AACvC,YAAOwB,OAAP;AACE,WAAK,aAAL;AAAoB;AAAA,cACXqB,OADW,GACSpB,MADT;AAAA,cACFqB,OADE,GACSrB,MADT;AAElB,cAAMsB,OAAO,GAAG,IAAIxC,IAAJ,EAAhB;AACAwC,UAAAA,OAAO,CAACC,OAAR,CAAgBD,OAAO,CAACV,OAAR,KAAoBQ,OAApC;AACA,cAAMI,OAAO,GAAG,IAAI1C,IAAJ,EAAhB;AACA0C,UAAAA,OAAO,CAACD,OAAR,CAAgBC,OAAO,CAACZ,OAAR,KAAoBS,OAApC;AAEAF,UAAAA,QAAQ,CAACM,MAAT,GAAkB,CAChB;AACE1B,YAAAA,OAAO,EAAPA,OADF;AAEE2B,YAAAA,OAAO,EAAEzB,YAAY,CAACiB,MAAM,IAAI,IAAX,CAAZ,CAA6BS,OAA7B,CAAqC,WAArC,EAAkDnB,WAAW,CAACc,OAAD,CAA7D,EAAwEK,OAAxE,CAAgF,WAAhF,EAA6FnB,WAAW,CAACgB,OAAD,CAAxG,CAFX;AAGEI,YAAAA,MAAM,EAAE;AAAE7B,cAAAA,OAAO,EAAPA;AAAF;AAHV,WADgB,CAAlB;AAOA;AACD;;AACD;AACEoB,QAAAA,QAAQ,CAACM,MAAT,GAAkB,CAChB;AACE1B,UAAAA,OAAO,EAAPA,OADF;AAEE2B,UAAAA,OAAO,EAAEzB,YAAY,GACjBA,YAAY,CAACiB,MAAM,IAAI,IAAX,CAAZ,CAA6BS,OAA7B,CAAqC,UAArC,EAAiD3B,MAAjD,CADiB,GAEjBkB,MAAM,KAAK,IAAX,GACA,gCADA,GAEA,sCANN;AAOEU,UAAAA,MAAM,EAAE;AAAE7B,YAAAA,OAAO,EAAPA;AAAF;AAPV,SADgB,CAAlB;AAWA;AA7BJ;;AAgCA,WAAON,QAAQ,CAACO,MAAD,EAASzB,IAAT,CAAf;AACD,GAlCD;;AAoCA,SAAO4C,QAAP;AACD;;;;"}
{
"name": "@epilot/validators",
"version": "0.0.15",
"version": "0.0.16",
"author": {

@@ -52,4 +52,5 @@ "name": "epilot GmbH",

"dependencies": {
"dayjs": "^1.10.6",
"iban": "^0.0.14"
}
}
import regExpStatments from './reg_exps'
import { ErrorObject } from 'ajv'
import { parseDateDE } from './validators'
import { parseDateDE, validateDate } from './validators'

@@ -71,2 +71,11 @@ type SchemaValidateFunction = {

{
keyword: 'validDateDE',
callback: (schema: boolean, data: string ) =>
schema? !validateDate(data): false,
errorMessage: {
en: 'Please enter a valid date.',
de: 'Bitte geben Sie ein gültiges datum ein.'
}
},
{
keyword: 'futureDateDE',

@@ -73,0 +82,0 @@ callback: (schema: number, data: string) =>

import regExpStatments from './reg_exps'
import IBAN from 'iban'
import dayjs from 'dayjs'
import customParseFormat from 'dayjs/plugin/customParseFormat'
dayjs.extend(customParseFormat)
/**
* Validates that a date is actually valid
* @param data date as string in DD.MM.YYYY
* @returns boolean
*/
export function validateDate(data: string): boolean {
return dayjs(data, 'DD.MM.YYYY', true).isValid()
}
/**
* Validate date in german format is in the past

@@ -22,3 +35,2 @@ * @param data date as string DD.MM.YYY

/**

@@ -25,0 +37,0 @@ * Validate date is 14 days in the future