response-iterator
Advanced tools
Comparing version 0.1.1 to 0.2.0
@@ -65,15 +65,18 @@ 'use strict'; | ||
/** | ||
* @param response A response. Supports fetch, node-fetch, and cross-fetch | ||
*/ | ||
function responseIterator(response) { | ||
if (response === undefined) throw new Error("Missing response for responseIterator"); // node-fetch | ||
if (response === undefined) throw new Error("Missing response for responseIterator"); // node node-fetch | ||
if (response.body && response.body[Symbol.asyncIterator] !== undefined) return streamIterator(response.body); | ||
/* c8 ignore start */ | ||
// browser fetch | ||
else if (response.body && response.body.getReader) return readerIterator(response.body.getReader()); // browser cross-fetch | ||
else if (response._bodyBlob) return promiseIterator(response._bodyBlob.arrayBuffer()); | ||
// browser fetch or undici | ||
else if (response.body && response.body.getReader) return readerIterator(response.body.getReader()); // cross platform axios | ||
else if (response.data) { | ||
if (response.data.stream) return readerIterator(response.data.stream().getReader());else if (response.data[Symbol.asyncIterator] !== undefined) return streamIterator(response.data); | ||
} // browser cross-fetch | ||
else if (response._bodyBlob) return promiseIterator(response._bodyBlob.arrayBuffer()); // node got | ||
else if (response.readable && response[Symbol.asyncIterator] !== undefined) return streamIterator(response); | ||
/* c8 ignore stop */ | ||
@@ -80,0 +83,0 @@ |
@@ -57,15 +57,18 @@ function streamIterator(stream) { | ||
/** | ||
* @param response A response. Supports fetch, node-fetch, and cross-fetch | ||
*/ | ||
function responseIterator(response) { | ||
if (response === undefined) throw new Error("Missing response for responseIterator"); // node-fetch | ||
if (response === undefined) throw new Error("Missing response for responseIterator"); // node node-fetch | ||
if (response.body && response.body[Symbol.asyncIterator] !== undefined) return streamIterator(response.body); | ||
/* c8 ignore start */ | ||
// browser fetch | ||
else if (response.body && response.body.getReader) return readerIterator(response.body.getReader()); // browser cross-fetch | ||
else if (response._bodyBlob) return promiseIterator(response._bodyBlob.arrayBuffer()); | ||
// browser fetch or undici | ||
else if (response.body && response.body.getReader) return readerIterator(response.body.getReader()); // cross platform axios | ||
else if (response.data) { | ||
if (response.data.stream) return readerIterator(response.data.stream().getReader());else if (response.data[Symbol.asyncIterator] !== undefined) return streamIterator(response.data); | ||
} // browser cross-fetch | ||
else if (response._bodyBlob) return promiseIterator(response._bodyBlob.arrayBuffer()); // node got | ||
else if (response.readable && response[Symbol.asyncIterator] !== undefined) return streamIterator(response); | ||
/* c8 ignore stop */ | ||
@@ -72,0 +75,0 @@ |
@@ -0,9 +1,13 @@ | ||
import { AxiosResponse } from "axios"; | ||
import { Response as GotResponse } from "got"; | ||
import { Response as NodeResponse } from "node-fetch"; | ||
import { Response as UndiciResponse } from "undici"; | ||
interface CrossFetchResponse { | ||
_bodyBlob: Blob; | ||
} | ||
export declare type ResponseType = AxiosResponse | CrossFetchResponse | GotResponse | NodeResponse | Response | UndiciResponse; | ||
/** | ||
* @param response A response. Supports fetch, node-fetch, and cross-fetch | ||
*/ | ||
export default function responseIterator<T>(response: Response | NodeResponse | CrossFetchResponse): AsyncIterableIterator<T>; | ||
export default function responseIterator<T>(response: ResponseType): AsyncIterableIterator<T>; | ||
export {}; |
@@ -69,15 +69,18 @@ (function (global, factory) { | ||
/** | ||
* @param response A response. Supports fetch, node-fetch, and cross-fetch | ||
*/ | ||
function responseIterator(response) { | ||
if (response === undefined) throw new Error("Missing response for responseIterator"); // node-fetch | ||
if (response === undefined) throw new Error("Missing response for responseIterator"); // node node-fetch | ||
if (response.body && response.body[Symbol.asyncIterator] !== undefined) return streamIterator(response.body); | ||
/* c8 ignore start */ | ||
// browser fetch | ||
else if (response.body && response.body.getReader) return readerIterator(response.body.getReader()); // browser cross-fetch | ||
else if (response._bodyBlob) return promiseIterator(response._bodyBlob.arrayBuffer()); | ||
// browser fetch or undici | ||
else if (response.body && response.body.getReader) return readerIterator(response.body.getReader()); // cross platform axios | ||
else if (response.data) { | ||
if (response.data.stream) return readerIterator(response.data.stream().getReader());else if (response.data[Symbol.asyncIterator] !== undefined) return streamIterator(response.data); | ||
} // browser cross-fetch | ||
else if (response._bodyBlob) return promiseIterator(response._bodyBlob.arrayBuffer()); // node got | ||
else if (response.readable && response[Symbol.asyncIterator] !== undefined) return streamIterator(response); | ||
/* c8 ignore stop */ | ||
@@ -84,0 +87,0 @@ |
@@ -1,2 +0,2 @@ | ||
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e="undefined"!=typeof globalThis?globalThis:e||self).responseIterator=n()}(this,(function(){"use strict";function e(e,n,r){return n in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}return function(n){if(void 0===n)throw new Error("Missing response for responseIterator");if(n.body&&void 0!==n.body[Symbol.asyncIterator])return i=n.body,u=i[Symbol.asyncIterator](),e({next:function(){return u.next()}},Symbol.asyncIterator,(function(){return this}));if(n.body&&n.body.getReader)return t=n.body.getReader(),e({next:function(){return t.read()}},Symbol.asyncIterator,(function(){return this}));if(n._bodyBlob)return r=n._bodyBlob.arrayBuffer(),o=!1,e({next:function(){return o?Promise.resolve({value:void 0,done:!0}):(o=!0,new Promise((function(e,n){r.then((function(n){e({value:n,done:!1})})).catch(n)})))}},Symbol.asyncIterator,(function(){return this}));var r,o,t,i,u;throw new Error("Unknown body type for responseIterator")}})); | ||
!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r():"function"==typeof define&&define.amd?define(r):(e="undefined"!=typeof globalThis?globalThis:e||self).responseIterator=r()}(this,(function(){"use strict";function e(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function r(r){var t=r[Symbol.asyncIterator]();return e({next:function(){return t.next()}},Symbol.asyncIterator,(function(){return this}))}function t(r){return e({next:function(){return r.read()}},Symbol.asyncIterator,(function(){return this}))}return function(n){if(void 0===n)throw new Error("Missing response for responseIterator");if(n.body&&void 0!==n.body[Symbol.asyncIterator])return r(n.body);if(n.body&&n.body.getReader)return t(n.body.getReader());if(n.data){if(n.data.stream)return t(n.data.stream().getReader());if(void 0!==n.data[Symbol.asyncIterator])return r(n.data)}else{if(n._bodyBlob)return o=n._bodyBlob.arrayBuffer(),a=!1,e({next:function(){return a?Promise.resolve({value:void 0,done:!0}):(a=!0,new Promise((function(e,r){o.then((function(r){e({value:r,done:!1})})).catch(r)})))}},Symbol.asyncIterator,(function(){return this}));if(n.readable&&void 0!==n[Symbol.asyncIterator])return r(n)}var o,a;throw new Error("Unknown body type for responseIterator")}})); | ||
//# sourceMappingURL=response-iterator.min.js.map |
{ | ||
"name": "response-iterator", | ||
"description": "Creates an async iterator for a variety of inputs in the browser and node. Supports fetch, node-fetch, and cross-fetch", | ||
"version": "0.1.1", | ||
"version": "0.2.0", | ||
"author": { | ||
@@ -28,4 +28,4 @@ "email": "kmalakoff@gmail.com", | ||
"test:ci": "npm run pretest && nvu engines npm run test:node && npm run test:browser", | ||
"test:debug": "mocha --config .config/mocharc.json \"test/**/*.test.*\"", | ||
"test:node": "mocha --config .config/mocharc.json \"test/exports/*.test.*\" && rimraf coverage && c8 --config .config/c8rc.json mocha --config .config/mocharc.json \"test/unit/*.test.*\"", | ||
"test:debug": "mocha --config .config/mocharc.json \"test/**/*.{test,test-node}.*\"", | ||
"test:node": "mocha --config .config/mocharc.json \"test/exports/*.test.*\" && rimraf coverage && c8 --config .config/c8rc.json mocha --config .config/mocharc.json \"test/unit/*.{test,test-node}.*\"", | ||
"version": "npm run docs && git add docs" | ||
@@ -47,2 +47,3 @@ }, | ||
"asyncIterator", | ||
"axios", | ||
"blob", | ||
@@ -53,2 +54,3 @@ "body", | ||
"fetch", | ||
"got", | ||
"isomorphic-fetch", | ||
@@ -61,3 +63,4 @@ "iteration", | ||
"stream", | ||
"typescript" | ||
"typescript", | ||
"undici" | ||
], | ||
@@ -76,2 +79,3 @@ "devDependencies": { | ||
"allow-require-me": "^1.0.0", | ||
"axios": "^0.22.0", | ||
"c8": "^7.10.0", | ||
@@ -87,2 +91,3 @@ "camelcase": "^6.2.0", | ||
"gh-pages": "^3.2.3", | ||
"got": "^11.8.2", | ||
"isomorphic-fetch": "^3.0.0", | ||
@@ -111,2 +116,3 @@ "karma": "^6.3.4", | ||
"typescript": "^4.4.3", | ||
"undici": "^4.7.1", | ||
"webpack": "^5.58.1" | ||
@@ -113,0 +119,0 @@ }, |
## response-iterator | ||
Creates an async iterator for a variety of inputs in the browser and node. Supports fetch, node-fetch, and cross-fetch | ||
Creates an async iterator for a variety of inputs in the browser and node. Supports fetch, node-fetch, cross-fetch, axios, got, undici. | ||
@@ -20,4 +20,19 @@ ### Example 1 | ||
### Example 2 | ||
```typescript | ||
import crossFetch from "cross-fetch"; | ||
import responseIterator from "response-iterator"; | ||
const res = await crossFetch("https://raw.githubusercontent.com/kmalakoff/response-iterator/master/package.json"); | ||
let data = ""; | ||
for await (const chunk of responseIterator(res)) { | ||
data += chunk; | ||
} | ||
console.log(JSON.parse(data).name); // "response-iterator" | ||
``` | ||
### Documentation | ||
[API Docs](https://kmalakoff.github.io/response-iterator/) |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
37227
242
38
48