úÎK|G0?      !"#$%&'()*+,-./0123456789:;<=>None$6] dRepresents the construction of a Component in your application, components may be composed using a ? or @ interface. ZAn event record used to trace the execution of an application initialization and teardownWraps a collection of  records7Contains metadata about the build of a resource from a   valueName of the component built*Cleanup sub-routine of the component built6Elasped time in the allocation of a component resource6Error thrown in the allocation of a component resource+What other components this build depends on%Exception raised on the execution of A& sub-routines used when constructing   values (e.g. buildComponent)KFailure thrown when using the same component key on a Component compositionUFailure thrown when the allocation sub-routine of a Component fails with an exception Failure thrown when calling the  when composing   valuesFailure thrown when calling B fails with an exceptionException thrown by the  runComponentM family of functions 8Failure raised when the Application Callback given to a  runComponentM function throws an exception!!Failure raised when execution of   throws an exception"@Exception that was originally thrown by the Application Callback#6Result from the execution allocated resources teardown$Exceptions thrown by A& sub-routines used when constructing   values (e.g. buildComponent)  !"#$%& !"#$#  %&    !"#$#None$C'C9Track duration time of the execution of an IO sub-routine;Transforms an A sub-routine into a   sub-routine; the given A‚ sub-routine returns a resource that does not allocate any other resources that would need to be cleaned up on a system shutdown.This is similar to using B<, with the caveat that the library will register the given A[ sub-routine as a Component, and it will keep track and report its initialization timespan<øUse this function when you want to allocate a new resource (e.g. Database, Socket, etc). It registers the constructed resource in your application component tree and guarantees that its cleanup sub-routine is executed at the end of your program. This function is similar to the D- function with the caveat that it expects a E9 argument which identifies the component being allocated.>NOTE: The name of your component must be unique; otherwise a  will be thrown= Enhances >& with a callback function that emits  c records. These events are a great way of tracing the lifecycle and structure of your application.>Constructs the  environment& of your application by executing the A sub-routines provided in the < and ;N functions; it then executes a callback where your main application will run.This function:TKeeps track of initialization elapsed time for each component of your applicationJInitializes components concurrently as long as they are composed using @ functionsIBuilds a graph of your dependencies automatically when composing your   values via @ or ?g interfaces; it then guarantees the execution of cleanup operations in a topological sorted order†Guarantees the proper cleanup of previously allocated resources if the creation of a resource throws an exception on initialization†Guarantees best-effort cleanup of resources on application teardown in the scenario where a cleanup sub-routine throws an exceptionŠKeeps track of teardown elasped time for each component of your application; and reports what exceptions was thrown in case of failures[If you want to trace the behavior of your application on initialization and teardown, use = instead<-Unique name for the component being allocated Allocation A sub-routineCleanup A sub-routine=Callback function to trace   records4Name of your application (used for tracing purposes)'Builder of your application environment.Function where your main application will live>4Name of your application (used for tracing purposes)'Builder of your application environment.Function where your main application will live;<=><;>=9Sane resource allocation library for complex applications(c) Roman Gonzalez, 2017-2018MITopen-source@roman-gonzalez.info experimentalNoneE•#   !"#$;<=>*<; >= !"#$#  SafeG FGHIJKLMN          !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGEFHIJKELMNOPQRSTUVWXYZ[\])componentm-0.0.0.2-1CiiSkZ0vt8JdQViYKb6rAControl.Monad.Component&Control.Monad.Component.Internal.Types%Control.Monad.Component.Internal.CorePaths_componentm(exceptions-0.10.0-BUU8s9pCscREfUFAryYPyWControl.Monad.CatchthrowM'teardown-0.5.0.0-6GcQJS1IHC6660pEzTI5iXControl.Teardown.Internal.Types resultError resultListing resultDidFailresultElapsedTimeresultDescription EmptyResult LeafResult BranchResultTeardownResult ComponentMComponentEventComponentBuiltComponentReleasedComponentErrorDetected BuildResult toBuildListBuild componentDesccomponentTeardownbuildElapsedTime buildFailurebuildDependenciesComponentBuildErrorDuplicatedComponentKeyDetectedComponentAllocationFailedComponentErrorThrownComponentIOLiftFailedComponentErrorComponentRuntimeFailedComponentBuildFailedcomponentErrorOriginalExceptioncomponentErrorTeardownResultcomponentErrorBuildErrorsbuildTableToOrderedListbuildTableToTeardown$fPrettyComponentBuildError$fExceptionComponentBuildError$fPrettyComponentError$fExceptionComponentError$fDisplayBuild $fPrettyBuild$fDisplayBuildResult$fPrettyBuildResult$fDisplayComponentEvent$fPrettyComponentEvent$fMonadIOComponentM$fMonadThrowComponentM$fMonadComponentM$fApplicativeComponentM$fFunctorComponentM$fGenericComponentBuildError$fShowComponentBuildError$fGenericComponentError$fShowComponentError$fGenericBuildbuildComponent_buildComponentrunComponentM1 runComponentMbaseGHC.BaseMonad Applicativeghc-prim GHC.TypesIOControl.Monad.IO.ClassliftIOtrackExecutionTime'unliftio-0.2.7.0-576EP1oBkP8F53AhG1QPVDUnliftIO.Exceptionbracket#text-1.2.2.2-EakMpasry3jA6OIwSZhq9MData.Text.InternalTextversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName