MCPcopy
hub / github.com/Effect-TS/effect / arrayBuffer

Function arrayBuffer

packages/platform-browser/src/internal/httpClient.ts:245–282  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

243
244 _arrayBufferEffect: Effect.Effect<ArrayBuffer, E> | undefined
245 get arrayBuffer(): Effect.Effect<ArrayBuffer, E> {
246 if (this._arrayBufferEffect) {
247 return this._arrayBufferEffect
248 }
249 return this._arrayBufferEffect = Effect.async<ArrayBuffer, E>((resume) => {
250 if (this.source.readyState === 4) {
251 resume(Effect.succeed(this.source.response))
252 return
253 }
254
255 const onReadyStateChange = () => {
256 if (this.source.readyState === 4) {
257 resume(Effect.succeed(this.source.response))
258 }
259 }
260 const onError = () => {
261 resume(Effect.fail(this.onError(this.source.statusText)))
262 }
263 this.source.addEventListener("readystatechange", onReadyStateChange)
264 this.source.addEventListener("error", onError)
265 return Effect.sync(() => {
266 this.source.removeEventListener("readystatechange", onReadyStateChange)
267 this.source.removeEventListener("error", onError)
268 })
269 }).pipe(
270 Effect.map((response) => {
271 if (typeof response === "string") {
272 const arr = encoder.encode(response)
273 return arr.byteLength !== arr.buffer.byteLength
274 ? arr.buffer.slice(arr.byteOffset, arr.byteOffset + arr.byteLength)
275 : arr.buffer
276 }
277 return response
278 }),
279 Effect.cached,
280 Effect.runSync
281 )
282 }
283}
284
285class ClientResponseImpl extends IncomingMessageImpl<Error.ResponseError> implements ClientResponse.HttpClientResponse {

Callers

nothing calls this directly

Calls 7

addEventListenerMethod · 0.80
syncMethod · 0.80
removeEventListenerMethod · 0.80
encodeMethod · 0.80
pipeMethod · 0.65
mapMethod · 0.65
resumeFunction · 0.50

Tested by

no test coverage detected