import { HtmlRequest, MarkdownRequest, MergeRequest, OfficeRequest, PingRequest, Request, RequestType, UrlRequest, } from '../_types' /** * Adjust Request fields, by changing `type` * @return new typed Request, doesn't modify original Request */ export const type: { (type: RequestType.Url): (request: Request) => UrlRequest (type: RequestType.Ping): (request: Request) => PingRequest (type: RequestType.Html): (request: Request) => HtmlRequest (type: RequestType.Merge): (request: Request) => MergeRequest (type: RequestType.Office): (request: Request) => OfficeRequest (type: RequestType.Markdown): (request: Request) => MarkdownRequest } = (type: RequestType) => (request: Request): any => { if ('type' in request && request.type !== RequestType.Undefined) { throw new Error( `Cannot set "${RequestType[type]}" conversion, already set to "${RequestType[request.type]}"` ) } return { ...request, type, } }