MCPcopy Create free account
hub / github.com/Effect-TS/effect / toWebResult

Function toWebResult

packages/effect/src/unstable/http/HttpClientRequest.ts:927–973  ·  view source on GitHub ↗
(self: HttpClientRequest, options?: {
  readonly signal?: AbortSignal | undefined
  readonly context?: Context.Context<never> | undefined
})

Source from the content-addressed store, hash-verified

925 * @since 4.0.0
926 */
927export 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
975const isReadableStream = (u: unknown): u is ReadableStream<Uint8Array> =>
976 typeof ReadableStream !== "undefined" && u instanceof ReadableStream

Callers 1

toWebFunction · 0.70

Calls 4

hasBodyFunction · 0.90
isReadableStreamFunction · 0.70
makeMethod · 0.65
failMethod · 0.45

Tested by

no test coverage detected