-
-
Notifications
You must be signed in to change notification settings - Fork 32
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Refactor TypeScript definition to CommonJS compatible export (#31)
- Loading branch information
1 parent
e53a3f4
commit 0c3b07d
Showing
5 changed files
with
99 additions
and
54 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 |
---|---|---|
@@ -1,66 +1,108 @@ | ||
/// <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; | ||
declare class MaxBufferErrorClass extends Error { | ||
readonly name: 'MaxBufferError'; | ||
constructor(); | ||
} | ||
|
||
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 namespace getStream { | ||
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; | ||
} | ||
|
||
interface OptionsWithEncoding<EncodingType = BufferEncoding> extends Options { | ||
/** | ||
[Encoding](https://nodejs.org/api/buffer.html#buffer_buffer) of the incoming stream. | ||
@default 'utf8' | ||
*/ | ||
readonly encoding?: EncodingType; | ||
} | ||
|
||
type MaxBufferError = MaxBufferErrorClass; | ||
} | ||
|
||
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 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. | ||
@example | ||
``` | ||
import * as fs from 'fs'; | ||
import getStream = require('get-stream'); | ||
(async () => { | ||
const stream = fs.createReadStream('unicorn.txt'); | ||
console.log(await getStream(stream)); | ||
// ,,))))))));, | ||
// __)))))))))))))), | ||
// \|/ -\(((((''''((((((((. | ||
// -*-==//////(('' . `)))))), | ||
// /|\ ))| o ;-. '((((( ,(, | ||
// ( `| / ) ;))))' ,_))^;(~ | ||
// | | | ,))((((_ _____------~~~-. %,;(;(>';'~ | ||
// o_); ; )))(((` ~---~ `:: \ %%~~)(v;(`('~ | ||
// ; ''''```` `: `:::|\,__,%% );`'; ~ | ||
// | _ ) / `:|`----' `-' | ||
// ______/\/~ | / / | ||
// /~;;.____/;;' / ___--,-( `;;;/ | ||
// / // _;______;'------~~~~~ /;;/\ / | ||
// // | | / ; \;;,\ | ||
// (<_ | ; /',/-----' _> | ||
// \_| ||_ //~;~~~~~~~~~ | ||
// `\_| (,~~ | ||
// \~\ | ||
// ~~ | ||
})(); | ||
``` | ||
*/ | ||
(stream: Stream, options?: getStream.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 a buffer. | ||
It honors the `maxBuffer` option as above, but it refers to byte length rather than string length. | ||
*/ | ||
buffer( | ||
stream: Stream, | ||
options?: getStream.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. | ||
*/ | ||
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 | ||
options?: getStream.Options | ||
): Promise<StreamObjectModeType[]>; | ||
array( | ||
stream: Stream, | ||
options: OptionsWithEncoding<'buffer'> | ||
options: getStream.OptionsWithEncoding<'buffer'> | ||
): Promise<Buffer[]>; | ||
array( | ||
stream: Stream, | ||
options: OptionsWithEncoding<BufferEncoding> | ||
options: getStream.OptionsWithEncoding<BufferEncoding> | ||
): Promise<string[]>; | ||
}; | ||
|
||
export default getStream; | ||
MaxBufferError: typeof MaxBufferErrorClass; | ||
|
||
export class MaxBufferError extends Error { | ||
readonly name: 'MaxBufferError'; | ||
constructor(); | ||
} | ||
// TODO: Remove this for the next major release | ||
default: typeof getStream; | ||
}; | ||
|
||
export = getStream; |
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
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