{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TemplateHaskell #-}

module Faker.Provider.Address where

import Config
import Control.Monad.Catch
import Control.Monad.IO.Class
import Data.Map.Strict (Map)
import Data.Monoid ((<>))
import Data.Text (Text)
import Data.Vector (Vector)
import qualified Data.Vector as V
import Data.Yaml
import Faker
import Faker.Internal
import Faker.Provider.TH
import Faker.Provider.Name (nameNameProvider, resolveNameField)

parseAddress :: FromJSON a => FakerSettings -> Value -> Parser a
parseAddress :: FakerSettings -> Value -> Parser a
parseAddress FakerSettings
settings (Object Object
obj) = do
  Object
en <- Object
obj Object -> Text -> Parser Object
forall a. FromJSON a => Object -> Text -> Parser a
.: (FakerSettings -> Text
getLocale FakerSettings
settings)
  Object
faker <- Object
en Object -> Text -> Parser Object
forall a. FromJSON a => Object -> Text -> Parser a
.: Text
"faker"
  a
address <- Object
faker Object -> Text -> Parser a
forall a. FromJSON a => Object -> Text -> Parser a
.: Text
"address"
  a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure a
address
parseAddress FakerSettings
settings Value
val = String -> Parser a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail (String -> Parser a) -> String -> Parser a
forall a b. (a -> b) -> a -> b
$ String
"expected Object, but got " String -> String -> String
forall a. Semigroup a => a -> a -> a
<> (Value -> String
forall a. Show a => a -> String
show Value
val)

parseAddressField ::
     (FromJSON a, Monoid a) => FakerSettings -> Text -> Value -> Parser a
parseAddressField :: FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
txt Value
val = do
  Object
address <- FakerSettings -> Value -> Parser Object
forall a. FromJSON a => FakerSettings -> Value -> Parser a
parseAddress FakerSettings
settings Value
val
  a
field <- Object
address Object -> Text -> Parser (Maybe a)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? Text
txt Parser (Maybe a) -> a -> Parser a
forall a. Parser (Maybe a) -> a -> Parser a
.!= a
forall a. Monoid a => a
mempty
  a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure a
field

parseUnresolvedAddressField ::
     (FromJSON a, Monoid a)
  => FakerSettings
  -> Text
  -> Value
  -> Parser (Unresolved a)
parseUnresolvedAddressField :: FakerSettings -> Text -> Value -> Parser (Unresolved a)
parseUnresolvedAddressField FakerSettings
settings Text
txt Value
val = do
  Object
address <- FakerSettings -> Value -> Parser Object
forall a. FromJSON a => FakerSettings -> Value -> Parser a
parseAddress FakerSettings
settings Value
val
  a
field <- Object
address Object -> Text -> Parser (Maybe a)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? Text
txt Parser (Maybe a) -> a -> Parser a
forall a. Parser (Maybe a) -> a -> Parser a
.!= a
forall a. Monoid a => a
mempty
  Unresolved a -> Parser (Unresolved a)
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Unresolved a -> Parser (Unresolved a))
-> Unresolved a -> Parser (Unresolved a)
forall a b. (a -> b) -> a -> b
$ a -> Unresolved a
forall (f :: * -> *) a. Applicative f => a -> f a
pure a
field

parseCityPrefix :: (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser a
parseCityPrefix :: FakerSettings -> Value -> Parser a
parseCityPrefix FakerSettings
settings = FakerSettings -> Text -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
"city_prefix"

-- for en-nz locale
parsePlaceNames :: (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser a
parsePlaceNames :: FakerSettings -> Value -> Parser a
parsePlaceNames FakerSettings
settings = FakerSettings -> Text -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
"place_names"

placeNamesProvider ::
     (MonadThrow m, MonadIO m) => FakerSettings -> m (Vector Text)
placeNamesProvider :: FakerSettings -> m (Vector Text)
placeNamesProvider FakerSettings
settings = FakerSettings
-> SourceData
-> (FakerSettings -> Value -> Parser (Vector Text))
-> m (Vector Text)
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser (Vector Text)
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser a
parsePlaceNames

-- for es-AR locale
parseFemaleCitySaintPrefix :: (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser a
parseFemaleCitySaintPrefix :: FakerSettings -> Value -> Parser a
parseFemaleCitySaintPrefix FakerSettings
settings = FakerSettings -> Text -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
"female_city_saint_prefix"

femaleCitySaintPrefixProvider :: (MonadThrow m, MonadIO m) => FakerSettings -> m (Vector Text)
femaleCitySaintPrefixProvider :: FakerSettings -> m (Vector Text)
femaleCitySaintPrefixProvider FakerSettings
settings = FakerSettings
-> SourceData
-> (FakerSettings -> Value -> Parser Text)
-> m (Vector Text)
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData
-> (FakerSettings -> Value -> Parser Text)
-> m (Vector Text)
fetchDataSingle FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser Text
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser a
parseFemaleCitySaintPrefix

parseMaleCitySaintPrefix :: (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser a
parseMaleCitySaintPrefix :: FakerSettings -> Value -> Parser a
parseMaleCitySaintPrefix FakerSettings
settings = FakerSettings -> Text -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
"male_city_saint_prefix"

maleCitySaintPrefixProvider :: (MonadThrow m, MonadIO m) => FakerSettings -> m (Vector Text)
maleCitySaintPrefixProvider :: FakerSettings -> m (Vector Text)
maleCitySaintPrefixProvider FakerSettings
settings = FakerSettings
-> SourceData
-> (FakerSettings -> Value -> Parser Text)
-> m (Vector Text)
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData
-> (FakerSettings -> Value -> Parser Text)
-> m (Vector Text)
fetchDataSingle FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser Text
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser a
parseMaleCitySaintPrefix

parseArmyCityPrefix :: (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser a
parseArmyCityPrefix :: FakerSettings -> Value -> Parser a
parseArmyCityPrefix FakerSettings
settings = FakerSettings -> Text -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
"army_city_prefix"

armyCityPrefixProvider :: (MonadThrow m, MonadIO m) => FakerSettings -> m (Vector Text)
armyCityPrefixProvider :: FakerSettings -> m (Vector Text)
armyCityPrefixProvider FakerSettings
settings = FakerSettings
-> SourceData
-> (FakerSettings -> Value -> Parser Text)
-> m (Vector Text)
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData
-> (FakerSettings -> Value -> Parser Text)
-> m (Vector Text)
fetchDataSingle FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser Text
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser a
parseArmyCityPrefix

parseCitySuffix :: (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser a
parseCitySuffix :: FakerSettings -> Value -> Parser a
parseCitySuffix FakerSettings
settings = FakerSettings -> Text -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
"city_suffix"

parseCountry :: (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser a
parseCountry :: FakerSettings -> Value -> Parser a
parseCountry FakerSettings
settings = FakerSettings -> Text -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
"country"

parseVillage :: (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser a
parseVillage :: FakerSettings -> Value -> Parser a
parseVillage FakerSettings
settings = FakerSettings -> Text -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
"village"

parseDefaultCountry ::
     (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser a
parseDefaultCountry :: FakerSettings -> Value -> Parser a
parseDefaultCountry FakerSettings
settings = FakerSettings -> Text -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
"default_country"

parseCountryByCode ::
     (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser a
parseCountryByCode :: FakerSettings -> Value -> Parser a
parseCountryByCode FakerSettings
settings = FakerSettings -> Text -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
"country_by_code"

parseCountryByName ::
     (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser a
parseCountryByName :: FakerSettings -> Value -> Parser a
parseCountryByName FakerSettings
settings = FakerSettings -> Text -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
"country_by_name"

parseCountryCode :: (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser a
parseCountryCode :: FakerSettings -> Value -> Parser a
parseCountryCode FakerSettings
settings = FakerSettings -> Text -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
"country_code"

parseCountryCodeLong ::
     (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser a
parseCountryCodeLong :: FakerSettings -> Value -> Parser a
parseCountryCodeLong FakerSettings
settings = FakerSettings -> Text -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
"country_code_long"

parseBuildingNumber ::
     (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser (Unresolved a)
parseBuildingNumber :: FakerSettings -> Value -> Parser (Unresolved a)
parseBuildingNumber FakerSettings
settings =
  FakerSettings -> Text -> Value -> Parser (Unresolved a)
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser (Unresolved a)
parseUnresolvedAddressField FakerSettings
settings Text
"building_number"

parseCityWithState ::
     (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser (Unresolved a)
parseCityWithState :: FakerSettings -> Value -> Parser (Unresolved a)
parseCityWithState FakerSettings
settings = FakerSettings -> Text -> Value -> Parser (Unresolved a)
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser (Unresolved a)
parseUnresolvedAddressField FakerSettings
settings Text
"city_with_state"

cityWithStateProvider ::
     (MonadThrow m, MonadIO m) => FakerSettings -> m (Unresolved (Vector Text))
cityWithStateProvider :: FakerSettings -> m (Unresolved (Vector Text))
cityWithStateProvider FakerSettings
settings = FakerSettings
-> SourceData
-> (FakerSettings -> Value -> Parser (Unresolved (Vector Text)))
-> m (Unresolved (Vector Text))
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser (Unresolved (Vector Text))
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser (Unresolved a)
parseCityWithState

parseMailBox ::
     (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser (Unresolved a)
parseMailBox :: FakerSettings -> Value -> Parser (Unresolved a)
parseMailBox FakerSettings
settings = FakerSettings -> Text -> Value -> Parser (Unresolved a)
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser (Unresolved a)
parseUnresolvedAddressField FakerSettings
settings Text
"mail_box"

mailBoxProvider ::
     (MonadThrow m, MonadIO m) => FakerSettings -> m (Unresolved (Vector Text))
mailBoxProvider :: FakerSettings -> m (Unresolved (Vector Text))
mailBoxProvider FakerSettings
settings = FakerSettings
-> SourceData
-> (FakerSettings -> Value -> Parser (Unresolved (Vector Text)))
-> m (Unresolved (Vector Text))
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser (Unresolved (Vector Text))
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser (Unresolved a)
parseMailBox

parseCommunityPrefix ::
     (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser a
parseCommunityPrefix :: FakerSettings -> Value -> Parser a
parseCommunityPrefix FakerSettings
settings = FakerSettings -> Text -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
"community_prefix"

parseCommunitySuffix ::
     (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser a
parseCommunitySuffix :: FakerSettings -> Value -> Parser a
parseCommunitySuffix FakerSettings
settings = FakerSettings -> Text -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
"community_suffix"

parseCommunity ::
     (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser (Unresolved a)
parseCommunity :: FakerSettings -> Value -> Parser (Unresolved a)
parseCommunity FakerSettings
settings = FakerSettings -> Text -> Value -> Parser (Unresolved a)
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser (Unresolved a)
parseUnresolvedAddressField FakerSettings
settings Text
"community"

parseCommunity2 :: (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser a
parseCommunity2 :: FakerSettings -> Value -> Parser a
parseCommunity2 FakerSettings
settings = FakerSettings -> Text -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
"community"

parseStreetSuffix ::
     (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser a
parseStreetSuffix :: FakerSettings -> Value -> Parser a
parseStreetSuffix FakerSettings
settings = FakerSettings -> Text -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
"street_suffix"

parseSecondaryAddress ::
     (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser (Unresolved a)
parseSecondaryAddress :: FakerSettings -> Value -> Parser (Unresolved a)
parseSecondaryAddress FakerSettings
settings =
  FakerSettings -> Text -> Value -> Parser (Unresolved a)
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser (Unresolved a)
parseUnresolvedAddressField FakerSettings
settings Text
"secondary_address"

parsePostcode ::
     (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser (Unresolved a)
parsePostcode :: FakerSettings -> Value -> Parser (Unresolved a)
parsePostcode FakerSettings
settings = FakerSettings -> Text -> Value -> Parser (Unresolved a)
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser (Unresolved a)
parseUnresolvedAddressField FakerSettings
settings Text
"postcode"

parsePostcodeByState ::
     (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser (Unresolved a)
parsePostcodeByState :: FakerSettings -> Value -> Parser (Unresolved a)
parsePostcodeByState FakerSettings
settings =
  FakerSettings -> Text -> Value -> Parser (Unresolved a)
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser (Unresolved a)
parseUnresolvedAddressField FakerSettings
settings Text
"postcode_by_state"

parseState :: (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser a
parseState :: FakerSettings -> Value -> Parser a
parseState FakerSettings
settings = FakerSettings -> Text -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
"state"

parseStateAbbr :: (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser a
parseStateAbbr :: FakerSettings -> Value -> Parser a
parseStateAbbr FakerSettings
settings = FakerSettings -> Text -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
"state_abbr"

parseTimeZone :: (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser a
parseTimeZone :: FakerSettings -> Value -> Parser a
parseTimeZone FakerSettings
settings = FakerSettings -> Text -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
"time_zone"

parseCity ::
     (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser (Unresolved a)
parseCity :: FakerSettings -> Value -> Parser (Unresolved a)
parseCity FakerSettings
settings = FakerSettings -> Text -> Value -> Parser (Unresolved a)
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser (Unresolved a)
parseUnresolvedAddressField FakerSettings
settings Text
"city"

parseCity2 :: (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser a
parseCity2 :: FakerSettings -> Value -> Parser a
parseCity2 FakerSettings
settings = FakerSettings -> Text -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
"city"

parseStreetName ::
     (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser (Unresolved a)
parseStreetName :: FakerSettings -> Value -> Parser (Unresolved a)
parseStreetName FakerSettings
settings = FakerSettings -> Text -> Value -> Parser (Unresolved a)
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser (Unresolved a)
parseUnresolvedAddressField FakerSettings
settings Text
"street_name"

parseStreetAddress ::
     (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser (Unresolved a)
parseStreetAddress :: FakerSettings -> Value -> Parser (Unresolved a)
parseStreetAddress FakerSettings
settings =
  FakerSettings -> Text -> Value -> Parser (Unresolved a)
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser (Unresolved a)
parseUnresolvedAddressField FakerSettings
settings Text
"street_address"

parseFullAddress ::
     (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser (Unresolved a)
parseFullAddress :: FakerSettings -> Value -> Parser (Unresolved a)
parseFullAddress FakerSettings
settings = FakerSettings -> Text -> Value -> Parser (Unresolved a)
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser (Unresolved a)
parseUnresolvedAddressField FakerSettings
settings Text
"full_address"

countryProvider :: (MonadThrow m, MonadIO m) => FakerSettings -> m (Vector Text)
countryProvider :: FakerSettings -> m (Vector Text)
countryProvider FakerSettings
settings = FakerSettings
-> SourceData
-> (FakerSettings -> Value -> Parser (Vector Text))
-> m (Vector Text)
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser (Vector Text)
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser a
parseCountry

defaultCountryProvider ::
     (MonadThrow m, MonadIO m) => FakerSettings -> m (Vector Text)
defaultCountryProvider :: FakerSettings -> m (Vector Text)
defaultCountryProvider FakerSettings
settings = FakerSettings
-> SourceData
-> (FakerSettings -> Value -> Parser (Vector Text))
-> m (Vector Text)
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser (Vector Text)
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser a
parseDefaultCountry

villageProvider :: (MonadThrow m, MonadIO m) => FakerSettings -> m (Vector Text)
villageProvider :: FakerSettings -> m (Vector Text)
villageProvider FakerSettings
settings = FakerSettings
-> SourceData
-> (FakerSettings -> Value -> Parser (Vector Text))
-> m (Vector Text)
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser (Vector Text)
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser a
parseVillage

addressCityPrefixProvider ::
     (MonadThrow m, MonadIO m) => FakerSettings -> m (Vector Text)
addressCityPrefixProvider :: FakerSettings -> m (Vector Text)
addressCityPrefixProvider FakerSettings
settings = FakerSettings
-> SourceData
-> (FakerSettings -> Value -> Parser (Vector Text))
-> m (Vector Text)
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser (Vector Text)
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser a
parseCityPrefix

citySuffixProvider ::
     (MonadThrow m, MonadIO m) => FakerSettings -> m (Vector Text)
citySuffixProvider :: FakerSettings -> m (Vector Text)
citySuffixProvider FakerSettings
settings = FakerSettings
-> SourceData
-> (FakerSettings -> Value -> Parser (Vector Text))
-> m (Vector Text)
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser (Vector Text)
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser a
parseCitySuffix

countryByCodeProvider ::
     (MonadThrow m, MonadIO m) => FakerSettings -> m (Map Text Text)
countryByCodeProvider :: FakerSettings -> m (Map Text Text)
countryByCodeProvider FakerSettings
settings = FakerSettings
-> SourceData
-> (FakerSettings -> Value -> Parser (Map Text Text))
-> m (Map Text Text)
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser (Map Text Text)
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser a
parseCountryByCode

countryByNameProvider ::
     (MonadThrow m, MonadIO m) => FakerSettings -> m (Map Text Text)
countryByNameProvider :: FakerSettings -> m (Map Text Text)
countryByNameProvider FakerSettings
settings = FakerSettings
-> SourceData
-> (FakerSettings -> Value -> Parser (Map Text Text))
-> m (Map Text Text)
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser (Map Text Text)
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser a
parseCountryByName

countryCodeProvider ::
     (MonadThrow m, MonadIO m) => FakerSettings -> m (Vector Text)
countryCodeProvider :: FakerSettings -> m (Vector Text)
countryCodeProvider FakerSettings
settings = FakerSettings
-> SourceData
-> (FakerSettings -> Value -> Parser (Vector Text))
-> m (Vector Text)
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser (Vector Text)
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser a
parseCountryCode

countryCodeLongProvider ::
     (MonadThrow m, MonadIO m) => FakerSettings -> m (Vector Text)
countryCodeLongProvider :: FakerSettings -> m (Vector Text)
countryCodeLongProvider FakerSettings
settings =
  FakerSettings
-> SourceData
-> (FakerSettings -> Value -> Parser (Vector Text))
-> m (Vector Text)
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser (Vector Text)
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser a
parseCountryCodeLong

buildingNumberProvider ::
     (MonadThrow m, MonadIO m) => FakerSettings -> m (Unresolved (Vector Text))
buildingNumberProvider :: FakerSettings -> m (Unresolved (Vector Text))
buildingNumberProvider FakerSettings
settings = FakerSettings
-> SourceData
-> (FakerSettings -> Value -> Parser (Unresolved (Vector Text)))
-> m (Unresolved (Vector Text))
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser (Unresolved (Vector Text))
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser (Unresolved a)
parseBuildingNumber

communityPrefixProvider ::
     (MonadThrow m, MonadIO m) => FakerSettings -> m (Vector Text)
communityPrefixProvider :: FakerSettings -> m (Vector Text)
communityPrefixProvider FakerSettings
settings =
  FakerSettings
-> SourceData
-> (FakerSettings -> Value -> Parser (Vector Text))
-> m (Vector Text)
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser (Vector Text)
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser a
parseCommunityPrefix

communitySuffixProvider ::
     (MonadThrow m, MonadIO m) => FakerSettings -> m (Vector Text)
communitySuffixProvider :: FakerSettings -> m (Vector Text)
communitySuffixProvider FakerSettings
settings =
  FakerSettings
-> SourceData
-> (FakerSettings -> Value -> Parser (Vector Text))
-> m (Vector Text)
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser (Vector Text)
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser a
parseCommunitySuffix

communityProvider ::
     (MonadThrow m, MonadIO m) => FakerSettings -> m (Unresolved (Vector Text))
communityProvider :: FakerSettings -> m (Unresolved (Vector Text))
communityProvider FakerSettings
settings = FakerSettings
-> SourceData
-> (FakerSettings -> Value -> Parser (Unresolved (Vector Text)))
-> m (Unresolved (Vector Text))
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser (Unresolved (Vector Text))
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser (Unresolved a)
parseCommunity

-- For hy locale
communityProvider2 ::
     (MonadThrow m, MonadIO m) => FakerSettings -> m (Vector Text)
communityProvider2 :: FakerSettings -> m (Vector Text)
communityProvider2 FakerSettings
settings = FakerSettings
-> SourceData
-> (FakerSettings -> Value -> Parser (Vector Text))
-> m (Vector Text)
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser (Vector Text)
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser a
parseCommunity2

addressCommunityProvider ::
     (MonadThrow m, MonadIO m) => FakerSettings -> m (Unresolved (Vector Text))
addressCommunityProvider :: FakerSettings -> m (Unresolved (Vector Text))
addressCommunityProvider = FakerSettings -> m (Unresolved (Vector Text))
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
FakerSettings -> m (Unresolved (Vector Text))
communityProvider

streetSuffixProvider ::
     (MonadThrow m, MonadIO m) => FakerSettings -> m (Vector Text)
streetSuffixProvider :: FakerSettings -> m (Vector Text)
streetSuffixProvider FakerSettings
settings = FakerSettings
-> SourceData
-> (FakerSettings -> Value -> Parser (Vector Text))
-> m (Vector Text)
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser (Vector Text)
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser a
parseStreetSuffix

secondaryAddressProvider ::
     (MonadThrow m, MonadIO m) => FakerSettings -> m (Unresolved (Vector Text))
secondaryAddressProvider :: FakerSettings -> m (Unresolved (Vector Text))
secondaryAddressProvider FakerSettings
settings =
  FakerSettings
-> SourceData
-> (FakerSettings -> Value -> Parser (Unresolved (Vector Text)))
-> m (Unresolved (Vector Text))
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser (Unresolved (Vector Text))
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser (Unresolved a)
parseSecondaryAddress

postcodeRegexProvider :: (MonadThrow m, MonadIO m) => FakerSettings -> m Regex
postcodeRegexProvider :: FakerSettings -> m Regex
postcodeRegexProvider FakerSettings
settings = do
  let parser :: FakerSettings -> Value -> Parser Text
      parser :: FakerSettings -> Value -> Parser Text
parser = \FakerSettings
settings -> FakerSettings -> Text -> Value -> Parser Text
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
"postcode"
  Vector Text
val <- FakerSettings
-> SourceData
-> (FakerSettings -> Value -> Parser Text)
-> m (Vector Text)
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData
-> (FakerSettings -> Value -> Parser Text)
-> m (Vector Text)
fetchDataSingle FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser Text
parser
  Regex -> m Regex
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Regex -> m Regex) -> Regex -> m Regex
forall a b. (a -> b) -> a -> b
$ Text -> Regex
Regex (Text -> Regex) -> Text -> Regex
forall a b. (a -> b) -> a -> b
$ Vector Text -> Text
forall a. Vector a -> a
V.head Vector Text
val

postcodeProvider ::
     (MonadThrow m, MonadIO m) => FakerSettings -> m (Unresolved (Vector Text))
postcodeProvider :: FakerSettings -> m (Unresolved (Vector Text))
postcodeProvider FakerSettings
settings = FakerSettings
-> SourceData
-> (FakerSettings -> Value -> Parser (Unresolved (Vector Text)))
-> m (Unresolved (Vector Text))
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser (Unresolved (Vector Text))
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser (Unresolved a)
parsePostcode

-- todo: write test case for this in resolver
postcodeByStateProvider ::
     (MonadThrow m, MonadIO m)
  => FakerSettings
  -> m (Unresolved (Map Text Text))
postcodeByStateProvider :: FakerSettings -> m (Unresolved (Map Text Text))
postcodeByStateProvider FakerSettings
settings =
  FakerSettings
-> SourceData
-> (FakerSettings -> Value -> Parser (Unresolved (Map Text Text)))
-> m (Unresolved (Map Text Text))
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser (Unresolved (Map Text Text))
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser (Unresolved a)
parsePostcodeByState

stateProvider :: (MonadThrow m, MonadIO m) => FakerSettings -> m (Vector Text)
stateProvider :: FakerSettings -> m (Vector Text)
stateProvider FakerSettings
settings = FakerSettings
-> SourceData
-> (FakerSettings -> Value -> Parser (Vector Text))
-> m (Vector Text)
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser (Vector Text)
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser a
parseState

stateAbbrProvider ::
     (MonadThrow m, MonadIO m) => FakerSettings -> m (Vector Text)
stateAbbrProvider :: FakerSettings -> m (Vector Text)
stateAbbrProvider FakerSettings
settings = FakerSettings
-> SourceData
-> (FakerSettings -> Value -> Parser (Vector Text))
-> m (Vector Text)
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser (Vector Text)
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser a
parseStateAbbr

timeZoneProvider ::
     (MonadThrow m, MonadIO m) => FakerSettings -> m (Vector Text)
timeZoneProvider :: FakerSettings -> m (Vector Text)
timeZoneProvider FakerSettings
settings = FakerSettings
-> SourceData
-> (FakerSettings -> Value -> Parser (Vector Text))
-> m (Vector Text)
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser (Vector Text)
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser a
parseTimeZone

cityProvider ::
     (MonadThrow m, MonadIO m) => FakerSettings -> m (Unresolved (Vector Text))
cityProvider :: FakerSettings -> m (Unresolved (Vector Text))
cityProvider FakerSettings
settings = FakerSettings
-> SourceData
-> (FakerSettings -> Value -> Parser (Unresolved (Vector Text)))
-> m (Unresolved (Vector Text))
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser (Unresolved (Vector Text))
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser (Unresolved a)
parseCity

cityProvider2 :: (MonadThrow m, MonadIO m) => FakerSettings -> m (Vector Text)
cityProvider2 :: FakerSettings -> m (Vector Text)
cityProvider2 FakerSettings
settings = FakerSettings
-> SourceData
-> (FakerSettings -> Value -> Parser (Vector Text))
-> m (Vector Text)
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser (Vector Text)
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser a
parseCity2

streetNameProvider ::
     (MonadThrow m, MonadIO m) => FakerSettings -> m (Unresolved (Vector Text))
streetNameProvider :: FakerSettings -> m (Unresolved (Vector Text))
streetNameProvider FakerSettings
settings = FakerSettings
-> SourceData
-> (FakerSettings -> Value -> Parser (Unresolved (Vector Text)))
-> m (Unresolved (Vector Text))
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser (Unresolved (Vector Text))
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser (Unresolved a)
parseStreetName

streetAddressProvider ::
     (MonadThrow m, MonadIO m) => FakerSettings -> m (Unresolved (Vector Text))
streetAddressProvider :: FakerSettings -> m (Unresolved (Vector Text))
streetAddressProvider FakerSettings
settings = FakerSettings
-> SourceData
-> (FakerSettings -> Value -> Parser (Unresolved (Vector Text)))
-> m (Unresolved (Vector Text))
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser (Unresolved (Vector Text))
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser (Unresolved a)
parseStreetAddress

fullAddressProvider ::
     (MonadThrow m, MonadIO m) => FakerSettings -> m (Unresolved (Vector Text))
fullAddressProvider :: FakerSettings -> m (Unresolved (Vector Text))
fullAddressProvider FakerSettings
settings = FakerSettings
-> SourceData
-> (FakerSettings -> Value -> Parser (Unresolved (Vector Text)))
-> m (Unresolved (Vector Text))
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser (Unresolved (Vector Text))
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser (Unresolved a)
parseFullAddress

-- For es-ar locale
$(genParserUnresolved "address" "road_suffix")
$(genProviderUnresolved "address" "road_suffix")

$(genParserUnresolved "address" "road_name")
$(genProviderUnresolved "address" "road_name")


-- > resolveCommunityText "#{community_prefix} #{community_suffix}"
resolveAddressText ::
     (MonadIO m, MonadThrow m) => FakerSettings -> Text -> m Text
resolveAddressText :: FakerSettings -> Text -> m Text
resolveAddressText = (FakerSettings -> Text -> m Text)
-> FakerSettings -> Text -> m Text
forall (m :: * -> *).
(MonadIO m, MonadThrow m) =>
(FakerSettings -> Text -> m Text)
-> FakerSettings -> Text -> m Text
genericResolver' FakerSettings -> Text -> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
FakerSettings -> Text -> m Text
resolveAddressField

resolveAddressField ::
     (MonadThrow m, MonadIO m) => FakerSettings -> Text -> m Text
resolveAddressField :: FakerSettings -> Text -> m Text
resolveAddressField FakerSettings
settings field :: Text
field@Text
"community_suffix" =
  Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
cachedRandomVec Text
"address" Text
field FakerSettings -> m (Vector Text)
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
FakerSettings -> m (Vector Text)
communitySuffixProvider FakerSettings
settings
resolveAddressField FakerSettings
settings field :: Text
field@Text
"community_prefix" =
  Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
cachedRandomVec Text
"address" Text
field FakerSettings -> m (Vector Text)
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
FakerSettings -> m (Vector Text)
communityPrefixProvider FakerSettings
settings
resolveAddressField FakerSettings
settings field :: Text
field@Text
"city_prefix" =
  Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
cachedRandomVec Text
"address" Text
field FakerSettings -> m (Vector Text)
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
FakerSettings -> m (Vector Text)
addressCityPrefixProvider FakerSettings
settings
resolveAddressField FakerSettings
settings field :: Text
field@Text
"first_name" =
  FakerSettings -> Text -> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
FakerSettings -> Text -> m Text
resolveNameField FakerSettings
settings Text
"first_name"
resolveAddressField FakerSettings
settings field :: Text
field@Text
"last_name" =
  FakerSettings -> Text -> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
FakerSettings -> Text -> m Text
resolveNameField FakerSettings
settings Text
"last_name"
resolveAddressField FakerSettings
settings field :: Text
field@Text
"Name.first_name" =
  FakerSettings -> Text -> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
FakerSettings -> Text -> m Text
resolveNameField FakerSettings
settings Text
"first_name"
resolveAddressField FakerSettings
settings field :: Text
field@Text
"Name.name" =
  Text
-> Text
-> (FakerSettings -> m (Unresolved (Vector Text)))
-> (FakerSettings -> Text -> m Text)
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Unresolved (Vector Text)))
-> (FakerSettings -> Text -> m Text)
-> FakerSettings
-> m Text
cachedRandomUnresolvedVec
    Text
"address"
    Text
"name"
    FakerSettings -> m (Unresolved (Vector Text))
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
FakerSettings -> m (Unresolved (Vector Text))
nameNameProvider
    FakerSettings -> Text -> m Text
forall (m :: * -> *).
(MonadIO m, MonadThrow m) =>
FakerSettings -> Text -> m Text
resolveAddressText
    FakerSettings
settings
resolveAddressField FakerSettings
settings field :: Text
field@Text
"city_suffix" =
  Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
cachedRandomVec Text
"address" Text
field FakerSettings -> m (Vector Text)
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
FakerSettings -> m (Vector Text)
citySuffixProvider FakerSettings
settings
resolveAddressField FakerSettings
settings field :: Text
field@Text
"Name.last_name" =
  FakerSettings -> Text -> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
FakerSettings -> Text -> m Text
resolveNameField FakerSettings
settings Text
"last_name"
resolveAddressField FakerSettings
settings field :: Text
field@Text
"Name.surname" =
  FakerSettings -> Text -> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
FakerSettings -> Text -> m Text
resolveNameField FakerSettings
settings Text
"surname"
resolveAddressField FakerSettings
settings field :: Text
field@Text
"surname" =
  FakerSettings -> Text -> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
FakerSettings -> Text -> m Text
resolveNameField FakerSettings
settings Text
"surname"
resolveAddressField FakerSettings
settings field :: Text
field@Text
"street_suffix" =
  Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
cachedRandomVec Text
"address" Text
field FakerSettings -> m (Vector Text)
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
FakerSettings -> m (Vector Text)
streetSuffixProvider FakerSettings
settings
resolveAddressField FakerSettings
settings field :: Text
field@Text
"building_number" =
  Text
-> Text
-> (FakerSettings -> m (Unresolved (Vector Text)))
-> (FakerSettings -> Text -> m Text)
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Unresolved (Vector Text)))
-> (FakerSettings -> Text -> m Text)
-> FakerSettings
-> m Text
cachedRandomUnresolvedVec
    Text
"address"
    Text
field
    FakerSettings -> m (Unresolved (Vector Text))
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
FakerSettings -> m (Unresolved (Vector Text))
buildingNumberProvider
    FakerSettings -> Text -> m Text
forall (m :: * -> *).
(MonadIO m, MonadThrow m) =>
FakerSettings -> Text -> m Text
resolveAddressText
    FakerSettings
settings
resolveAddressField FakerSettings
settings field :: Text
field@Text
"street_name" =
  Text
-> Text
-> (FakerSettings -> m (Unresolved (Vector Text)))
-> (FakerSettings -> Text -> m Text)
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Unresolved (Vector Text)))
-> (FakerSettings -> Text -> m Text)
-> FakerSettings
-> m Text
cachedRandomUnresolvedVec
    Text
"address"
    Text
field
    FakerSettings -> m (Unresolved (Vector Text))
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
FakerSettings -> m (Unresolved (Vector Text))
streetNameProvider
    FakerSettings -> Text -> m Text
forall (m :: * -> *).
(MonadIO m, MonadThrow m) =>
FakerSettings -> Text -> m Text
resolveAddressText
    FakerSettings
settings
resolveAddressField FakerSettings
settings field :: Text
field@Text
"street_address" =
  Text
-> Text
-> (FakerSettings -> m (Unresolved (Vector Text)))
-> (FakerSettings -> Text -> m Text)
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Unresolved (Vector Text)))
-> (FakerSettings -> Text -> m Text)
-> FakerSettings
-> m Text
cachedRandomUnresolvedVec
    Text
"address"
    Text
field
    FakerSettings -> m (Unresolved (Vector Text))
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
FakerSettings -> m (Unresolved (Vector Text))
streetAddressProvider
    FakerSettings -> Text -> m Text
forall (m :: * -> *).
(MonadIO m, MonadThrow m) =>
FakerSettings -> Text -> m Text
resolveAddressText
    FakerSettings
settings
resolveAddressField FakerSettings
settings field :: Text
field@Text
"city" =
  Text
-> Text
-> (FakerSettings -> m (Unresolved (Vector Text)))
-> (FakerSettings -> Text -> m Text)
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Unresolved (Vector Text)))
-> (FakerSettings -> Text -> m Text)
-> FakerSettings
-> m Text
cachedRandomUnresolvedVec
    Text
"address"
    Text
field
    FakerSettings -> m (Unresolved (Vector Text))
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
FakerSettings -> m (Unresolved (Vector Text))
cityProvider
    FakerSettings -> Text -> m Text
forall (m :: * -> *).
(MonadIO m, MonadThrow m) =>
FakerSettings -> Text -> m Text
resolveAddressText
    FakerSettings
settings
resolveAddressField FakerSettings
settings field :: Text
field@Text
"state_abbr" =
  Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
cachedRandomVec Text
"address" Text
field FakerSettings -> m (Vector Text)
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
FakerSettings -> m (Vector Text)
stateAbbrProvider FakerSettings
settings
resolveAddressField FakerSettings
settings field :: Text
field@Text
"zip_code" =
  Text
-> Text
-> (FakerSettings -> m (Unresolved (Vector Text)))
-> (FakerSettings -> Text -> m Text)
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Unresolved (Vector Text)))
-> (FakerSettings -> Text -> m Text)
-> FakerSettings
-> m Text
cachedRandomUnresolvedVec
    Text
"address"
    Text
field
    FakerSettings -> m (Unresolved (Vector Text))
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
FakerSettings -> m (Unresolved (Vector Text))
postcodeProvider
    FakerSettings -> Text -> m Text
forall (m :: * -> *).
(MonadIO m, MonadThrow m) =>
FakerSettings -> Text -> m Text
resolveAddressText
    FakerSettings
settings
resolveAddressField FakerSettings
settings field :: Text
field@Text
"secondary_address" =
  Text
-> Text
-> (FakerSettings -> m (Unresolved (Vector Text)))
-> (FakerSettings -> Text -> m Text)
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Unresolved (Vector Text)))
-> (FakerSettings -> Text -> m Text)
-> FakerSettings
-> m Text
cachedRandomUnresolvedVec
    Text
"address"
    Text
field
    FakerSettings -> m (Unresolved (Vector Text))
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
FakerSettings -> m (Unresolved (Vector Text))
secondaryAddressProvider
    FakerSettings -> Text -> m Text
forall (m :: * -> *).
(MonadIO m, MonadThrow m) =>
FakerSettings -> Text -> m Text
resolveAddressText
    FakerSettings
settings
resolveAddressField FakerSettings
settings field :: Text
field@Text
"city_name" =
  let parser :: (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser a
      parser :: FakerSettings -> Value -> Parser a
parser FakerSettings
settings = FakerSettings -> Text -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
field
      provider :: FakerSettings -> m a
provider FakerSettings
settings = FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser a
parser
   in Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
cachedRandomVec Text
"address" Text
field FakerSettings -> m (Vector Text)
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m, FromJSON a, Monoid a) =>
FakerSettings -> m a
provider FakerSettings
settings
resolveAddressField FakerSettings
settings field :: Text
field@Text
"city_names" =
  let parser :: (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser a
      parser :: FakerSettings -> Value -> Parser a
parser FakerSettings
settings = FakerSettings -> Text -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
field
      provider :: FakerSettings -> m a
provider FakerSettings
settings = FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser a
parser
   in Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
cachedRandomVec Text
"address" Text
field FakerSettings -> m (Vector Text)
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m, FromJSON a, Monoid a) =>
FakerSettings -> m a
provider FakerSettings
settings
resolveAddressField FakerSettings
settings field :: Text
field@Text
"city_root" =
  let parser :: (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser a
      parser :: FakerSettings -> Value -> Parser a
parser FakerSettings
settings = FakerSettings -> Text -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
field
      provider :: FakerSettings -> m a
provider FakerSettings
settings = FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser a
parser
   in Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
cachedRandomVec Text
"address" Text
field FakerSettings -> m (Vector Text)
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m, FromJSON a, Monoid a) =>
FakerSettings -> m a
provider FakerSettings
settings
resolveAddressField FakerSettings
settings field :: Text
field@Text
"cities" =
  let parser :: (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser a
      parser :: FakerSettings -> Value -> Parser a
parser FakerSettings
settings = FakerSettings -> Text -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
field
      provider :: FakerSettings -> m a
provider FakerSettings
settings = FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser a
parser
   in Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
cachedRandomVec Text
"address" Text
field FakerSettings -> m (Vector Text)
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m, FromJSON a, Monoid a) =>
FakerSettings -> m a
provider FakerSettings
settings
resolveAddressField FakerSettings
settings field :: Text
field@Text
"municipality" =
  let parser :: (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser a
      parser :: FakerSettings -> Value -> Parser a
parser FakerSettings
settings = FakerSettings -> Text -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
field
      provider :: FakerSettings -> m a
provider FakerSettings
settings = FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser a
parser
   in Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
cachedRandomVec Text
"address" Text
field FakerSettings -> m (Vector Text)
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m, FromJSON a, Monoid a) =>
FakerSettings -> m a
provider FakerSettings
settings
resolveAddressField FakerSettings
settings field :: Text
field@Text
"street_title" =
  let parser :: (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser a
      parser :: FakerSettings -> Value -> Parser a
parser FakerSettings
settings = FakerSettings -> Text -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
field
      provider :: FakerSettings -> m a
provider FakerSettings
settings = FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser a
parser
   in Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
cachedRandomVec Text
"address" Text
field FakerSettings -> m (Vector Text)
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m, FromJSON a, Monoid a) =>
FakerSettings -> m a
provider FakerSettings
settings
resolveAddressField FakerSettings
settings field :: Text
field@Text
"state" =
  let parser :: (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser a
      parser :: FakerSettings -> Value -> Parser a
parser FakerSettings
settings = FakerSettings -> Text -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
field
      provider :: FakerSettings -> m a
provider FakerSettings
settings = FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser a
parser
   in Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
cachedRandomVec Text
"address" Text
field FakerSettings -> m (Vector Text)
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m, FromJSON a, Monoid a) =>
FakerSettings -> m a
provider FakerSettings
settings
resolveAddressField FakerSettings
settings field :: Text
field@Text
"streets" =
  let parser :: (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser a
      parser :: FakerSettings -> Value -> Parser a
parser FakerSettings
settings = FakerSettings -> Text -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
field
      provider :: FakerSettings -> m a
provider FakerSettings
settings = FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser a
parser
   in Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
cachedRandomVec Text
"address" Text
field FakerSettings -> m (Vector Text)
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m, FromJSON a, Monoid a) =>
FakerSettings -> m a
provider FakerSettings
settings
resolveAddressField FakerSettings
settings field :: Text
field@Text
"country" =
  let parser :: (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser a
      parser :: FakerSettings -> Value -> Parser a
parser FakerSettings
settings = FakerSettings -> Text -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
field
      provider :: FakerSettings -> m a
provider FakerSettings
settings = FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser a
parser
   in Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
cachedRandomVec Text
"address" Text
field FakerSettings -> m (Vector Text)
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m, FromJSON a, Monoid a) =>
FakerSettings -> m a
provider FakerSettings
settings
resolveAddressField FakerSettings
settings field :: Text
field@Text
"street_prefix" =
  let parser :: (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser a
      parser :: FakerSettings -> Value -> Parser a
parser FakerSettings
settings = FakerSettings -> Text -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
field
      provider :: FakerSettings -> m a
provider FakerSettings
settings = FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser a
parser
   in Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
cachedRandomVec Text
"address" Text
field FakerSettings -> m (Vector Text)
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m, FromJSON a, Monoid a) =>
FakerSettings -> m a
provider FakerSettings
settings
resolveAddressField FakerSettings
settings field :: Text
field@Text
"street_root" =
  let parser :: (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser a
      parser :: FakerSettings -> Value -> Parser a
parser FakerSettings
settings = FakerSettings -> Text -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
field
      provider :: FakerSettings -> m a
provider FakerSettings
settings = FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser a
parser
   in Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
cachedRandomVec Text
"address" Text
field FakerSettings -> m (Vector Text)
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m, FromJSON a, Monoid a) =>
FakerSettings -> m a
provider FakerSettings
settings
resolveAddressField FakerSettings
settings field :: Text
field@Text
"common_street_suffix" =
  let parser :: (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser a
      parser :: FakerSettings -> Value -> Parser a
parser FakerSettings
settings = FakerSettings -> Text -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
field
      provider :: FakerSettings -> m a
provider FakerSettings
settings = FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser a
parser
   in Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
cachedRandomVec Text
"address" Text
field FakerSettings -> m (Vector Text)
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m, FromJSON a, Monoid a) =>
FakerSettings -> m a
provider FakerSettings
settings
resolveAddressField FakerSettings
settings field :: Text
field@Text
"village_prefix" =
  let parser :: (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser a
      parser :: FakerSettings -> Value -> Parser a
parser FakerSettings
settings = FakerSettings -> Text -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
field
      provider :: FakerSettings -> m a
provider FakerSettings
settings = FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser a
parser
   in Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
cachedRandomVec Text
"address" Text
field FakerSettings -> m (Vector Text)
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m, FromJSON a, Monoid a) =>
FakerSettings -> m a
provider FakerSettings
settings
resolveAddressField FakerSettings
settings field :: Text
field@Text
"village" =
  let parser :: (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser a
      parser :: FakerSettings -> Value -> Parser a
parser FakerSettings
settings = FakerSettings -> Text -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
field
      provider :: FakerSettings -> m a
provider FakerSettings
settings = FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser a
parser
   in Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
cachedRandomVec Text
"address" Text
field FakerSettings -> m (Vector Text)
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m, FromJSON a, Monoid a) =>
FakerSettings -> m a
provider FakerSettings
settings
resolveAddressField FakerSettings
settings field :: Text
field@Text
"postcode" =
  let parser :: (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser a
      parser :: FakerSettings -> Value -> Parser a
parser FakerSettings
settings = FakerSettings -> Text -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
field
      provider :: FakerSettings -> m a
provider FakerSettings
settings = FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser a
parser
  in Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
cachedRandomVec Text
"address" Text
field FakerSettings -> m (Vector Text)
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m, FromJSON a, Monoid a) =>
FakerSettings -> m a
provider FakerSettings
settings
resolveAddressField FakerSettings
settings field :: Text
field@Text
"street" =
  let parser :: (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser a
      parser :: FakerSettings -> Value -> Parser a
parser FakerSettings
settings = FakerSettings -> Text -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
field
      provider :: FakerSettings -> m a
provider FakerSettings
settings = FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser a
parser
   in Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
cachedRandomVec Text
"address" Text
field FakerSettings -> m (Vector Text)
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m, FromJSON a, Monoid a) =>
FakerSettings -> m a
provider FakerSettings
settings
resolveAddressField FakerSettings
settings field :: Text
field@Text
"masculine_street_prefix" =
  let parser :: (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser a
      parser :: FakerSettings -> Value -> Parser a
parser FakerSettings
settings = FakerSettings -> Text -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
field
      provider :: FakerSettings -> m a
provider FakerSettings
settings = FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser a
parser
   in Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
cachedRandomVec Text
"address" Text
field FakerSettings -> m (Vector Text)
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m, FromJSON a, Monoid a) =>
FakerSettings -> m a
provider FakerSettings
settings
resolveAddressField FakerSettings
settings field :: Text
field@Text
"feminine_street_prefix" =
  let parser :: (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser a
      parser :: FakerSettings -> Value -> Parser a
parser FakerSettings
settings = FakerSettings -> Text -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
field
      provider :: FakerSettings -> m a
provider FakerSettings
settings = FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser a
parser
   in Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
cachedRandomVec Text
"address" Text
field FakerSettings -> m (Vector Text)
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m, FromJSON a, Monoid a) =>
FakerSettings -> m a
provider FakerSettings
settings
resolveAddressField FakerSettings
settings field :: Text
field@Text
"masculine_street_title" =
  let parser :: (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser a
      parser :: FakerSettings -> Value -> Parser a
parser FakerSettings
settings = FakerSettings -> Text -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
field
      provider :: FakerSettings -> m a
provider FakerSettings
settings = FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser a
parser
   in Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
cachedRandomVec Text
"address" Text
field FakerSettings -> m (Vector Text)
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m, FromJSON a, Monoid a) =>
FakerSettings -> m a
provider FakerSettings
settings
resolveAddressField FakerSettings
settings field :: Text
field@Text
"feminine_street_title" =
  let parser :: (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser a
      parser :: FakerSettings -> Value -> Parser a
parser FakerSettings
settings = FakerSettings -> Text -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
field
      provider :: FakerSettings -> m a
provider FakerSettings
settings = FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser a
parser
   in Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
cachedRandomVec Text
"address" Text
field FakerSettings -> m (Vector Text)
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m, FromJSON a, Monoid a) =>
FakerSettings -> m a
provider FakerSettings
settings
resolveAddressField FakerSettings
settings field :: Text
field@Text
"Address.city_name" =
  FakerSettings -> Text -> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
FakerSettings -> Text -> m Text
resolveAddressField FakerSettings
settings Text
"city_name"
resolveAddressField FakerSettings
settings field :: Text
field@Text
"Address.street_title" =
  FakerSettings -> Text -> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
FakerSettings -> Text -> m Text
resolveAddressField FakerSettings
settings Text
"street_title"
resolveAddressField FakerSettings
settings field :: Text
field@Text
"default_country" =
  Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
cachedRandomVec Text
"address" Text
field FakerSettings -> m (Vector Text)
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
FakerSettings -> m (Vector Text)
defaultCountryProvider FakerSettings
settings
resolveAddressField FakerSettings
settings field :: Text
field@Text
"mail_box" =
  Text
-> Text
-> (FakerSettings -> m (Unresolved (Vector Text)))
-> (FakerSettings -> Text -> m Text)
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Unresolved (Vector Text)))
-> (FakerSettings -> Text -> m Text)
-> FakerSettings
-> m Text
cachedRandomUnresolvedVec
    Text
"address"
    Text
field
    FakerSettings -> m (Unresolved (Vector Text))
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
FakerSettings -> m (Unresolved (Vector Text))
mailBoxProvider
    FakerSettings -> Text -> m Text
forall (m :: * -> *).
(MonadIO m, MonadThrow m) =>
FakerSettings -> Text -> m Text
resolveAddressText
    FakerSettings
settings
resolveAddressField FakerSettings
settings field :: Text
field@Text
"community" =
  Text
-> Text
-> (FakerSettings -> m (Unresolved (Vector Text)))
-> (FakerSettings -> Text -> m Text)
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Unresolved (Vector Text)))
-> (FakerSettings -> Text -> m Text)
-> FakerSettings
-> m Text
cachedRandomUnresolvedVec
    Text
"address"
    Text
field
    FakerSettings -> m (Unresolved (Vector Text))
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
FakerSettings -> m (Unresolved (Vector Text))
communityProvider
    FakerSettings -> Text -> m Text
forall (m :: * -> *).
(MonadIO m, MonadThrow m) =>
FakerSettings -> Text -> m Text
resolveAddressText
    FakerSettings
settings
resolveAddressField FakerSettings
settings field :: Text
field@Text
"place_names" =
  Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
cachedRandomVec Text
"address" Text
field FakerSettings -> m (Vector Text)
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
FakerSettings -> m (Vector Text)
placeNamesProvider FakerSettings
settings
resolveAddressField FakerSettings
settings field :: Text
field@Text
"landscape_elements" =
  let parser :: (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser a
      parser :: FakerSettings -> Value -> Parser a
parser FakerSettings
settings = FakerSettings -> Text -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
field
      provider :: FakerSettings -> m a
provider FakerSettings
settings = FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser a
parser
   in Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
cachedRandomVec Text
"address" Text
field FakerSettings -> m (Vector Text)
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m, FromJSON a, Monoid a) =>
FakerSettings -> m a
provider FakerSettings
settings
resolveAddressField FakerSettings
settings field :: Text
field@Text
"colonialism" =
  let parser :: (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser a
      parser :: FakerSettings -> Value -> Parser a
parser FakerSettings
settings = FakerSettings -> Text -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
field
      provider :: FakerSettings -> m a
provider FakerSettings
settings = FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser a
parser
   in Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
cachedRandomVec Text
"address" Text
field FakerSettings -> m (Vector Text)
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m, FromJSON a, Monoid a) =>
FakerSettings -> m a
provider FakerSettings
settings
resolveAddressField FakerSettings
settings field :: Text
field@Text
"the" =
  let parser :: (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser a
      parser :: FakerSettings -> Value -> Parser a
parser FakerSettings
settings = FakerSettings -> Text -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
field
      provider :: FakerSettings -> m a
provider FakerSettings
settings = FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser a
parser
   in Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
cachedRandomVec Text
"address" Text
field FakerSettings -> m (Vector Text)
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m, FromJSON a, Monoid a) =>
FakerSettings -> m a
provider FakerSettings
settings
resolveAddressField FakerSettings
settings field :: Text
field@Text
"female_city_saint_prefix" =
  Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
cachedRandomVec Text
"address" Text
field FakerSettings -> m (Vector Text)
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
FakerSettings -> m (Vector Text)
femaleCitySaintPrefixProvider FakerSettings
settings
resolveAddressField FakerSettings
settings field :: Text
field@Text
"male_city_saint_prefix" =
  Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
cachedRandomVec Text
"address" Text
field FakerSettings -> m (Vector Text)
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
FakerSettings -> m (Vector Text)
maleCitySaintPrefixProvider FakerSettings
settings
resolveAddressField FakerSettings
settings field :: Text
field@Text
"army_city_prefix" =
  Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
cachedRandomVec Text
"address" Text
field FakerSettings -> m (Vector Text)
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
FakerSettings -> m (Vector Text)
armyCityPrefixProvider FakerSettings
settings
resolveAddressField FakerSettings
settings field :: Text
field@Text
"Name.female_first_name" =
  FakerSettings -> Text -> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
FakerSettings -> Text -> m Text
resolveNameField FakerSettings
settings Text
"female_first_name"
resolveAddressField FakerSettings
settings field :: Text
field@Text
"Name.male_first_name" =
  FakerSettings -> Text -> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
FakerSettings -> Text -> m Text
resolveNameField FakerSettings
settings Text
"male_first_name"
resolveAddressField FakerSettings
settings field :: Text
field@Text
"road_prefix" =
  let parser :: (FromJSON a, Monoid a) => FakerSettings -> Value -> Parser a
      parser :: FakerSettings -> Value -> Parser a
parser FakerSettings
settings = FakerSettings -> Text -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Text -> Value -> Parser a
parseAddressField FakerSettings
settings Text
field
      provider :: FakerSettings -> m a
provider FakerSettings
settings = FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m) =>
FakerSettings
-> SourceData -> (FakerSettings -> Value -> Parser a) -> m a
fetchData FakerSettings
settings SourceData
Address FakerSettings -> Value -> Parser a
forall a.
(FromJSON a, Monoid a) =>
FakerSettings -> Value -> Parser a
parser
   in Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
cachedRandomVec Text
"address" Text
field FakerSettings -> m (Vector Text)
forall (m :: * -> *) a.
(MonadThrow m, MonadIO m, FromJSON a, Monoid a) =>
FakerSettings -> m a
provider FakerSettings
settings
resolveAddressField FakerSettings
settings field :: Text
field@Text
"road_suffix" =
  Text
-> Text
-> (FakerSettings -> m (Unresolved (Vector Text)))
-> (FakerSettings -> Text -> m Text)
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Unresolved (Vector Text)))
-> (FakerSettings -> Text -> m Text)
-> FakerSettings
-> m Text
cachedRandomUnresolvedVec
    Text
"address"
    Text
field
    FakerSettings -> m (Unresolved (Vector Text))
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
FakerSettings -> m (Unresolved (Vector Text))
addressRoadSuffixProvider
    FakerSettings -> Text -> m Text
forall (m :: * -> *).
(MonadIO m, MonadThrow m) =>
FakerSettings -> Text -> m Text
resolveAddressText
    FakerSettings
settings
resolveAddressField FakerSettings
settings field :: Text
field@Text
"road_name" =
  Text
-> Text
-> (FakerSettings -> m (Unresolved (Vector Text)))
-> (FakerSettings -> Text -> m Text)
-> FakerSettings
-> m Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> Text
-> (FakerSettings -> m (Unresolved (Vector Text)))
-> (FakerSettings -> Text -> m Text)
-> FakerSettings
-> m Text
cachedRandomUnresolvedVec
    Text
"address"
    Text
field
    FakerSettings -> m (Unresolved (Vector Text))
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
FakerSettings -> m (Unresolved (Vector Text))
addressRoadNameProvider
    FakerSettings -> Text -> m Text
forall (m :: * -> *).
(MonadIO m, MonadThrow m) =>
FakerSettings -> Text -> m Text
resolveAddressText
    FakerSettings
settings
resolveAddressField FakerSettings
settings Text
str = FakerException -> m Text
forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a
throwM (FakerException -> m Text) -> FakerException -> m Text
forall a b. (a -> b) -> a -> b
$ String -> Text -> FakerException
InvalidField String
"address" Text
str