h$B=      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                                                    (c) 2019 Lucas David TraversoMPL-2.0*Lucas David Traverso unstableportable Safe-Inferred #$ conferer8This type is used extensivelly as a way to point into a  and in turn into a 1. The intended way to create them is is using .+It's a list of alphanumeric words and each $ can interpret it as it sees fit.confererHelper function to create ,s, this function always works, but since s reject some string this function transforms the input to provide lawful s instead of throwing. For example: 'mkKey' "sOmE.KEy" == "some.key" 'mkKey' "1.key" == "1.key" 'mkKey' "1_thing.key" == "1thing.key" 'mkKey' "some....key" == "some.key" 'mkKey' ".." == ""confererSame as  but for conferer,Collapse a key into a textual representationconfererThis function tells if a key is a subkey of another key based using key fragments instead of letters as units 'isKeyPrefixOf' "foo" "foo.bar" == True 'isKeyPrefixOf' "foo" "foo" == True 'isKeyPrefixOf' "foo" "fooa" == FalseconfererGiven k1 and k2 this function drops k1 as a prefix from k2, if k1 is not a prefix of k2 it returns  'keyPrefixOf' "foo" "foo.bar" == Just "bar" 'keyPrefixOf' "foo" "foo" == Just "" 'keyPrefixOf' "foo" "fooa" == Nothing 'keyPrefixOf' "" k == Just k confererConcatenate two keys conferer>Get raw components from a key, usually to do some manipulation conferer4Get first component of a key and the rest of the key   (c) 2019 Lucas David TraversoMPL-2.0*Lucas David Traverso stableportable Safe-Inferred #$ b   (c) 2019 Lucas David TraversoMPL-2.0*Lucas David Traverso unstableportable Safe-Inferred  #$ confererMain interface for interacting with external systems that provide configuration which will be used by  to fetch values.confererThis function is used by the  to get values from this .confererThis function is used by the # to list possible values from the  that if the user , it will be found.confererConcrete type for (c) 2019 Lucas David TraversoMPL-2.0*Lucas David Traverso unstableportable Safe-Inferred #$Lconferer'The type for creating a source given a , some sources require a certain configuration to be initialized (for example: the redis source needs connection info to connect to the server)confererResult of a key lookup in a confererThis type acts as the entry point for most of the library, it's main purpouse is to expose a uniform interface into multiple configuration sources (such as env vars, cli args, and many others including use defined ones using the  interface)    (c) 2019 Lucas David TraversoMPL-2.0*Lucas David Traverso stableportable Safe-Inferred #$ (c) 2019 Lucas David TraversoMPL-2.0*Lucas David Traverso stableportable Safe-Inferred #$#confererA > mostly use for mocking which is configured directly using a &conferer Create a  from a list of associations'conferer Create a  from a (conferer Create a  from a list of associations#$%&'(#$%&'((c) 2019 Lucas David TraversoMPL-2.0*Lucas David Traverso stableportable Safe-Inferred #$,conferer"Type alias for the env vars prefix-confererType alias for the environment.confererSource that interfaces with the environment transforming keys by uppercasing and interspersing underscores, and using a prefix to avoid clashing with system env varsso with "app" prefix,  "some.key" turns into  APP_SOME_KEY3conferer Create a  using 44conferer Create a  using the real environment5conferer Create a # using a hardcoded list of env vars6confererGet the env name from a prefix and a key by uppercasing and intercalating underscores7confererThe opossite of 6 ,-./21034567 ./210-,34567(c) 2019 Lucas David TraversoMPL-2.0*Lucas David Traverso stableportable Safe-Inferred #$U:confererType alias for cli args;confererThis source provides keys from the command line arguments passed into the program. It only accepts arguments with -- and an equals, for example: ./awesomeapp --warp.port=5000?conferer Create a  using @@conferer Create a  using A but using real cli argsAconferer Create a # using cli args passed as parameterBconferer8Parse an argument list into a dictionary suitable for a  :;<=>?@AB ;<=>:?@AB(c) 2019 Lucas David TraversoMPL-2.0*Lucas David Traverso unstableportable Safe-Inferred #$>? Econferer2A key that has been transformed using one or many I+s, so that that process can be reversed.IconfererAlias for a mapping from one key to another used for transforming keysJconferer"This function runs lookups on the  , first in s in order and then on the  based defaults.KconfererThis function lists all available keys under some key, that could be fetched successfully.Lconferer$This function lists subkeys in some s and combines the resultsMconferer)This function reverses the mappings in a E! to retrieve the original key.Assumes that mappings were really used, otherwise it ignores bad valuesNconfererThis utility function run a list of IO actions and returns the first that return a , if no one does, returns OconfererThis function tries to apply a list of mappings to a key meaning replace the prefix with the new value from the mapping, if the mapping isn't a prefix that mapping is ignoredThis function always terminates even in presence of recursive mappings, since it removes the mapping after it was first used, and that causes that eventually the function will run out of keymappings and terminate.Pconferer/This utility function splits a list based on a cond function and returns a tuple of previous value, next values and the mapped found value.Qconferer This function gets a value from #s but ignores mappings and defaultsRconferer+This function gets values from the defaultsSconfererThe empty configuration, this ; is used as the base for most config creating functions.Tconferer*This function adds some key mappings to a Uconferer!This function adds defaults to a Vconferer5This function adds one default of a custom type to a Note that unlike U this function does the toDyn so no need to do it on the user's sideWconferer+This function removes a key default from a XconfererInstantiate a  using an  and a  and add to the configYconfererInstantiate several  s using a s and a ? and add them to the config in the order defined by the listEFGHIJKLMNOPQRSTUVWXYJIEFGHKLMNOPQRSTUVWXY (c) 2019 Lucas David TraversoMPL-2.0*Lucas David Traverso unstableportable Safe-Inferred #$9>?-\confererPurely s machinery, ignore...^confererPurely s machinery, ignore...`confererPurely s machinery, ignore...bconfererPurely s machinery, ignore...dconfererException to show that the provided default had the wrong type, this is usually a programmer error and a user that configures the library can not do much to fix it.fconferer)Exception to show that some non optional  was missing while trying to ohconferer:Exception to show that a value couldn't be parsed properlyjconfererA newtype wrapper for a  to allow implementing n$ with something better than just a lconfererUtility only typeclass to smooth the naming differences between default values for external library settingsThis typeclass is not used internally it's only here for convinience for usersnconferer8The typeclass for defining the way to get values from a , hiding the  based nature of the 1s and parse whatever value as the types sees fitSome of these instances are provided in different packages to avoid the heavy dependencies.'It provides a reasonable default using s so most of the time user need not to implement this typeclass.oconfererThis function uses a  and a scoping  to get a value.Some conventions: When some ' is missing this function should throw fFor any t it should hold that 0fetchFromConfig k (config & addDefault k t) == t meaning that a default on the same key with the right type should be used as a default and with no configuration that value should be returnedTry desconstructing the value in as many keys as possible since is allows easier partial overriding.qconfererHelper function to parse a  from rconferer7Helper function to implement fetchFromConfig using the  instancesconferer7Helper function to implement fetchFromConfig using the  instancetconfererHelper function to implement fetchFromConfig using some parsing functionuconfererHelper function does the plumbing of desconstructing a default into smaller defaults, which is usefull for nested o.vconfererHelper function to throw hwconfererHelper function to create a hxconferer&Simplified helper function to throw a fyconferer'Simplified helper function to create a fzconfererHelper function to throw a f{confererHelper function to create a f|confererHelper function to throw a d}confererHelper function to create a d~conferer,Fetch from value from the defaults map of a  or else throwconferer,Fetch from value from the defaults map of a  or else return a confererSame as o using the root keyconfererSame as o* but adding a user defined default before o*ing so it doesn't throw a MissingKeyErrorconfererSame as  using the root keyuconferer!Function to deconstruct the valueconfererKey where to look for the valueconferer The config'\]^_`abcdefghijklmnopqrstuvwxyz{|}~'nolmjkpqrstuhivwfgxyz{de|}~bc`a^_\](c) 2019 Lucas David TraversoMPL-2.0*Lucas David Traverso stableportable Safe-Inferred #$. dfhjklmnorstuvwxy|}~nolmsrtufxyhvwd|} jk~(c) 2019 Lucas David TraversoMPL-2.0*Lucas David Traverso stableportable Safe-Inferred #$/ JKSTUVXYJKSXYVUT (c) 2019 Lucas David TraversoMPL-2.0*Lucas David Traverso stableportable Safe-Inferred  #$0confererHelper function to get a file from the config specifying the extension and using current env (c) 2019 Lucas David TraversoMPL-2.0*Lucas David Traverso stableportable Safe-Inferred #$2confererThis source takes a source and returns a new source that always checks that the " given always starts with certain  and then strips that prefix before consulting its inner Sourceconferer Create a  from a prefix and another conferer Create a  from a prefix and another  (c) 2019 Lucas David TraversoMPL-2.0*Lucas David Traverso stableportable Safe-Inferred #$3confererStub source that has no keysconfererCreate conferer Create a  (c) 2019 Lucas David TraversoMPL-2.0*Lucas David Traverso stableportable Safe-Inferred #$6Oconferer that uses a config file in config/{env}.properties* and parses it as a properties file with some.key=a value linesconferer Create a  using  to get the path to file and conferer Create a  reading the file and using that as a properties file, but if the file doesn't exist do nothing.conferer Create a ( using some content as a properties fileconferer/Transform a line into a key/value pair (or not)(c) 2019 Lucas David TraversoMPL-2.0*Lucas David Traverso stableportable Safe-Inferred #$stableportable Safe-Inferred #$=conferer(Create a Config mostly used for testing 4 instances without having to create a full config Safe-Inferred  #$= !"#$%&'()*+,-./01234567789:;<=>?@AABCD9EFGHIJKLLMD9ENOPQRRSTUVWXYZ[\]^_`abcdefg h i j k l m n o p p q q r r s s t u  v w x y z { | } ~                                                     D 9      9        D 9     'conferer-1.0.0.1-8YQCtutIsKcDViKAwKr19cConferer.ConfigConferer.Key.InternalConferer.Source.InternalConferer.Config.Internal.TypesConferer.Source.InMemoryConferer.Source.EnvConferer.Source.CLIArgsConferer.Config.InternalConferer.FromConfig.InternalConferer.Source.FilesConferer.Source.NamespacedConferer.Source.NullConferer.Source.PropertiesFileConferer Conferer.TestConferer.SourceSourceConfig Conferer.KeyConferer.FromConfig FromConfigPaths_confererbase Data.Function&KeyunKeymkKeyfromTextkeyName isKeyPrefixOfstripKeyPrefix/.rawKeyComponents unconsKey $fIsStringKey $fShowKey$fEqKey$fOrdKeyIsSourcegetKeyInSourcegetSubkeysInSource$fIsSourceSource $fShowSource SourceCreatorKeyLookupResult MissingKeyFoundInSourcesFoundInDefaults configSourcesconfigDefaultsconfigKeyMappings$fShowKeyLookupResult $fShowConfigInMemorySource configMap fromConfigfromMapfromAssociations$fIsSourceInMemorySource$fShowInMemorySource$fEqInMemorySourcePrefixRawEnvironment EnvSource environment keyPrefix innerSourcefromEnv fromEnvList keyToEnvVar envVarToKey$fIsSourceEnvSource$fShowEnvSource RawCLIArgs CLIArgsSourceoriginalCliArgsfromArgsparseArgsIntoKeyValue$fIsSourceCLIArgsSource$fShowCLIArgsSource MappedKey mappingsChain mappedKey KeyMappinggetKey listSubkeyslistRawSubkeysInSources undoMappings untilJustgetKeysFromMappingsfindAndSplitListgetRawKeyInSourcesgetKeyFromDefaults emptyConfigaddKeyMappings addDefaults addDefault removeDefault addSource addSources$fShowMappedKey $fEqMappedKeyIntoDefaultsWithConNameGintoDefaultsWithConNameG IntoDefaultsG intoDefaultsGFromConfigWithConNameGfetchFromConfigWithConNameG FromConfigGfetchFromConfigGTypeMismatchWithDefaultMissingRequiredKeyConfigParsingErrorFile DefaultConfig configDeffetchFromConfigunFile parseBoolfetchFromConfigByReadfetchFromConfigByIsStringfetchFromConfigWith(addDefaultsAfterDeconstructingToDefaultsthrowConfigParsingErrorconfigParsingErrorthrowMissingRequiredKeymissingRequiredKeythrowMissingRequiredKeysmissingRequiredKeysthrowTypeMismatchWithDefaulttypeMismatchWithDefaultfetchRequiredFromDefaultsfetchFromDefaultsfetchFromRootConfigfetchFromConfigWithDefaultfetchFromRootConfigWithDefault$fIsStringFile$fShowConfigParsingError$fExceptionConfigParsingError$fShowMissingRequiredKey$fExceptionMissingRequiredKey$fShowTypeMismatchWithDefault"$fExceptionTypeMismatchWithDefault$fEqTypeMismatchWithDefault$fFromConfigGM1$fFromConfigWithConNameGM1$fFromConfigWithConNameG:*:$fFromConfigGM10$fIntoDefaultsGK1$fIntoDefaultsGM1$fFromConfigGK1$fFromConfigFile$fFromConfigBool$fFromConfigText$fFromConfigMaybe$fFromConfigByteString$fFromConfigByteString0$fFromConfigFloat$fFromConfigInteger$fFromConfigInt$fFromConfig[]$fFromConfig[]0$fFromConfig() $fFromConfiga$fIntoDefaultsWithConNameGM1$fIntoDefaultsWithConNameG:*:$fIntoDefaultsGM10$fEqMissingRequiredKey$fEqConfigParsingError $fShowFile$fEqFile $fOrdFile $fReadFileDefaultsgetFilePathFromEnvNamespacedSourcescopeKey fromInner$fIsSourceNamespacedSource$fShowNamespacedSource NullSourceempty$fIsSourceNullSource$fShowNullSource$fEqNullSourcePropertiesFileSourceoriginalFilePath fromFilePathfromFileContentlineToKeyValue$fIsSourcePropertiesFileSource$fShowPropertiesFileSourcefetchfetch'fetchKey safeFetchKeyunsafeFetchKeymkConfig mkConfig' configWith text-1.2.3.2Data.Text.InternalText GHC.MaybeNothingcontainers-0.6.2.1Data.Map.InternalMap Data.DynamicDynamicJust GHC.GenericsGenericGHC.IOFilePathGHC.BaseStringghc-prim GHC.TypesBoolGHC.ReadRead Data.StringIsStringversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName