text: const engineUtil = (function () {
    const providerMap = { 
      "addressStreetAddress": faker.address.streetAddress, 
      "addressSecondaryAddress": faker.address.secondaryAddress,
      "addressCity": faker.address.city,
      "addressState": faker.address.state, 
      "addressStateAbbr": faker.address.stateAbbr, 
      "addressCityPrefix": faker.address.cityPrefix, 
      "addressCitySuffix": faker.address.citySuffix, 
      "addressCounty": faker.address.county, 
      "addressCountry": faker.address.country, 
      "addressCountryCode": faker.address.countryCode,
      "addressLatitude": faker.address.latitude, 
      "addressLongitude": faker.address.longitude, 
      "addressStreetName": faker.address.streetName, 
      "addressStreetSuffix": faker.address.streetSuffix, 
      "addressStreetPrefix": faker.address.streetPrefix, 
      "addressZipCode": faker.address.zipCode,
      "companyBS": faker.company.bs,
      "companyName": faker.company.companyName, 
      "companySuffix": faker.company.companySuffix, 
      "companyDepartment": faker.commerce.department,
      "companyCatchPhrase": faker.company.catchPhrase, 
      "databaseColumn": faker.database.column,
      "databaseType": faker.database.type,
      "databaseCollation": faker.database.collation,
      "databaseEngine": faker.database.engine,
      "commerceProductName": faker.commerce.productName,
      "commercePrice": faker.commerce.price,
      "commerceProductAdjective": faker.commerce.productAdjective,
      "commerceProductMaterial": faker.commerce.productMaterial,
      "commerceProduct": faker.commerce.product,
      "commerceProductName": faker.commerce.productName,
      "financeAccountNumber": faker.finance.account,
      "financeAccountName": faker.finance.accountName,
      "financeMask": faker.finance.mask,
      "financeAccountAmount": faker.finance.amount,
      "financeTransactionType": faker.finance.transactionType,
      "financeCurrencyCode": faker.finance.currencyCode,
      "financeCurrencyName": faker.finance.currencyName,
      "financeCurrencySymbol": faker.finance.currencySymbol,
      "financeBitCoinAddress": faker.finance.bitcoinAddress,
      "financeIBAN": faker.finance.iban,
      "financeBIC": faker.finance.bic,
      "internetEmail": faker.internet.email, 
      "internetExampleEmail": faker.internet.exampleEmail, 
      "internetUserName": faker.internet.userName, 
      "internetProtocol": faker.internet.protocol, 
      "internetURL": faker.internet.url, 
      "internetDomainName": faker.internet.domainName, 
      "internetDomainSuffix": faker.internet.domainSuffix, 
      "internetDomainWord": faker.internet.domainWord, 
      "internetIP": faker.internet.ip, 
      "internetIPV6": faker.internet.ipv6, 
      "internetUserAgent": faker.internet.userAgent, 
      "internetColor": faker.internet.color, 
      "internetMacAddress": faker.internet.mac, 
      "internetPassword": faker.internet.password, 
      "loremWord": faker.lorem.word,
      "loremWords": faker.lorem.words,
      "loremSentence": faker.lorem.sentence,
      "loremSlug": faker.lorem.slug,
      "loremSentences": faker.lorem.sentences,
      "loremParagraph": faker.lorem.paragraph,
      "loremParagraphs": faker.lorem.paragraphs,
      "loremText": faker.lorem.text,
      "loremLines": faker.lorem.lines,
      "imageUrl": faker.image.imageUrl, 
      "imageAvatar": faker.image.avatar, 
      "imageAbstract": faker.image.abstract, 
      "imageAnimals": faker.image.animals, 
      "imageBusiness": faker.image.business, 
      "imageCats": faker.image.cats, 
      "imageCity": faker.image.city, 
      "imageFood": faker.image.food, 
      "imageNightLife": faker.image.nightlife, 
      "imageFashion": faker.image.fashion, 
      "imagePeople": faker.image.people, 
      "imageNature": faker.image.nature, 
      "imageSports": faker.image.sports, 
      "imageTechnics": faker.image.technics, 
      "imageTransport": faker.image.transport, 
      "imageDataUri": faker.image.dataUri, 
      "nameFirstName": faker.name.firstName,
      "nameLastName": faker.name.lastName,
      "nameFullName": faker.name.findName,
      "nameJobTitle": faker.name.jobTitle,
      "namePrefix": faker.name.prefix,
      "nameSuffix": faker.name.suffix,
      "nameTitle": faker.name.title,
      "namePhoneNumber": faker.phone.phoneNumber,
      "nameJobDescriptor": faker.name.jobDescriptor,
      "nameJobArea": faker.name.jobArea,
      "nameJobType": faker.name.jobType,
      "dateMonth": faker.date.month, 
      "dateDayOfWeek": faker.date.weekday, 
      "datePastDateTime": faker.date.past, 
      "dateFutureDateTime": faker.date.future, 
      "systemFileName": faker.system.fileName,
      "systemCommonFileName": faker.system.commonFileName,
      "systemMimeType": faker.system.mimeType,
      "systemCommonFileType": faker.system.commonFileType,
      "systemCommonFileExt": faker.system.commonFileExt,
      "systemFileType": faker.system.fileType,
      "systemFileExt": faker.system.commonFileExt,
      "systemSemver": faker.system.semver,
    }
  
    return {
      outputMessage: (message) => {
        Alteryx.Engine.SendMessage.Info(message);
      },
      shouldGiveLowQualityValue: (probabilityOfLowQualityData) => {
        return false
      },
      getGeneratedValueFromProvider: (provider) => {
        engineUtil.outputMessage('Provider: ' + provider)
        return providerMap[provider]() //TODO Enable passing of params
      }
    }
  }())
  
  