Odoo GraphQL Subscription using Node, Express JS for Sample
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

27 lines
1.3 KiB

4 months ago
// @ts-ignore
import asyncIterator from './iterators/async.mjs';
// @ts-ignore
import nodeStreamIterator from './iterators/nodeStream.mjs';
// @ts-ignore
import promiseIterator from './iterators/promise.mjs';
// @ts-ignore
import readerIterator from './iterators/reader.mjs';
const hasIterator = typeof Symbol !== 'undefined' && Symbol.asyncIterator;
/**
* @param response A response. Supports fetch, node-fetch, and cross-fetch
*/ export default function responseIterator(response) {
if (response === undefined) throw new Error('Missing response for responseIterator');
// determine the body
let body = response;
if (response.body) body = response.body;
else if (response.data) body = response.data;
else if (response._bodyBlob) body = response._bodyBlob; // cross-fetch
/* c8 ignore stop */ // adapt the body
if (hasIterator && body[Symbol.asyncIterator]) return asyncIterator(body);
/* c8 ignore start */ if (body.getReader) return readerIterator(body.getReader());
if (body.stream) return readerIterator(body.stream().getReader());
if (body.arrayBuffer) return promiseIterator(body.arrayBuffer());
if (body.pipe) return nodeStreamIterator(body);
/* c8 ignore stop */ throw new Error('Unknown body type for responseIterator. Maybe you are not passing a streamable response');
};