diff --git a/definitions/npm/p-filter_v1.x.x/flow_v0.70.x-/p-filter_v1.x.x.js b/definitions/npm/p-filter_v1.x.x/flow_v0.70.x-/p-filter_v1.x.x.js new file mode 100644 index 0000000000..e8125da8a0 --- /dev/null +++ b/definitions/npm/p-filter_v1.x.x/flow_v0.70.x-/p-filter_v1.x.x.js @@ -0,0 +1,7 @@ +declare module 'p-filter' { + declare export default function PFilter( + input: Iterable | T>, + filterer: (element: T, index: number) => boolean | Promise, + options?: { concurrency?: number }, + ): Promise>; +} diff --git a/definitions/npm/p-filter_v1.x.x/test_p-filter_v1.x.x.js b/definitions/npm/p-filter_v1.x.x/test_p-filter_v1.x.x.js new file mode 100644 index 0000000000..bbd1dbdccb --- /dev/null +++ b/definitions/npm/p-filter_v1.x.x/test_p-filter_v1.x.x.js @@ -0,0 +1,35 @@ +import pFilter from 'p-filter'; +import { it } from 'flow-typed-test'; + +it('handles correct inputs and return type', () => { + (pFilter([1, 2, 3], (el: number, index: number) => true): Promise< + Array, + >); + (pFilter( + ['a', 'b', Promise.resolve('c')], + (el: string, index: number) => false, + { concurrency: 2 }, + ): Promise>); +}); + +it('errors on invalid filterer element type', () => { + // $ExpectError + pFilter(['a', 'b', Promise.resolve(3)], (el: string, index: number) => true); +}); + +it('errors on invalid filterer return type', () => { + // $ExpectError + pFilter([1, 2, Promise.resolve(3)], (el: number, index: number) => null); +}); + +it('errors on invalid return type', () => { + // $ExpectError + (pFilter([1, 2, 3], (el: number, index: number) => true): Promise< + Array, + >); +}); + +it('errors on invalid options', () => { + // $ExpectError + pFilter([1, 2, 3], (el: number, index: number) => true, { concurrency: '1' }); +});