!B1      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None,-2=>?@AHMUVX$6servant-foreign"a static path segment. like "/foo"servant-foreigna capture. like "/:userid"kservant-foreignUtility class used by }o which computes the data needed to generate a function for each endpoint and hands it all back in a list.sservant-foreigns maps Haskell types with types in the target language of your backend. For example, let's say you're implementing a backend to some language XU, and you want a Text representation of each input/output type mentioned in the API: -- First you need to create a dummy type to parametrize your -- instances. data LangX -- Otherwise you define instances for the types you need instance HasForeignType LangX Text Int where typeFor _ _ _ = "intX" -- Or for example in case of lists instance HasForeignType LangX Text a => HasForeignType LangX Text [a] where typeFor lang type _ = "listX of " <> typeFor lang ftype (Proxy :: Proxy a)lFinally to generate list of information about all the endpoints for an API you create a function of a form: getEndpoints :: (HasForeign LangX Text api, GenerateList Text (Foreign Text api)) => Proxy api -> [Req Text] getEndpoints api = listFromAPI (Proxy :: Proxy LangX) (Proxy :: Proxy Text) api |-- If language __X__ is dynamically typed then you can use -- a predefined NoTypes parameter with the NoContent output type: getEndpoints :: (HasForeign NoTypes NoContent api, GenerateList Text (Foreign NoContent api)) => Proxy api -> [Req NoContent] getEndpoints api = listFromAPI (Proxy :: Proxy NoTypes) (Proxy :: Proxy NoContent) api }servant-foreign8Generate the necessary data for codegen as a list, each V/ describing one endpoint from your API type.servant-foreign*TODO: doesn't taking framing into account.W #$%&'+-,./0126798:;<@BADCEFJKLMONPQRVW^]\[ZYX_a`bcklmnoqprstuvwxyz{|}W  '&#$%012/+-,.<;:6798FE@BADCKJQPLMONRcb_a`VW^]\[ZYX{zyxwvu|stroqpmnkl}None,>servant-foreign;Function name builder that simply concat each part togetherservant-foreignpFunction name builder using the snake_case convention. each part is separated by a single underscore character.servant-foreigneFunction name builder using the CamelCase convention. each part begins with an upper case character.None,      !"#$%&'()*+,-./0123456789 #$%&'+.,-/126789:;<@ABCDEFJLMNOPQVWXYZ[\]^_`abcklopqrstuvwxyz{|}Q+.,-@ABCD6789VWXYZ[\]^_`a#$%LMNO/ {yxuvzwbcEFJPQ&':;<opqstklr21|}:       !"#$$%&'()*+,-./01234566789:;<=>??@ABCDEFGHIJJKLMNOPQRSSTUVWXYZ[\]^_`abcdefghiijklmnopqrstuvwxyz{|}~      !"#"$"%&'()()*+*,-.-/-0-1-2-3-4-5-6-7-8-9-:-:;<;=;>?@?A?A?B?CDEDEFGHIJKIJLIJMIJNIJOP+servant-foreign-0.15-7gQ81ns4IyX7bXhNDhySmrServant.Foreign.InternalServant.Foreign.InflectionsServant.Foreign FunctionNameunFunctionName$fDataFunctionName$fShowFunctionName$fEqFunctionName$fSemigroupFunctionName$fMonoidFunctionName PathSegment unPathSegment _FunctionName$fDataPathSegment$fShowPathSegment$fEqPathSegment$fIsStringPathSegment$fSemigroupPathSegment$fMonoidPathSegmentArg_argName_argType _PathSegment $fDataArg$fEqArg $fShowArg SegmentTypeStaticCapargNameargTypeargPath$fDataSegmentType$fEqSegmentType$fShowSegmentTypeSegment unSegment_Static_Cap $fDataSegment $fEqSegment $fShowSegmentArgTypeNormalFlagListPath_Segment isCapture captureArg $fDataArgType $fEqArgType $fShowArgTypeQueryArg _queryArgName _queryArgType_Normal_Flag_List$fDataQueryArg $fEqQueryArg$fShowQueryArg HeaderArgReplaceHeaderArg _headerArg_headerPattern queryArgName queryArgType$fDataHeaderArg $fEqHeaderArg$fShowHeaderArg headerArg headerPatternUrl_path _queryStr _HeaderArg_ReplaceHeaderArgdefUrl $fDataUrl$fEqUrl $fShowUrlReq_reqUrl _reqMethod _reqHeaders_reqBody_reqReturnType _reqFuncName_reqBodyContentTypeReqBodyContentType ReqBodyJSONReqBodyMultipartpathqueryStr$fDataReqBodyContentType$fEqReqBodyContentType$fShowReqBodyContentType$fReadReqBodyContentType $fDataReq$fEqReq $fShowReq GenerateList generateListEmptyForeignAPI HasForeignForeign foreignForNoTypesHasForeignTypetypeForreqBodyreqBodyContentType reqFuncName reqHeaders reqMethod reqReturnTypereqUrldefReq listFromAPI*$fHasForeignTypeTYPEkNoTypesNoContentftype$fHasForeignklangftype:>$fHasForeignklangftype:>0$fHasForeignklangftype:>1&$fHasForeignklangftypeWithNamedContext$fHasForeignklangftype:>2$fHasForeignklangftype:>3$fHasForeignklangftype:>4$fHasForeignklangftype:>5$fHasForeignklangftype:>6$fHasForeignklangftype:>7$fHasForeignklangftypeRaw$fHasForeignklangftype:>8$fHasForeignklangftype:>9$fHasForeignklangftype:>10$fHasForeignklangftype:>11$fHasForeignklangftypeStream$fHasForeignklangftypeVerb$fHasForeignklangftype:>12$fHasForeignklangftype:>13$fHasForeignklangftype:<|>$fHasForeignklangftypeEmptyAPI$fGenerateListftype:<|>$fGenerateListftypeReq"$fGenerateListftypeEmptyForeignAPI concatCaseL concatCase snakeCaseL snakeCase camelCaseL camelCasebaseData.Type.BoolIf(http-api-data-0.4-2eCIIi897xRFO453YwHv2XWeb.Internal.HttpApiData ToHttpApiData toUrlPiecetoEncodedUrlPiecetoHeader toQueryParamFromHttpApiData parseUrlPiece parseHeaderparseQueryParam(http-types-0.12.2-3MHM9iMYLVB570tAcpCyghNetwork.HTTP.Types.Version HttpVersion httpMajor httpMinorNetwork.HTTP.Types.Method StdMethodGETPOSTHEADPUTDELETETRACECONNECTOPTIONSPATCH*network-uri-2.6.1.0-K75fCYvLQE41EntOQ30cqK Network.URIURI uriScheme uriAuthorityuriPathuriQuery uriFragment#servant-0.15-2a7SBGEROHzDCNgJSw8q3s Servant.LinkssafeLinkLinkHasLinkMkLinktoLinkServant.API.StreamStream StreamGet StreamPost StreamBody StreamBody'SourceIO ToSourceIO toSourceIO FromSourceIO fromSourceIO FramingRender framingRenderFramingUnrenderframingUnrender NoFramingNewlineFramingNetstringFramingServant.API.WithNamedContextWithNamedContextServant.API.TypeLevelIsElem'IsElemServant.API.VerbsVerbGetPostPutDeletePatch PostCreated PutCreated GetAccepted PostAcceptedDeleteAccepted PatchAccepted PutAcceptedGetNonAuthoritativePostNonAuthoritativeDeleteNonAuthoritativePatchNonAuthoritativePutNonAuthoritative GetNoContent PostNoContentDeleteNoContentPatchNoContent PutNoContentGetResetContentPostResetContentGetPartialContent ReflectMethod reflectMethodServant.API.Sub:>Servant.API.ResponseHeaderslookupResponseHeadernoHeader addHeaderHeaders getResponsegetHeadersHListResponseHeaderHeader MissingHeaderUndecodableHeaderHListHNilHConsBuildHeadersTobuildHeadersTo GetHeaders getHeaders AddHeaderHasResponseHeaderServant.API.ReqBodyReqBodyReqBody'Servant.API.RemoteHost RemoteHostServant.API.RawRawServant.API.QueryParam QueryParam QueryParam' QueryParams QueryFlagServant.API.HeaderHeader'Servant.API.ModifiersRequiredOptionalLenientStrictServant.API.IsSecureIsSecureSecure NotSecureServant.API.Experimental.Auth AuthProtectServant.API.EmptyEmptyAPIServant.API.DescriptionSummary DescriptionServant.API.ContentTypesJSON PlainTextFormUrlEncoded OctetStreamAccept contentType contentTypes MimeRender mimeRender MimeUnrender mimeUnrendermimeUnrenderWithType NoContentServant.API.CaptureCaptureCapture' CaptureAllServant.API.BasicAuth BasicAuth BasicAuthDatabasicAuthUsernamebasicAuthPasswordServant.API.Alternative:<|>$vault-0.3.1.2-BAI1Z0HFsmpED5xJPH6rA9Data.Vault.LazyVault+singleton-bool-0.1.4-BswWCJ6C1foFLbVlo6nj0aData.Singletons.BoolSBoolIsboolSBoolSFalseSTrue