!}v\~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}None %&'+16<QV <servant-reflexkSimple data type to represent the target of HTTP requests for servant's automatically-generated clients.servant-reflexURI scheme to useservant-reflexhttp://servant-reflexhttps://  None &'3<NQV]*z!servant-reflex:You must wrap the parameter of a QueryParam endpoint with !U to indicate whether the parameter is valid and present, validly absent, or invalid"servant-reflexA valid query parameter#servant-reflexLIndication that the parameter is intentionally absent (the request is valid)$servant-reflex@Indication that your validation failed (the request isn't valid)'servant-reflexAribtrarily modify requests just before they are sent. Warning: This escape hatch opens the possibility for your requests to diverge from what the server expects, when the server is also derived from a servant API(servant-reflexThe result of a request event)servant-reflex<The succesfully decoded response from a request tagged with tag*servant-reflex]The failure response, which may have failed decoding or had a non-successful response code+servant-reflex/A failure to construct the request tagged with tag at trigger time.servant-reflexySimple filter/accessor for successful responses, when you want to ignore the error case. For example: >> goodResponses  -fmapMaybe reqSuccess <$ clientFun triggers/servant-reflexSimple filter/accessor like ., but keeping the request tag0servant-reflex+Simple filter/accessor for any failure case1servant-reflexSimple filter/accessor like 0, but keeping the request tag2servant-reflex/Simple filter/accessor for the raw XHR response3servant-reflexRetrieve response tag:servant-reflex"This function performs the request;servant-reflexIssues a collection of requests when the supplied Event fires. When ALL requests from a given firing complete, the results are collected and returned via the return Event.<servant-reflexkA modified version or Reflex.Dom.Xhr.performRequestsAsync that accepts 'f (Either e (XhrRequestb))' eventsAservant-reflexMUtility for simultaneously accessing/filtering Success and Failure response ~s,Bservant-reflexMUtility for simultaneously accessing/filtering Success and Failure response ~s, but keeping the request tag4 !$#"%&'(+*),-./0123456789:;<=>?@ABCDEF4(+*)%&',-./0123!$#"4 56789:;<=>?@ABCDEFNone,-.;<=>?FKNQSTVq Jservant-reflexThis class lets us define how each API combinator influences the creation of an HTTP request. It's mostly an internal class, you can just use N.Nservant-reflexN@ allows you to produce operations to query an API from a client. type MyApi = "books" :> Get '[JSON] [Book] -- GET /books :<|> "books" :> ReqBody '[JSON] Book :> Post '[JSON] Book -- POST /books myApi :: Proxy MyApi myApi = Proxy getAllBooks :: Event t l -> m (Event t (l, ReqResult [Book])) postNewBook :: Dynamic t (Maybe Book) -> Event t l4> m (Event t (l, ReqResult Book))) > (getAllBooks : |\ postNewBook) = client myApi host > where host = constDyn $ BaseUrl Http "localhost" 8080Pservant-reflexLike O but allows passing a function which will process the result event in some way. This can be used to handle errors in a uniform way across call sites.Vservant-reflex"Make the querying function append path to the request path.Wservant-reflex If you use a  in one of your endpoints in your API, the corresponding querying function will automatically take an additional argument of the type specified by your g. That function will take care of encoding this argument as JSON and of using it as the request body.(All you need is for your type to have a ToJSON instance.Example: type MyApi = "books" :> ReqBody '[JSON] Book :> Post '[JSON] Book myApi :: Proxy MyApi myApi = Proxy addBook :: Book -> ExceptT String IO Book addBook = client myApi host where host = BaseUrl Http "localhost" 8080 -- then you can just use "addBook" to query that endpointXservant-reflex'Send a raw 'XhrRequest ()' directly to baseurlYservant-reflex If you use a s in one of your endpoints in your API, the corresponding querying function will automatically take an additional  argument. If you give ,, nothing will be added to the query string.lOtherwise, this function will insert a value-less query string parameter under the name associated to your .Example: ztype MyApi = "books" :> QueryFlag "published" :> Get '[JSON] [Book] myApi :: Proxy MyApi myApi = Proxy getBooks :: Bool -> ExceptT String IO [Book] getBooks = client myApi host where host = BaseUrl Http "localhost" 8080 -- then you can just use "getBooks" to query that endpoint. -- 'getBooksBy False' for all books -- 'getBooksBy True' to only get _already published_ booksZservant-reflex If you use a  in one of your endpoints in your API, the corresponding querying function will automatically take an additional argument, a list of values of the type specified by your .EIf you give an empty list, nothing will be added to the query string.Otherwise, this function will take care of inserting a textual representation of your values in the query string, under the same query string parameter name.OYou can control how values for your type are turned into text by specifying a  instance for your type.Example: type MyApi = "books" :> QueryParams "authors" Text :> Get '[JSON] [Book] myApi :: Proxy MyApi myApi = Proxy getBooksBy :: [Text] -> ExceptT String IO [Book] getBooksBy = client myApi host where host = BaseUrl Http "localhost" 8080 -- then you can just use "getBooksBy" to query that endpoint. -- 'getBooksBy []' for all books -- 'getBooksBy ["Isaac Asimov", "Robert A. Heinlein"]' -- to get all books by Asimov and Heinlein[servant-reflex If you use a  in one of your endpoints in your API, the corresponding querying function will automatically take an additional argument of the type specified by your , enclosed in Maybe.?If you give Nothing, nothing will be added to the query string.If you give a non-n value, this function will take care of inserting a textual representation of this value in the query string.OYou can control how values for your type are turned into text by specifying a  instance for your type.Example: type MyApi = "books" :> QueryParam "author" Text :> Get '[JSON] [Book] myApi :: Proxy MyApi myApi = Proxy getBooksBy :: Maybe Text -> ExceptT String IO [Book] getBooksBy = client myApi host where host = BaseUrl Http "localhost" 8080 -- then you can just use "getBooksBy" to query that endpoint. -- 'getBooksBy Nothing' for all books -- 'getBooksBy (Just "Isaac Asimov")' to get all books by Isaac Asimov\servant-reflexUsing a = combinator in your API doesn't affect the client functions.6 !"#$%&'()*+,-.0234567;>?@HIJKMLNOPQ6NOPLMHIQJK !"#$%&'()*+,-.0234567;>?@None,-.;<=>?FNSTVukservant-reflex A version of client] that sets the withCredentials flag on requests. Use this function for clients of CORS API's!"#$()*+-./02ghijkjk!"#$-()*+./02ghi      !"#$%&'())*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~+servant-reflex-0.3.4-20rAtUi5DT0JqEOyi1vESSServant.Common.BaseUrlServant.Common.ReqServant.ReflexServant.Reflex.MultiBaseUrl BaseFullUrlBasePathSchemeHttpHttpsSupportsServantReflex showBaseUrl baseUrlWidget $fEqBaseUrl $fShowScheme $fReadScheme $fEqScheme $fOrdScheme$fGenericScheme $fOrdBaseUrl $fReadBaseUrl $fShowBaseUrl$fGenericBaseUrl XhrPayloadReq reqMethod reqPathPartsqParamsreqBodyheaders respHeadersauthData QueryPartQueryPartParamQueryPartParams QueryPartFlagQParam QParamSomeQNone QParamInvalid ClientOptionsoptsRequestFixup ReqResultResponseSuccessResponseFailureRequestFailuredefaultClientOptionswithCredentials reqSuccess reqSuccess' reqFailure reqFailure'responsereqTagqParamToQueryPartdefReqprependToPathParts addHeaderreqToReflexRequestdisplayHttpRequestperformRequestsperformSomeRequestsAsyncperformSomeRequestsAsync'bytesToPayloadperformRequestsCTperformRequestsNoBody evalResponse fanReqResult fanReqResult'notefmapL builderToTextescape$fFunctorReqResultBuildHeaderKeysTobuildHeaderKeysTo HasClientClientclientWithRouteclientWithRouteAndResultHandlerclientclientWithOptsclientWithOptsAndResultHandler toHeaders$fHasClientTYPEtm:>tag$fHasClientTYPEtm:>tag0$fHasClientTYPEtm:>tag1$fHasClientTYPEtm:>tag2$fHasClientTYPEtm:>tag3$fHasClientTYPEtm:>tag4$fHasClientTYPEtmRawtag$fHasClientTYPEtm:>tag5$fHasClientTYPEtm:>tag6$fHasClientTYPEtm:>tag7$fHasClientTYPEtm:>tag8$fHasClientTYPEtm:>tag9$fHasClientTYPEtmVerbtag$fHasClientTYPEtmVerbtag0$fHasClientTYPEtm:>tag10$fHasClientTYPEtm:<|>tag$fHasClientTYPEtmVerbtag1$fHasClientTYPEtmVerbtag2$fBuildHeaderKeysTo[]:$fBuildHeaderKeysTo[][]$fHasClientTYPEtm:>tag11HasClientMulti ClientMulticlientWithRouteMulticlientAclientWithOptsA$fHasClientMultikTYPEtm:>ftag$fHasClientMultikTYPEtm:>ftag0$fHasClientMultikTYPEtm:>ftag1$fHasClientMultikTYPEtm:>ftag2$fHasClientMultikTYPEtm:>ftag3$fHasClientMultikTYPEtm:>ftag4!$fHasClientMulti(->)TYPEtmRawftag$fHasClientMultikTYPEtm:>ftag5$fHasClientMultikTYPEtm:>ftag6$fHasClientMultikTYPEtm:>ftag7$fHasClientMultikTYPEtm:>ftag8 $fHasClientMulti(->)TYPEtm:>ftag"$fHasClientMulti(->)TYPEtmVerbftag#$fHasClientMulti(->)TYPEtmVerbftag0#$fHasClientMulti(->)TYPEtmVerbftag1#$fHasClientMulti(->)TYPEtmVerbftag2!$fHasClientMulti(->)TYPEtm:>ftag0$fHasClientMultikTYPEtm:<|>ftag reflex-0.5-5Df3LzdmmrMbxyZsb3rHG Reflex.ClassEvent%servant-0.14.1-8nM9mub2nBgLfG1PSK2vlZServant.API.ReqBodyReqBodyServant.API.QueryParam QueryFlagghc-prim GHC.TypesBoolFalse QueryParams,http-api-data-0.3.8.1-ImQOterWXLW7FOEQJo4xU7Web.Internal.HttpApiData ToHttpApiData QueryParambaseGHC.BaseNothing(http-types-0.12.1-GrpELT1BwSZHH8qr3E2SOsNetwork.HTTP.Types.Version HttpVersion