h$E@?      !"#$%&'()*+,-./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 conferer Check if a  is a valid fragment of a , meaning that each character  confererChecks if the given  is a valid for a 7. Meaning it is a lower case ascii letter or a number.   (c) 2019 Lucas David TraversoMPL-2.0*Lucas David Traverso stableportable Safe-Inferred #$ L    (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 #$:conferer'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 environment0confererSource 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_KEY5conferer Create a  using 66conferer Create a  using the real environment7conferer Create a # using a hardcoded list of env vars8confererGet the env name from a prefix and a key by uppercasing and intercalating underscores9confererThe opossite of 8 ./0143256789 01432/.56789(c) 2019 Lucas David TraversoMPL-2.0*Lucas David Traverso stableportable Safe-Inferred #$E<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=5000Aconferer Create a  using BBconferer Create a  using C but using real cli argsCconferer Create a # using cli args passed as parameterDconferer8Parse an argument list into a dictionary suitable for a  <=>?@ABCD =>?@unstableportable Safe-Inferred #$>?""Gconferer2A key that has been transformed using one or many K+s, so that that process can be reversed.KconfererAlias for a mapping from one key to another used for transforming keysLconferer"This function runs lookups on the  , first in s in order and then on the  based defaults.MconfererThis function lists all available keys under some key, that could be fetched successfully.Nconferer$This function lists subkeys in some s and combines the resultsOconferer)This function reverses the mappings in a G! to retrieve the original key.Assumes that mappings were really used, otherwise it ignores bad valuesPconfererThis utility function run a list of IO actions and returns the first that return a , if no one does, returns QconfererThis 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.Rconferer/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.Sconferer This function gets a value from #s but ignores mappings and defaultsTconferer+This function gets values from the defaultsUconfererThe empty configuration, this ; is used as the base for most config creating functions.Vconferer*This function adds some key mappings to a Wconferer!This function adds defaults to a Xconferer'This function removes a default from a , this is the oposite of Y>, it deletes the first element of matching type in a certain .Yconferer5This function adds one default of a custom type to a Note that unlike W this function does the toDyn so no need to do it on the user's sideZconfererInstantiate a  using an  and a  and add to the config[confererInstantiate several  s using a s and a ? and add them to the config in the order defined by the listGHIJKLMNOPQRSTUVWXYZ[LKGHIJMNOPQRSTUVWXYZ[ (c) 2019 Lucas David TraversoMPL-2.0*Lucas David Traverso unstableportable Safe-Inferred #$9>?/^confererPurely s machinery, ignore...`confererPurely s machinery, ignore...bconfererPurely s machinery, ignore...dconfererPurely s machinery, ignore...fconferer)Exception to show that some non optional  was missing while trying to rhconferer:Exception to show that a value couldn't be parsed properlylconfererA newtype wrapper for a  to allow implementing p$ with something better than just a nconfererUtility 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 userspconferer8The 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.qconfererThis 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.tconfererHelper function to parse a  from uconferer&Allow the programmer to override this p" instance by providing a special j value.To avoid infinite recursion we remove the Override before calling the value7Helper function to implement fetchFromConfig using the  instancevconferer7Helper function to implement fetchFromConfig using the  instancewconfererHelper function to implement fetchFromConfig using some parsing functionyconfererHelper function does the plumbing of desconstructing a default into smaller defaults, which is usefull for nested r.zconfererHelper function to override the fetching function for a certain key.This function creates a  that when added to the defaults allows overriding the default p instance.{confererHelper function to throw h|confererHelper function to create a h}conferer&Simplified helper function to throw a f~conferer'Simplified helper function to create a fconfererHelper function to throw a fconfererHelper function to create a fconferer,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 r using the root keyconfererSame as r* but adding a user defined default before r*ing so it doesn't throw a MissingKeyErrorconfererSame as  using the root keyyconferer!Function to deconstruct the valueconfererKey where to look for the valueconferer The config(^_`abcdefghijklmnopqrstuvwxyz{|}~(pqrnolmstjkuvwxyzhi{|fg}~debc`a^_(c) 2019 Lucas David TraversoMPL-2.0*Lucas David Traverso stableportable Safe-Inferred #$0 fhjklmnopqruvwyz{|}~pqrnovuwyf}~h{| lmjkz(c) 2019 Lucas David TraversoMPL-2.0*Lucas David Traverso stableportable Safe-Inferred #$1p LMUVWXYZ[LMUZ[YWVX (c) 2019 Lucas David TraversoMPL-2.0*Lucas David Traverso stableportable Safe-Inferred  #$2confererHelper 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 #$4confererThis 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 #$5confererStub source that has no keysconfererCreate conferer Create a  (c) 2019 Lucas David TraversoMPL-2.0*Lucas David Traverso stableportable Safe-Inferred #$8conferer 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  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 #$>confererUse the p! instance to get a value of type a from the config using some default fallback. The most common use for this is creating a custom record and using this function to fetch it at initialization time.This function throws only parsing exceptions when the values are present but malformed somehow ("abc"$ as an Int) but that depends on the p implementation for the type.confererSame as  but it accepts the default as a parameter instead of using the default from oconfererSame as  but you can specify a  instead of the root key which allows you to fetch smaller values when you need them instead of a big one at initialization time.confererSame as  but it returns a  when the value isn't presentconfererSame as , but it throws when the value isn't present.conferer Create a  which reads from command line arguments, env vars and property files that depend on the environment (config/development.properties) by defaultconferer Create a  with the given defaults and source creators. The sources will take precedence by the order they have in the list (earlier in the list means it's tried first). If the requested key is not found in any source it'll be looked up in the defaults. nopr rnop(c) 2019 Lucas David TraversoMPL-2.0*Lucas David Traverso stableportable Safe-Inferred #$?conferer(Create a Config mostly used for testing 4 instances without having to create a full config Safe-Inferred  #$@* !"#$%&'()*+,-./01234567899:;<=>?@ABCCDEF;GHIJKLMNNOF;GPQRSTTUVWXYZ[\]^_`abcdefghi j k l m n o p q r r s s t t u u v w  ; x y z { | } ~                                                    F ;      ;        F ;      'conferer-1.1.0.0-AqPq7EsmydP1K2LZ68AAEgConferer.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 unconsKeyisValidKeyFragmentisKeyCharacter $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 removeDefault addDefault addSource addSources$fShowMappedKey $fEqMappedKeyIntoDefaultsWithConNameGintoDefaultsWithConNameG IntoDefaultsG intoDefaultsGFromConfigWithConNameGfromConfigWithConNameG FromConfigG fromConfigGMissingRequiredKeyConfigParsingErrorOverrideFromConfigFile DefaultConfig configDeffetchFromConfigunFile parseBoolfetchFromConfigByReadfetchFromConfigByIsStringfetchFromConfigWith fromDynamics(addDefaultsAfterDeconstructingToDefaults overrideFetchthrowConfigParsingErrorconfigParsingErrorthrowMissingRequiredKeymissingRequiredKeythrowMissingRequiredKeysmissingRequiredKeysfetchRequiredFromDefaultsfetchFromDefaultsfetchFromRootConfigfetchFromConfigWithDefaultfetchFromRootConfigWithDefault$fIsStringFile$fShowConfigParsingError$fExceptionConfigParsingError$fShowMissingRequiredKey$fExceptionMissingRequiredKey$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 fromFilePath fromFilePath'fromFileContentlineToKeyValue$fIsSourcePropertiesFileSource$fShowPropertiesFileSourcefetchfetch'fetchKey safeFetchKeyunsafeFetchKeymkConfig mkConfig' configWith text-1.2.3.2Data.Text.InternalText GHC.MaybeNothingghc-prim GHC.TypesCharcontainers-0.6.2.1Data.Map.InternalMap Data.DynamicDynamicJust GHC.GenericsGenericGHC.IOFilePathGHC.BaseStringBoolGHC.ReadRead Data.StringIsStringversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName