Skip to content

Commit 3915ea8

Browse files
authored
fix(NODE-3559): incorrect GridFS stream type (#2981)
1 parent 122b9f3 commit 3915ea8

File tree

3 files changed

+25
-8
lines changed

3 files changed

+25
-8
lines changed

src/gridfs/download.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ export interface GridFSBucketReadStreamPrivate {
7373
* Do not instantiate this class directly. Use `openDownloadStream()` instead.
7474
* @public
7575
*/
76-
export class GridFSBucketReadStream extends Readable {
76+
export class GridFSBucketReadStream extends Readable implements NodeJS.ReadableStream {
7777
/** @internal */
7878
s: GridFSBucketReadStreamPrivate;
7979

src/gridfs/upload.ts

+11-7
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ export interface GridFSBucketWriteStreamOptions extends WriteConcernOptions {
3737
* Do not instantiate this class directly. Use `openUploadStream()` instead.
3838
* @public
3939
*/
40-
export class GridFSBucketWriteStream extends Writable {
40+
export class GridFSBucketWriteStream extends Writable implements NodeJS.WritableStream {
4141
bucket: GridFSBucket;
4242
chunks: Collection<GridFSChunk>;
4343
filename: string;
@@ -118,12 +118,16 @@ export class GridFSBucketWriteStream extends Writable {
118118
* @param callback - Function to call when the chunk was added to the buffer, or if the entire chunk was persisted to MongoDB if this chunk caused a flush.
119119
* @returns False if this write required flushing a chunk to MongoDB. True otherwise.
120120
*/
121-
write(chunk: Buffer): boolean;
122-
write(chunk: Buffer, callback: Callback<void>): boolean;
123-
write(chunk: Buffer, encoding: BufferEncoding | undefined): boolean;
124-
write(chunk: Buffer, encoding: BufferEncoding | undefined, callback: Callback<void>): boolean;
121+
write(chunk: Buffer | string): boolean;
122+
write(chunk: Buffer | string, callback: Callback<void>): boolean;
123+
write(chunk: Buffer | string, encoding: BufferEncoding | undefined): boolean;
125124
write(
126-
chunk: Buffer,
125+
chunk: Buffer | string,
126+
encoding: BufferEncoding | undefined,
127+
callback: Callback<void>
128+
): boolean;
129+
write(
130+
chunk: Buffer | string,
127131
encodingOrCallback?: Callback<void> | BufferEncoding,
128132
callback?: Callback<void>
129133
): boolean {
@@ -417,7 +421,7 @@ function createFilesDoc(
417421

418422
function doWrite(
419423
stream: GridFSBucketWriteStream,
420-
chunk: Buffer,
424+
chunk: Buffer | string,
421425
encoding?: BufferEncoding,
422426
callback?: Callback<void>
423427
): boolean {

test/types/gridfs_types.test-d.ts

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { Readable } from 'stream';
2+
import { expectType } from 'tsd';
3+
import type { GridFSBucket, GridFSBucketWriteStream } from '../../src';
4+
5+
(function test(bucket: GridFSBucket) {
6+
const readable = new Readable();
7+
8+
const uploadStream = bucket.openUploadStream('test');
9+
expectType<GridFSBucketWriteStream>(uploadStream);
10+
11+
// should be pipeable as a WriteStream
12+
readable.pipe(uploadStream);
13+
})({} as GridFSBucket);

0 commit comments

Comments
 (0)