Skip to content

Commit

Permalink
Document how to create Blobs (#95)
Browse files Browse the repository at this point in the history
  • Loading branch information
ehmicky authored Aug 12, 2023
1 parent 4a8acc0 commit 94bb6de
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 2 deletions.
11 changes: 11 additions & 0 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,17 @@ const {body: readableStream} = await fetch('https://example.com');
console.log(await getStream(readableStream.pipeThrough(textDecoderStream)));
```

### Blobs

[`getStreamAsArrayBuffer()`](#getstreamasarraybufferstream-options) can be used to create [Blobs](https://developer.mozilla.org/en-US/docs/Web/API/Blob).

```js
import {getStreamAsArrayBuffer} from 'get-stream';

const stream = fs.createReadStream('unicorn.txt');
console.log(new Blob([await getStreamAsArrayBuffer(stream)]));
```

## FAQ

### How is this different from [`concat-stream`](https://github.com/maxogden/concat-stream)?
Expand Down
12 changes: 10 additions & 2 deletions test.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import {Buffer, constants as BufferConstants} from 'node:buffer';
import {Buffer, constants as BufferConstants, Blob} from 'node:buffer';
import {setTimeout} from 'node:timers/promises';
import {spawn} from 'node:child_process';
import {createReadStream} from 'node:fs';
import {open, opendir} from 'node:fs/promises';
import {version as nodeVersion} from 'node:process';
import {Duplex} from 'node:stream';
import {text, buffer, arrayBuffer} from 'node:stream/consumers';
import {text, buffer, arrayBuffer, blob} from 'node:stream/consumers';
import test from 'ava';
import getStream, {getStreamAsBuffer, getStreamAsArrayBuffer, getStreamAsArray, MaxBufferError} from './index.js';

Expand Down Expand Up @@ -438,6 +438,14 @@ test.serial('getStreamAsArrayBuffer() behaves like arrayBuffer()', async t => {
t.deepEqual(nativeResult, customResult);
});

test.serial('getStreamAsArrayBuffer() can behave like blob()', async t => {
const [nativeResult, customResult] = await Promise.all([
blob(createStream([bigArrayBuffer])),
setupArrayBuffer([bigArrayBuffer]),
]);
t.deepEqual(nativeResult, new Blob([customResult]));
});

test.serial('getStreamAsArray() behaves like readable.toArray()', async t => {
const [nativeResult, customResult] = await Promise.all([
createStream([bigArray]).toArray(),
Expand Down

0 comments on commit 94bb6de

Please sign in to comment.