(self: HttpClientRequest, options?: {
readonly signal?: AbortSignal | undefined
readonly context?: Context.Context<never> | undefined
})
| 925 | * @since 4.0.0 |
| 926 | */ |
| 927 | export const toWebResult = (self: HttpClientRequest, options?: { |
| 928 | readonly signal?: AbortSignal | undefined |
| 929 | readonly context?: Context.Context<never> | undefined |
| 930 | }): Result.Result<Request, Url.UrlError> => { |
| 931 | const url = Url.make(self.url, self.urlParams, Option.getOrUndefined(self.hash)) |
| 932 | if (Result.isFailure(url)) { |
| 933 | return Result.fail(url.failure) |
| 934 | } |
| 935 | const requestInit: RequestInit = { |
| 936 | method: self.method, |
| 937 | headers: self.headers |
| 938 | } |
| 939 | if (options?.signal) { |
| 940 | requestInit.signal = options.signal |
| 941 | } |
| 942 | if (hasBody(self.method)) { |
| 943 | switch (self.body._tag) { |
| 944 | case "Empty": { |
| 945 | break |
| 946 | } |
| 947 | case "Raw": { |
| 948 | requestInit.body = self.body.body as any |
| 949 | if (isReadableStream(self.body.body)) { |
| 950 | ;(requestInit as any).duplex = "half" |
| 951 | } |
| 952 | break |
| 953 | } |
| 954 | case "Uint8Array": { |
| 955 | requestInit.body = self.body.body as any |
| 956 | break |
| 957 | } |
| 958 | case "FormData": { |
| 959 | requestInit.body = self.body.formData |
| 960 | break |
| 961 | } |
| 962 | case "Stream": { |
| 963 | requestInit.body = Stream.toReadableStreamWith(self.body.stream, options?.context ?? Context.empty()) |
| 964 | ;(requestInit as any).duplex = "half" |
| 965 | break |
| 966 | } |
| 967 | } |
| 968 | } |
| 969 | return Result.try({ |
| 970 | try: () => new Request(url.success, requestInit), |
| 971 | catch: (cause) => new Url.UrlError({ cause }) |
| 972 | }) |
| 973 | } |
| 974 | |
| 975 | const isReadableStream = (u: unknown): u is ReadableStream<Uint8Array> => |
| 976 | typeof ReadableStream !== "undefined" && u instanceof ReadableStream |
no test coverage detected