import { isEmail } from '@terascope/utils' ; import { FieldType } from '@terascope/types' ; import { FieldValidateConfig , ProcessMode , FunctionDefinitionType , FunctionDefinitionCategory , FunctionDefinitionExample } from '../interfaces' ; const examples = [ { args : { } , config : { version : 1 , fields : { testField : { type : FieldType . String } } } , field : 'testField' , input : 'string@gmail.com' , output : 'string@gmail.com' } , { args : { } , config : { version : 1 , fields : { testField : { type : FieldType . String } } } , field : 'testField' , input : 'non.us.email@thing.com.uk' , output : 'non.us.email@thing.com.uk' } , { args : { } , config : { version : 1 , fields : { testField : { type : FieldType . String } } } , field : 'testField' , input : 'Abc@def@example.com' , output : 'Abc@def@example.com' } , { args : { } , config : { version : 1 , fields : { testField : { type : FieldType . String } } } , field : 'testField' , input : 'cal+henderson@iamcalx.com' , output : 'cal+henderson@iamcalx.com' } , { args : { } , config : { version : 1 , fields : { testField : { type : FieldType . String } } } , field : 'testField' , input : 'customer/department=shipping@example.com' , output : 'customer/department=shipping@example.com' } , { args : { } , config : { version : 1 , fields : { testField : { type : FieldType . String } } } , field : 'testField' , input : 'user@blah.com/junk.junk?a=<tag value="junk"' , output : null } , { args : { } , config : { version : 1 , fields : { testField : { type : FieldType . String } } } , field : 'testField' , input : 'Abc@def  @  example.com' , output : null } , { args : { } , config : { version : 1 , fields : { testField : { type : FieldType . String } } } , field : 'testField' , input : 'bad email address' , output : null } , { args : { } , config : { version : 1 , fields : { testField : { type : FieldType . Number } } } , field : 'testField' , input : 12345 , output : null } ] ; export const isEmailConfig = { name : 'isEmail' , type : FunctionDefinitionType . FIELD_VALIDATION , process_mode : ProcessMode . INDIVIDUAL_VALUES , category : FunctionDefinitionCategory . STRING , description : 'Returns the input if it is a valid email formatted string, otherwise returns null.' , examples , create ( ) { return isEmail ; } , accepts : [ FieldType . String ] , } ;