Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Require Node.js 8, add TypeScript definition (#28)
- Loading branch information
1 parent
32a3c39
commit 4ddb7f0
Showing
6 changed files
with
112 additions
and
11 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,4 +2,3 @@ language: node_js | |
node_js: | ||
- '10' | ||
- '8' | ||
- '6' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
/// <reference types="node"/> | ||
import {Stream} from 'stream'; | ||
|
||
export interface Options { | ||
/** | ||
* Maximum length of the returned string. If it exceeds this value before the stream ends, the promise will be rejected with a `MaxBufferError` error. | ||
* | ||
* @default Infinity | ||
*/ | ||
readonly maxBuffer?: number; | ||
} | ||
|
||
export interface OptionsWithEncoding<EncodingType = BufferEncoding> | ||
extends Options { | ||
/** | ||
* [Encoding](https://nodejs.org/api/buffer.html#buffer_buffer) of the incoming stream. | ||
* | ||
* @default 'utf8' | ||
*/ | ||
readonly encoding?: EncodingType; | ||
} | ||
|
||
declare const getStream: { | ||
/** | ||
* Get the `stream` as a string. | ||
* | ||
* @returns A promise that resolves when the end event fires on the stream, indicating that there is no more data to be read. The stream is switched to flowing mode. | ||
*/ | ||
(stream: Stream, options?: OptionsWithEncoding): Promise<string>; | ||
|
||
/** | ||
* Get the `stream` as a buffer. | ||
* | ||
* It honors the `maxBuffer` option as above, but it refers to byte length rather than string length. | ||
*/ | ||
buffer(stream: Stream, options?: OptionsWithEncoding): Promise<Buffer>; | ||
|
||
/** | ||
* Get the `stream` as an array of values. | ||
* | ||
* It honors both the `maxBuffer` and `encoding` options. The behavior changes slightly based on the encoding chosen: | ||
* | ||
* - When `encoding` is unset, it assumes an [object mode stream](https://nodesource.com/blog/understanding-object-streams/) and collects values emitted from `stream` unmodified. In this case `maxBuffer` refers to the number of items in the array (not the sum of their sizes). | ||
* - When `encoding` is set to `buffer`, it collects an array of buffers. `maxBuffer` refers to the summed byte lengths of every buffer in the array. | ||
* - When `encoding` is set to anything else, it collects an array of strings. `maxBuffer` refers to the summed character lengths of every string in the array. | ||
*/ | ||
array<StreamObjectModeType = unknown>( | ||
stream: Stream, | ||
options?: Options | ||
): Promise<StreamObjectModeType[]>; | ||
array( | ||
stream: Stream, | ||
options: OptionsWithEncoding<'buffer'> | ||
): Promise<Buffer[]>; | ||
array( | ||
stream: Stream, | ||
options: OptionsWithEncoding<BufferEncoding> | ||
): Promise<string[]>; | ||
}; | ||
|
||
export default getStream; | ||
|
||
export class MaxBufferError extends Error { | ||
readonly name: 'MaxBufferError'; | ||
constructor(); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
import * as fs from 'fs'; | ||
import {expectType} from 'tsd-check'; | ||
import getStream, {MaxBufferError} from '.'; | ||
|
||
const stream = fs.createReadStream('foo'); | ||
|
||
expectType<Promise<string>>(getStream(stream)); | ||
expectType<Promise<string>>(getStream(stream, {maxBuffer: 10})); | ||
expectType<Promise<string>>(getStream(stream, {encoding: 'utf8'})); | ||
|
||
expectType<Promise<Buffer>>(getStream.buffer(stream)); | ||
expectType<Promise<Buffer>>(getStream.buffer(stream, {maxBuffer: 10})); | ||
expectType<Promise<Buffer>>(getStream.buffer(stream, {encoding: 'utf8'})); | ||
|
||
expectType<Promise<unknown>>(getStream.array(stream)); | ||
expectType<Promise<{}>>(getStream.array<{}>(stream)); | ||
expectType<Promise<unknown>>(getStream.array(stream, {maxBuffer: 10})); | ||
expectType<Promise<Buffer[]>>(getStream.array(stream, {encoding: 'buffer'})); | ||
expectType<Promise<Buffer[]>>( | ||
getStream.array(stream, {maxBuffer: 10, encoding: 'buffer'}) | ||
); | ||
expectType<Promise<string[]>>(getStream.array(stream, {encoding: 'utf8'})); | ||
expectType<Promise<string[]>>( | ||
getStream.array(stream, {maxBuffer: 10, encoding: 'utf8'}) | ||
); | ||
|
||
expectType<typeof MaxBufferError>(MaxBufferError); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters