You're Invited:Meet the Socket Team at RSAC and BSidesSF 2026, March 23–26.RSVP
Socket
Book a DemoSign in
Socket

@proc7ts/push-iterator

Package Overview
Dependencies
Maintainers
1
Versions
16
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@proc7ts/push-iterator - npm Package Compare versions

Comparing version
1.0.0-dev.1
to
1.0.0
+2
-2
d.ts/call-thru/iterable-call-chain.d.ts

@@ -6,3 +6,3 @@ /**

import type { CallChain, NextCall, NextSkip } from '@proc7ts/call-thru';
import type { PushIterable } from '../push-iterable';
import type { PushOrRawIterable } from '../push-iterable';
/**

@@ -21,3 +21,3 @@ * A call chain transforming elements of iterable.

*/
iterate<T>(pass: (this: void, arg: T) => any, iterable: Iterable<T> | PushIterable<T>): void;
iterate<T>(pass: (this: void, arg: T) => any, iterable: PushOrRawIterable<T>): void;
}

@@ -24,0 +24,0 @@ export declare namespace IterableCallChain {

@@ -1,1 +0,1 @@

{"version":3,"file":"iterable-call-chain.d.ts","sourceRoot":"","sources":["../../src/call-thru/iterable-call-chain.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD;;;;GAIG;AACH,MAAM,WAAW,iBAAkB,SAAQ,SAAS;IAElD;;;;;;OAMG;IACH,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,KAAK,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CAE9F;AAED,yBAAiB,iBAAiB,CAAC;IAEjC,KAAY,IAAI,CAAC,OAAO,IAAI,OAAO,SAAS,QAAQ,CAAC,GAAG,CAAC,GACnD,KAAK,GACL,CAAC,OAAO,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GACxD,CAAC,GACD,CAAC,OAAO,CAAC,CAAC,CAAC;IAErB,KAAY,GAAG,CAAC,OAAO,IAAI,OAAO,SAAS,QAAQ,CAAC,GAAG,CAAC,GAClD,KAAK,GACL,CAAC,OAAO,SAAS,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,GACtD,CAAC,GACD,OAAO,CAAC,CAAC;CAEpB"}
{"version":3,"file":"iterable-call-chain.d.ts","sourceRoot":"","sources":["../../src/call-thru/iterable-call-chain.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D;;;;GAIG;AACH,MAAM,WAAW,iBAAkB,SAAQ,SAAS;IAElD;;;;;;OAMG;IACH,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,KAAK,GAAG,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CAErF;AAED,yBAAiB,iBAAiB,CAAC;IAEjC,KAAY,IAAI,CAAC,OAAO,IAAI,OAAO,SAAS,QAAQ,CAAC,GAAG,CAAC,GACnD,KAAK,GACL,CAAC,OAAO,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GACxD,CAAC,GACD,CAAC,OAAO,CAAC,CAAC,CAAC;IAErB,KAAY,GAAG,CAAC,OAAO,IAAI,OAAO,SAAS,QAAQ,CAAC,GAAG,CAAC,GAClD,KAAK,GACL,CAAC,OAAO,SAAS,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,GACtD,CAAC,GACD,OAAO,CAAC,CAAC;CAEpB"}

@@ -6,3 +6,3 @@ /**

import { NextCall } from '@proc7ts/call-thru';
import type { PushIterable } from '../push-iterable';
import type { PushOrRawIterable } from '../push-iterable';
import type { IterableCallChain } from './iterable-call-chain';

@@ -21,3 +21,3 @@ /**

*/
export declare function nextIterate<T>(iterable: Iterable<T> | PushIterable<T>): NextCall<IterableCallChain, [T], T>;
export declare function nextIterate<T>(iterable: PushOrRawIterable<T>): NextCall<IterableCallChain, [T], T>;
//# sourceMappingURL=next-iterate.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"next-iterate.d.ts","sourceRoot":"","sources":["../../src/call-thru/next-iterate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,QAAQ,EAAY,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAE3G"}
{"version":3,"file":"next-iterate.d.ts","sourceRoot":"","sources":["../../src/call-thru/next-iterate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,QAAQ,EAAY,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAElG"}

@@ -1,2 +0,2 @@

import type { PushIterable } from '../push-iterable';
import type { PushIterable, PushOrRawIterable } from '../push-iterable';
import type { IterableCallChain } from './iterable-call-chain';

@@ -12,16 +12,16 @@ declare type Args<TReturn> = IterableCallChain.Args<TReturn>;

*/
export declare function thruIt<T, TReturn1>(it: Iterable<T> | PushIterable<T>, pass1: (this: void, arg: T) => TReturn1): PushIterable<Out<TReturn1>>;
export declare function thruIt<T, TReturn1, TArgs2 extends Args<TReturn1>, TReturn2>(it: Iterable<T> | PushIterable<T>, pass1: (this: void, arg: T) => TReturn1, pass2: (this: void, ...args: TArgs2) => TReturn2): PushIterable<Out<TReturn2>>;
export declare function thruIt<T, TReturn1, TArgs2 extends Args<TReturn1>, TReturn2, TArgs3 extends Args<TReturn2>, TReturn3>(it: Iterable<T> | PushIterable<T>, pass1: (this: void, arg: T) => TReturn1, pass2: (this: void, ...args: TArgs2) => TReturn2, pass3: (this: void, ...args: TArgs3) => TReturn3): PushIterable<Out<TReturn3>>;
export declare function thruIt<T, TReturn1, TArgs2 extends Args<TReturn1>, TReturn2, TArgs3 extends Args<TReturn2>, TReturn3, TArgs4 extends Args<TReturn3>, TReturn4>(it: Iterable<T> | PushIterable<T>, pass1: (this: void, arg: T) => TReturn1, pass2: (this: void, ...args: TArgs2) => TReturn2, pass3: (this: void, ...args: TArgs3) => TReturn3, pass4: (this: void, ...args: TArgs4) => TReturn4): PushIterable<Out<TReturn4>>;
export declare function thruIt<T, TReturn1, TArgs2 extends Args<TReturn1>, TReturn2, TArgs3 extends Args<TReturn2>, TReturn3, TArgs4 extends Args<TReturn3>, TReturn4, TArgs5 extends Args<TReturn4>, TReturn5>(it: Iterable<T> | PushIterable<T>, pass1: (this: void, arg: T) => TReturn1, pass2: (this: void, ...args: TArgs2) => TReturn2, pass3: (this: void, ...args: TArgs3) => TReturn3, pass4: (this: void, ...args: TArgs4) => TReturn4, pass5: (this: void, ...args: TArgs5) => TReturn5): PushIterable<Out<TReturn4>>;
export declare function thruIt<T, TReturn1, TArgs2 extends Args<TReturn1>, TReturn2, TArgs3 extends Args<TReturn2>, TReturn3, TArgs4 extends Args<TReturn3>, TReturn4, TArgs5 extends Args<TReturn4>, TReturn5, TArgs6 extends Args<TReturn5>, TReturn6>(it: Iterable<T> | PushIterable<T>, pass1: (this: void, arg: T) => TReturn1, pass2: (this: void, ...args: TArgs2) => TReturn2, pass3: (this: void, ...args: TArgs3) => TReturn3, pass4: (this: void, ...args: TArgs4) => TReturn4, pass5: (this: void, ...args: TArgs5) => TReturn5, pass6: (this: void, ...args: TArgs6) => TReturn6): PushIterable<Out<TReturn4>>;
export declare function thruIt<T, TReturn1, TArgs2 extends Args<TReturn1>, TReturn2, TArgs3 extends Args<TReturn2>, TReturn3, TArgs4 extends Args<TReturn3>, TReturn4, TArgs5 extends Args<TReturn4>, TReturn5, TArgs6 extends Args<TReturn5>, TReturn6, TArgs7 extends Args<TReturn6>, TReturn7>(it: Iterable<T> | PushIterable<T>, pass1: (this: void, arg: T) => TReturn1, pass2: (this: void, ...args: TArgs2) => TReturn2, pass3: (this: void, ...args: TArgs3) => TReturn3, pass4: (this: void, ...args: TArgs4) => TReturn4, pass5: (this: void, ...args: TArgs5) => TReturn5, pass6: (this: void, ...args: TArgs6) => TReturn6, pass7: (this: void, ...args: TArgs7) => TReturn7): PushIterable<Out<TReturn4>>;
export declare function thruIt<T, TReturn1, TArgs2 extends Args<TReturn1>, TReturn2, TArgs3 extends Args<TReturn2>, TReturn3, TArgs4 extends Args<TReturn3>, TReturn4, TArgs5 extends Args<TReturn4>, TReturn5, TArgs6 extends Args<TReturn5>, TReturn6, TArgs7 extends Args<TReturn6>, TReturn7, TArgs8 extends Args<TReturn7>, TReturn8>(it: Iterable<T> | PushIterable<T>, pass1: (this: void, arg: T) => TReturn1, pass2: (this: void, ...args: TArgs2) => TReturn2, pass3: (this: void, ...args: TArgs3) => TReturn3, pass4: (this: void, ...args: TArgs4) => TReturn4, pass5: (this: void, ...args: TArgs5) => TReturn5, pass6: (this: void, ...args: TArgs6) => TReturn6, pass7: (this: void, ...args: TArgs7) => TReturn7, pass8: (this: void, ...args: TArgs8) => TReturn8): PushIterable<Out<TReturn4>>;
export declare function thruIt<T, TReturn1, TArgs2 extends Args<TReturn1>, TReturn2, TArgs3 extends Args<TReturn2>, TReturn3, TArgs4 extends Args<TReturn3>, TReturn4, TArgs5 extends Args<TReturn4>, TReturn5, TArgs6 extends Args<TReturn5>, TReturn6, TArgs7 extends Args<TReturn6>, TReturn7, TArgs8 extends Args<TReturn7>, TReturn8, TArgs9 extends Args<TReturn8>, TReturn9>(it: Iterable<T> | PushIterable<T>, pass1: (this: void, arg: T) => TReturn1, pass2: (this: void, ...args: TArgs2) => TReturn2, pass3: (this: void, ...args: TArgs3) => TReturn3, pass4: (this: void, ...args: TArgs4) => TReturn4, pass5: (this: void, ...args: TArgs5) => TReturn5, pass6: (this: void, ...args: TArgs6) => TReturn6, pass7: (this: void, ...args: TArgs7) => TReturn7, pass8: (this: void, ...args: TArgs8) => TReturn8, pass9: (this: void, ...args: TArgs9) => TReturn9): PushIterable<Out<TReturn4>>;
export declare function thruIt<T, TReturn1, TArgs2 extends Args<TReturn1>, TReturn2, TArgs3 extends Args<TReturn2>, TReturn3, TArgs4 extends Args<TReturn3>, TReturn4, TArgs5 extends Args<TReturn4>, TReturn5, TArgs6 extends Args<TReturn5>, TReturn6, TArgs7 extends Args<TReturn6>, TReturn7, TArgs8 extends Args<TReturn7>, TReturn8, TArgs9 extends Args<TReturn8>, TReturn9, TArgs10 extends Args<TReturn9>, TReturn10>(it: Iterable<T> | PushIterable<T>, pass1: (this: void, arg: T) => TReturn1, pass2: (this: void, ...args: TArgs2) => TReturn2, pass3: (this: void, ...args: TArgs3) => TReturn3, pass4: (this: void, ...args: TArgs4) => TReturn4, pass5: (this: void, ...args: TArgs5) => TReturn5, pass6: (this: void, ...args: TArgs6) => TReturn6, pass7: (this: void, ...args: TArgs7) => TReturn7, pass8: (this: void, ...args: TArgs8) => TReturn8, pass9: (this: void, ...args: TArgs9) => TReturn9, pass10: (this: void, ...args: TArgs10) => TReturn10): PushIterable<Out<TReturn4>>;
export declare function thruIt<T, TReturn1, TArgs2 extends Args<TReturn1>, TReturn2, TArgs3 extends Args<TReturn2>, TReturn3, TArgs4 extends Args<TReturn3>, TReturn4, TArgs5 extends Args<TReturn4>, TReturn5, TArgs6 extends Args<TReturn5>, TReturn6, TArgs7 extends Args<TReturn6>, TReturn7, TArgs8 extends Args<TReturn7>, TReturn8, TArgs9 extends Args<TReturn8>, TReturn9, TArgs10 extends Args<TReturn9>, TReturn10, TArgs11 extends Args<TReturn10>, TReturn11>(it: Iterable<T> | PushIterable<T>, pass1: (this: void, arg: T) => TReturn1, pass2: (this: void, ...args: TArgs2) => TReturn2, pass3: (this: void, ...args: TArgs3) => TReturn3, pass4: (this: void, ...args: TArgs4) => TReturn4, pass5: (this: void, ...args: TArgs5) => TReturn5, pass6: (this: void, ...args: TArgs6) => TReturn6, pass7: (this: void, ...args: TArgs7) => TReturn7, pass8: (this: void, ...args: TArgs8) => TReturn8, pass9: (this: void, ...args: TArgs9) => TReturn9, pass10: (this: void, ...args: TArgs10) => TReturn10, pass11: (this: void, ...args: TArgs11) => TReturn11): PushIterable<Out<TReturn4>>;
export declare function thruIt<T, TReturn1, TArgs2 extends Args<TReturn1>, TReturn2, TArgs3 extends Args<TReturn2>, TReturn3, TArgs4 extends Args<TReturn3>, TReturn4, TArgs5 extends Args<TReturn4>, TReturn5, TArgs6 extends Args<TReturn5>, TReturn6, TArgs7 extends Args<TReturn6>, TReturn7, TArgs8 extends Args<TReturn7>, TReturn8, TArgs9 extends Args<TReturn8>, TReturn9, TArgs10 extends Args<TReturn9>, TReturn10, TArgs11 extends Args<TReturn10>, TReturn11, TArgs12 extends Args<TReturn11>, TReturn12>(it: Iterable<T> | PushIterable<T>, pass1: (this: void, arg: T) => TReturn1, pass2: (this: void, ...args: TArgs2) => TReturn2, pass3: (this: void, ...args: TArgs3) => TReturn3, pass4: (this: void, ...args: TArgs4) => TReturn4, pass5: (this: void, ...args: TArgs5) => TReturn5, pass6: (this: void, ...args: TArgs6) => TReturn6, pass7: (this: void, ...args: TArgs7) => TReturn7, pass8: (this: void, ...args: TArgs8) => TReturn8, pass9: (this: void, ...args: TArgs9) => TReturn9, pass10: (this: void, ...args: TArgs10) => TReturn10, pass11: (this: void, ...args: TArgs11) => TReturn11, pass12: (this: void, ...args: TArgs12) => TReturn12): PushIterable<Out<TReturn4>>;
export declare function thruIt<T, TReturn1, TArgs2 extends Args<TReturn1>, TReturn2, TArgs3 extends Args<TReturn2>, TReturn3, TArgs4 extends Args<TReturn3>, TReturn4, TArgs5 extends Args<TReturn4>, TReturn5, TArgs6 extends Args<TReturn5>, TReturn6, TArgs7 extends Args<TReturn6>, TReturn7, TArgs8 extends Args<TReturn7>, TReturn8, TArgs9 extends Args<TReturn8>, TReturn9, TArgs10 extends Args<TReturn9>, TReturn10, TArgs11 extends Args<TReturn10>, TReturn11, TArgs12 extends Args<TReturn11>, TReturn12, TArgs13 extends Args<TReturn12>, TReturn13>(it: Iterable<T> | PushIterable<T>, pass1: (this: void, arg: T) => TReturn1, pass2: (this: void, ...args: TArgs2) => TReturn2, pass3: (this: void, ...args: TArgs3) => TReturn3, pass4: (this: void, ...args: TArgs4) => TReturn4, pass5: (this: void, ...args: TArgs5) => TReturn5, pass6: (this: void, ...args: TArgs6) => TReturn6, pass7: (this: void, ...args: TArgs7) => TReturn7, pass8: (this: void, ...args: TArgs8) => TReturn8, pass9: (this: void, ...args: TArgs9) => TReturn9, pass10: (this: void, ...args: TArgs10) => TReturn10, pass11: (this: void, ...args: TArgs11) => TReturn11, pass12: (this: void, ...args: TArgs12) => TReturn12, pass13: (this: void, ...args: TArgs13) => TReturn13): PushIterable<Out<TReturn4>>;
export declare function thruIt<T, TReturn1>(it: PushOrRawIterable<T>, pass1: (this: void, arg: T) => TReturn1): PushIterable<Out<TReturn1>>;
export declare function thruIt<T, TReturn1, TArgs2 extends Args<TReturn1>, TReturn2>(it: PushOrRawIterable<T>, pass1: (this: void, arg: T) => TReturn1, pass2: (this: void, ...args: TArgs2) => TReturn2): PushIterable<Out<TReturn2>>;
export declare function thruIt<T, TReturn1, TArgs2 extends Args<TReturn1>, TReturn2, TArgs3 extends Args<TReturn2>, TReturn3>(it: PushOrRawIterable<T>, pass1: (this: void, arg: T) => TReturn1, pass2: (this: void, ...args: TArgs2) => TReturn2, pass3: (this: void, ...args: TArgs3) => TReturn3): PushIterable<Out<TReturn3>>;
export declare function thruIt<T, TReturn1, TArgs2 extends Args<TReturn1>, TReturn2, TArgs3 extends Args<TReturn2>, TReturn3, TArgs4 extends Args<TReturn3>, TReturn4>(it: PushOrRawIterable<T>, pass1: (this: void, arg: T) => TReturn1, pass2: (this: void, ...args: TArgs2) => TReturn2, pass3: (this: void, ...args: TArgs3) => TReturn3, pass4: (this: void, ...args: TArgs4) => TReturn4): PushIterable<Out<TReturn4>>;
export declare function thruIt<T, TReturn1, TArgs2 extends Args<TReturn1>, TReturn2, TArgs3 extends Args<TReturn2>, TReturn3, TArgs4 extends Args<TReturn3>, TReturn4, TArgs5 extends Args<TReturn4>, TReturn5>(it: PushOrRawIterable<T>, pass1: (this: void, arg: T) => TReturn1, pass2: (this: void, ...args: TArgs2) => TReturn2, pass3: (this: void, ...args: TArgs3) => TReturn3, pass4: (this: void, ...args: TArgs4) => TReturn4, pass5: (this: void, ...args: TArgs5) => TReturn5): PushIterable<Out<TReturn4>>;
export declare function thruIt<T, TReturn1, TArgs2 extends Args<TReturn1>, TReturn2, TArgs3 extends Args<TReturn2>, TReturn3, TArgs4 extends Args<TReturn3>, TReturn4, TArgs5 extends Args<TReturn4>, TReturn5, TArgs6 extends Args<TReturn5>, TReturn6>(it: PushOrRawIterable<T>, pass1: (this: void, arg: T) => TReturn1, pass2: (this: void, ...args: TArgs2) => TReturn2, pass3: (this: void, ...args: TArgs3) => TReturn3, pass4: (this: void, ...args: TArgs4) => TReturn4, pass5: (this: void, ...args: TArgs5) => TReturn5, pass6: (this: void, ...args: TArgs6) => TReturn6): PushIterable<Out<TReturn4>>;
export declare function thruIt<T, TReturn1, TArgs2 extends Args<TReturn1>, TReturn2, TArgs3 extends Args<TReturn2>, TReturn3, TArgs4 extends Args<TReturn3>, TReturn4, TArgs5 extends Args<TReturn4>, TReturn5, TArgs6 extends Args<TReturn5>, TReturn6, TArgs7 extends Args<TReturn6>, TReturn7>(it: PushOrRawIterable<T>, pass1: (this: void, arg: T) => TReturn1, pass2: (this: void, ...args: TArgs2) => TReturn2, pass3: (this: void, ...args: TArgs3) => TReturn3, pass4: (this: void, ...args: TArgs4) => TReturn4, pass5: (this: void, ...args: TArgs5) => TReturn5, pass6: (this: void, ...args: TArgs6) => TReturn6, pass7: (this: void, ...args: TArgs7) => TReturn7): PushIterable<Out<TReturn4>>;
export declare function thruIt<T, TReturn1, TArgs2 extends Args<TReturn1>, TReturn2, TArgs3 extends Args<TReturn2>, TReturn3, TArgs4 extends Args<TReturn3>, TReturn4, TArgs5 extends Args<TReturn4>, TReturn5, TArgs6 extends Args<TReturn5>, TReturn6, TArgs7 extends Args<TReturn6>, TReturn7, TArgs8 extends Args<TReturn7>, TReturn8>(it: PushOrRawIterable<T>, pass1: (this: void, arg: T) => TReturn1, pass2: (this: void, ...args: TArgs2) => TReturn2, pass3: (this: void, ...args: TArgs3) => TReturn3, pass4: (this: void, ...args: TArgs4) => TReturn4, pass5: (this: void, ...args: TArgs5) => TReturn5, pass6: (this: void, ...args: TArgs6) => TReturn6, pass7: (this: void, ...args: TArgs7) => TReturn7, pass8: (this: void, ...args: TArgs8) => TReturn8): PushIterable<Out<TReturn4>>;
export declare function thruIt<T, TReturn1, TArgs2 extends Args<TReturn1>, TReturn2, TArgs3 extends Args<TReturn2>, TReturn3, TArgs4 extends Args<TReturn3>, TReturn4, TArgs5 extends Args<TReturn4>, TReturn5, TArgs6 extends Args<TReturn5>, TReturn6, TArgs7 extends Args<TReturn6>, TReturn7, TArgs8 extends Args<TReturn7>, TReturn8, TArgs9 extends Args<TReturn8>, TReturn9>(it: PushOrRawIterable<T>, pass1: (this: void, arg: T) => TReturn1, pass2: (this: void, ...args: TArgs2) => TReturn2, pass3: (this: void, ...args: TArgs3) => TReturn3, pass4: (this: void, ...args: TArgs4) => TReturn4, pass5: (this: void, ...args: TArgs5) => TReturn5, pass6: (this: void, ...args: TArgs6) => TReturn6, pass7: (this: void, ...args: TArgs7) => TReturn7, pass8: (this: void, ...args: TArgs8) => TReturn8, pass9: (this: void, ...args: TArgs9) => TReturn9): PushIterable<Out<TReturn4>>;
export declare function thruIt<T, TReturn1, TArgs2 extends Args<TReturn1>, TReturn2, TArgs3 extends Args<TReturn2>, TReturn3, TArgs4 extends Args<TReturn3>, TReturn4, TArgs5 extends Args<TReturn4>, TReturn5, TArgs6 extends Args<TReturn5>, TReturn6, TArgs7 extends Args<TReturn6>, TReturn7, TArgs8 extends Args<TReturn7>, TReturn8, TArgs9 extends Args<TReturn8>, TReturn9, TArgs10 extends Args<TReturn9>, TReturn10>(it: PushOrRawIterable<T>, pass1: (this: void, arg: T) => TReturn1, pass2: (this: void, ...args: TArgs2) => TReturn2, pass3: (this: void, ...args: TArgs3) => TReturn3, pass4: (this: void, ...args: TArgs4) => TReturn4, pass5: (this: void, ...args: TArgs5) => TReturn5, pass6: (this: void, ...args: TArgs6) => TReturn6, pass7: (this: void, ...args: TArgs7) => TReturn7, pass8: (this: void, ...args: TArgs8) => TReturn8, pass9: (this: void, ...args: TArgs9) => TReturn9, pass10: (this: void, ...args: TArgs10) => TReturn10): PushIterable<Out<TReturn4>>;
export declare function thruIt<T, TReturn1, TArgs2 extends Args<TReturn1>, TReturn2, TArgs3 extends Args<TReturn2>, TReturn3, TArgs4 extends Args<TReturn3>, TReturn4, TArgs5 extends Args<TReturn4>, TReturn5, TArgs6 extends Args<TReturn5>, TReturn6, TArgs7 extends Args<TReturn6>, TReturn7, TArgs8 extends Args<TReturn7>, TReturn8, TArgs9 extends Args<TReturn8>, TReturn9, TArgs10 extends Args<TReturn9>, TReturn10, TArgs11 extends Args<TReturn10>, TReturn11>(it: PushOrRawIterable<T>, pass1: (this: void, arg: T) => TReturn1, pass2: (this: void, ...args: TArgs2) => TReturn2, pass3: (this: void, ...args: TArgs3) => TReturn3, pass4: (this: void, ...args: TArgs4) => TReturn4, pass5: (this: void, ...args: TArgs5) => TReturn5, pass6: (this: void, ...args: TArgs6) => TReturn6, pass7: (this: void, ...args: TArgs7) => TReturn7, pass8: (this: void, ...args: TArgs8) => TReturn8, pass9: (this: void, ...args: TArgs9) => TReturn9, pass10: (this: void, ...args: TArgs10) => TReturn10, pass11: (this: void, ...args: TArgs11) => TReturn11): PushIterable<Out<TReturn4>>;
export declare function thruIt<T, TReturn1, TArgs2 extends Args<TReturn1>, TReturn2, TArgs3 extends Args<TReturn2>, TReturn3, TArgs4 extends Args<TReturn3>, TReturn4, TArgs5 extends Args<TReturn4>, TReturn5, TArgs6 extends Args<TReturn5>, TReturn6, TArgs7 extends Args<TReturn6>, TReturn7, TArgs8 extends Args<TReturn7>, TReturn8, TArgs9 extends Args<TReturn8>, TReturn9, TArgs10 extends Args<TReturn9>, TReturn10, TArgs11 extends Args<TReturn10>, TReturn11, TArgs12 extends Args<TReturn11>, TReturn12>(it: PushOrRawIterable<T>, pass1: (this: void, arg: T) => TReturn1, pass2: (this: void, ...args: TArgs2) => TReturn2, pass3: (this: void, ...args: TArgs3) => TReturn3, pass4: (this: void, ...args: TArgs4) => TReturn4, pass5: (this: void, ...args: TArgs5) => TReturn5, pass6: (this: void, ...args: TArgs6) => TReturn6, pass7: (this: void, ...args: TArgs7) => TReturn7, pass8: (this: void, ...args: TArgs8) => TReturn8, pass9: (this: void, ...args: TArgs9) => TReturn9, pass10: (this: void, ...args: TArgs10) => TReturn10, pass11: (this: void, ...args: TArgs11) => TReturn11, pass12: (this: void, ...args: TArgs12) => TReturn12): PushIterable<Out<TReturn4>>;
export declare function thruIt<T, TReturn1, TArgs2 extends Args<TReturn1>, TReturn2, TArgs3 extends Args<TReturn2>, TReturn3, TArgs4 extends Args<TReturn3>, TReturn4, TArgs5 extends Args<TReturn4>, TReturn5, TArgs6 extends Args<TReturn5>, TReturn6, TArgs7 extends Args<TReturn6>, TReturn7, TArgs8 extends Args<TReturn7>, TReturn8, TArgs9 extends Args<TReturn8>, TReturn9, TArgs10 extends Args<TReturn9>, TReturn10, TArgs11 extends Args<TReturn10>, TReturn11, TArgs12 extends Args<TReturn11>, TReturn12, TArgs13 extends Args<TReturn12>, TReturn13>(it: PushOrRawIterable<T>, pass1: (this: void, arg: T) => TReturn1, pass2: (this: void, ...args: TArgs2) => TReturn2, pass3: (this: void, ...args: TArgs3) => TReturn3, pass4: (this: void, ...args: TArgs4) => TReturn4, pass5: (this: void, ...args: TArgs5) => TReturn5, pass6: (this: void, ...args: TArgs6) => TReturn6, pass7: (this: void, ...args: TArgs7) => TReturn7, pass8: (this: void, ...args: TArgs8) => TReturn8, pass9: (this: void, ...args: TArgs9) => TReturn9, pass10: (this: void, ...args: TArgs10) => TReturn10, pass11: (this: void, ...args: TArgs11) => TReturn11, pass12: (this: void, ...args: TArgs12) => TReturn12, pass13: (this: void, ...args: TArgs13) => TReturn13): PushIterable<Out<TReturn4>>;
export {};
//# sourceMappingURL=thru-it.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"thru-it.d.ts","sourceRoot":"","sources":["../../src/call-thru/thru-it.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"thru-it.d.ts","sourceRoot":"","sources":["../../src/call-thru/thru-it.ts"],"names":[],"mappings":"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"}

@@ -1,2 +0,2 @@

import type { PushIterable } from '../push-iterable';
import type { PushIterable, PushOrRawIterable } from '../push-iterable';
/**

@@ -10,3 +10,3 @@ * Creates a {@link PushIterable push iterable} over elements of other iterables.

*/
export declare function overElementsOf<T>(...sources: Iterable<T>[]): PushIterable<T>;
export declare function overElementsOf<T>(...sources: readonly PushOrRawIterable<T>[]): PushIterable<T>;
//# sourceMappingURL=over-elements-of.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"over-elements-of.d.ts","sourceRoot":"","sources":["../../src/construction/over-elements-of.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAKrD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAgC5E"}
{"version":3,"file":"over-elements-of.d.ts","sourceRoot":"","sources":["../../src/construction/over-elements-of.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAKxE;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAgC9F"}

@@ -5,3 +5,3 @@ /**

*/
import type { PushIterable } from '../push-iterable';
import type { PushIterable, PushOrRawIterable } from '../push-iterable';
/**

@@ -15,3 +15,3 @@ * Creates a {@link PushIterable push iterable} over elements of the given raw iterable.

*/
export declare function overIterable<T>(source: Iterable<T>): PushIterable<T>;
export declare function overIterable<T>(source: PushOrRawIterable<T>): PushIterable<T>;
//# sourceMappingURL=over-iterable.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"over-iterable.d.ts","sourceRoot":"","sources":["../../src/construction/over-iterable.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAIrD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAKpE"}
{"version":3,"file":"over-iterable.d.ts","sourceRoot":"","sources":["../../src/construction/over-iterable.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAIxE;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAK7E"}

@@ -1,3 +0,7 @@

import type { PushIterable } from '../push-iterable';
/**
* @packageDocumentation
* @module @proc7ts/push-iterator
*/
import type { PushOrRawIterable } from '../push-iterable';
/**
* Performs the given `action` for each element of the given `iterable`.

@@ -10,3 +14,3 @@ *

*/
export declare function itsEach<T>(iterable: Iterable<T> | PushIterable<T>, action: (this: void, element: T) => void): void;
export declare function itsEach<T>(iterable: PushOrRawIterable<T>, action: (this: void, element: T) => void): void;
//# sourceMappingURL=its-each.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"its-each.d.ts","sourceRoot":"","sources":["../../src/consumption/its-each.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,KAAK,IAAI,GAAG,IAAI,CAoBlH"}
{"version":3,"file":"its-each.d.ts","sourceRoot":"","sources":["../../src/consumption/its-each.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,KAAK,IAAI,GAAG,IAAI,CAqBzG"}

@@ -1,3 +0,7 @@

import type { PushIterable } from '../push-iterable';
/**
* @packageDocumentation
* @module @proc7ts/push-iterator
*/
import type { PushOrRawIterable } from '../push-iterable';
/**
* Checks whether the given `iterable` is empty.

@@ -9,3 +13,3 @@ *

*/
export declare function itsEmpty(iterable: Iterable<any> | PushIterable<any>): boolean;
export declare function itsEmpty(iterable: PushOrRawIterable<any>): boolean;
//# sourceMappingURL=its-empty.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"its-empty.d.ts","sourceRoot":"","sources":["../../src/consumption/its-empty.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,OAAO,CAc7E"}
{"version":3,"file":"its-empty.d.ts","sourceRoot":"","sources":["../../src/consumption/its-empty.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC,GAAG,CAAC,GAAG,OAAO,CAelE"}

@@ -1,2 +0,2 @@

import type { PushIterable } from '../push-iterable';
import type { PushOrRawIterable } from '../push-iterable';
/**

@@ -13,3 +13,3 @@ * Tests whether all elements of the given `iterable` pass the test implemented by the provided function.

*/
export declare function itsEvery<T>(iterable: Iterable<T> | PushIterable<T>, test: (this: void, element: T) => boolean): boolean;
export declare function itsEvery<T>(iterable: PushOrRawIterable<T>, test: (this: void, element: T) => boolean): boolean;
//# sourceMappingURL=its-every.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"its-every.d.ts","sourceRoot":"","sources":["../../src/consumption/its-every.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EACtB,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,EACvC,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,KAAK,OAAO,GAC1C,OAAO,CAOT"}
{"version":3,"file":"its-every.d.ts","sourceRoot":"","sources":["../../src/consumption/its-every.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EACtB,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC9B,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,KAAK,OAAO,GAC1C,OAAO,CAOT"}

@@ -1,3 +0,7 @@

import type { PushIterable } from '../push-iterable';
/**
* @packageDocumentation
* @module @proc7ts/push-iterator
*/
import type { PushOrRawIterable } from '../push-iterable';
/**
* Extracts the first element of the given `iterable`, if any.

@@ -10,3 +14,3 @@ *

*/
export declare function itsFirst<T>(iterable: Iterable<T> | PushIterable<T>): T | undefined;
export declare function itsFirst<T>(iterable: PushOrRawIterable<T>): T | undefined;
//# sourceMappingURL=its-first.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"its-first.d.ts","sourceRoot":"","sources":["../../src/consumption/its-first.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAmBlF"}
{"version":3,"file":"its-first.d.ts","sourceRoot":"","sources":["../../src/consumption/its-first.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAoBzE"}

@@ -1,3 +0,7 @@

import type { PushIterable } from '../push-iterable';
/**
* @packageDocumentation
* @module @proc7ts/push-iterator
*/
import type { PushOrRawIterable } from '../push-iterable';
/**
* Applies a function against an accumulator and each element of the given `iterable` to reduce elements to a single

@@ -15,3 +19,3 @@ * value.

*/
export declare function itsReduction<T, R>(iterable: Iterable<T> | PushIterable<T>, reducer: (this: void, prev: R, element: T) => R, initialValue: R): R;
export declare function itsReduction<T, R>(iterable: PushOrRawIterable<T>, reducer: (this: void, prev: R, element: T) => R, initialValue: R): R;
//# sourceMappingURL=its-reduction.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"its-reduction.d.ts","sourceRoot":"","sources":["../../src/consumption/its-reduction.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,CAAC,EAC7B,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,EACvC,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,EAC/C,YAAY,EAAE,CAAC,GAChB,CAAC,CAuBH"}
{"version":3,"file":"its-reduction.d.ts","sourceRoot":"","sources":["../../src/consumption/its-reduction.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,CAAC,EAC7B,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC9B,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,EAC/C,YAAY,EAAE,CAAC,GAChB,CAAC,CAwBH"}

@@ -1,2 +0,2 @@

import type { PushIterable } from '../push-iterable';
import type { PushOrRawIterable } from '../push-iterable';
/**

@@ -13,3 +13,3 @@ * Tests whether at least one element of the given `iterable` passes the test implemented by the provided function.

*/
export declare function itsSome<T>(iterable: Iterable<T> | PushIterable<T>, test: (this: void, element: T) => boolean): boolean;
export declare function itsSome<T>(iterable: PushOrRawIterable<T>, test: (this: void, element: T) => boolean): boolean;
//# sourceMappingURL=its-some.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"its-some.d.ts","sourceRoot":"","sources":["../../src/consumption/its-some.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,CAAC,EACrB,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,EACvC,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,KAAK,OAAO,GAC1C,OAAO,CAOT"}
{"version":3,"file":"its-some.d.ts","sourceRoot":"","sources":["../../src/consumption/its-some.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,CAAC,EACrB,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC9B,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,KAAK,OAAO,GAC1C,OAAO,CAOT"}
export * from './construction';
export * from './construction/over-array';
export * from './consumption';
export * from './is-push-iterator';
export * from './its-iterator';

@@ -6,0 +5,0 @@ export * from './make-push-iterator';

@@ -1,1 +0,1 @@

{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC"}
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC"}

@@ -1,2 +0,2 @@

import type { PushIterable } from './push-iterable';
import type { PushOrRawIterable } from './push-iterable';
import type { PushIterator } from './push-iterator';

@@ -11,3 +11,3 @@ /**

*/
export declare function itsIterator<T>(iterable: Iterable<T> | PushIterable<T>): PushIterator<T>;
export declare function itsIterator<T>(iterable: PushOrRawIterable<T>): PushIterator<T>;
//# sourceMappingURL=its-iterator.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"its-iterator.d.ts","sourceRoot":"","sources":["../src/its-iterator.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAGpD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAKvF"}
{"version":3,"file":"its-iterator.d.ts","sourceRoot":"","sources":["../src/its-iterator.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAGpD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAK9E"}

@@ -5,3 +5,3 @@ /**

*/
import type { PushIterator } from './push-iterator';
import type { PushIterator, PushOrRawIterator } from './push-iterator';
/**

@@ -20,2 +20,12 @@ * An iterable implementing push iteration protocol.

}
/**
* Either {@link PushIterable push} iterable or raw one.
*
* Functions of this library works with both iterable types.
*
* @typeParam T Iterated elements type.
*/
export declare type PushOrRawIterable<T> = PushIterable<T> | {
[Symbol.iterator](): PushOrRawIterator<T>;
};
//# sourceMappingURL=push-iterable.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"push-iterable.d.ts","sourceRoot":"","sources":["../src/push-iterable.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD;;;;GAIG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAC;IAElD;;;;OAIG;IACH,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;CAEtC"}
{"version":3,"file":"push-iterable.d.ts","sourceRoot":"","sources":["../src/push-iterable.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEvE;;;;GAIG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAC;IAElD;;;;OAIG;IACH,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;CAEtC;AAED;;;;;;GAMG;AACH,oBAAY,iBAAiB,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG;IACnD,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC;CAC3C,CAAC"}

@@ -18,2 +18,4 @@ /**

*
* Note that this method does not require `this` context and can be called as a function.
*
* @param accept A function to push iterated elements to. Accepts iterated element as its only parameter. May return

@@ -25,4 +27,15 @@ * `false` to stop iteration.

*/
forNext(accept: PushIterator.Acceptor<T>): boolean;
forNext(this: void, accept: PushIterator.Acceptor<T>): boolean;
}
/**
* Either {@link PushIterator push} iterator or raw one.
*
* Functions of this library works with both iterator types.
*
* @typeParam T Iterated elements type.
*/
export declare type PushOrRawIterator<T> = PushIterator<T> | {
forNext?: undefined;
next(): IteratorResult<T>;
};
export declare namespace PushIterator {

@@ -29,0 +42,0 @@ /**

@@ -1,1 +0,1 @@

{"version":3,"file":"push-iterator.d.ts","sourceRoot":"","sources":["../src/push-iterator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC,CAAE,SAAQ,gBAAgB,CAAC,CAAC,CAAC;IAE1D;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;CAEpD;AAED,yBAAiB,YAAY,CAAC;IAE5B;;;;;OAKG;IACH,KAAY,MAAM,CAAC,CAAC;IACpB;;;;;;OAMG;IACC,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC;IAEjD;;;;;;OAMG;IACH,KAAY,QAAQ,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAEhE;;;;OAIG;IACH,KAAY,YAAY,CAAC,CAAC;IAC1B;;OAEG;IACC,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,KAAK,IAAI,CAAC;IAErC;;;;;OAKG;IACH,KAAY,gBAAgB,CAAC,CAAC;IAC9B;;;;OAIG;IACC,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,KAAK,OAAO,CAAC;CAEzC"}
{"version":3,"file":"push-iterator.d.ts","sourceRoot":"","sources":["../src/push-iterator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC,CAAE,SAAQ,gBAAgB,CAAC,CAAC,CAAC;IAE1D;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;CAEhE;AAED;;;;;;GAMG;AACH,oBAAY,iBAAiB,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG;IACnD,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,IAAI,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC;CAC3B,CAAC;AAEF,yBAAiB,YAAY,CAAC;IAE5B;;;;;OAKG;IACH,KAAY,MAAM,CAAC,CAAC;IACpB;;;;;;OAMG;IACC,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC;IAEjD;;;;;;OAMG;IACH,KAAY,QAAQ,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAEhE;;;;OAIG;IACH,KAAY,YAAY,CAAC,CAAC;IAC1B;;OAEG;IACC,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,KAAK,IAAI,CAAC;IAErC;;;;;OAKG;IACH,KAAY,gBAAgB,CAAC,CAAC;IAC9B;;;;OAIG;IACC,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,KAAK,OAAO,CAAC;CAEzC"}

@@ -1,2 +0,2 @@

import type { PushIterable } from '../push-iterable';
import type { PushIterable, PushOrRawIterable } from '../push-iterable';
/**

@@ -14,3 +14,3 @@ * Creates a {@link PushIterable push iterable} with all `source` iterable elements that pass the test implemented by

*/
export declare function filterIt<T>(source: Iterable<T> | PushIterable<T>, test: (this: void, element: T) => boolean): PushIterable<T>;
export declare function filterIt<T>(source: PushOrRawIterable<T>, test: (this: void, element: T) => boolean): PushIterable<T>;
/**

@@ -28,3 +28,3 @@ * Creates a {@link PushIterable push iterable} with all `source` iterable elements extending the given type.

*/
export declare function filterIt<T, R extends T>(source: Iterable<T> | PushIterable<T>, test: (this: void, element: T) => element is R): PushIterable<R>;
export declare function filterIt<T, R extends T>(source: PushOrRawIterable<T>, test: (this: void, element: T) => element is R): PushIterable<R>;
//# sourceMappingURL=filter-it.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"filter-it.d.ts","sourceRoot":"","sources":["../../src/transformation/filter-it.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGrD;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EACtB,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,EACrC,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,KAAK,OAAO,GAC1C,YAAY,CAAC,CAAC,CAAC,CAAC;AAEnB;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,EACnC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,EACrC,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,KAAK,OAAO,IAAI,CAAC,GAC/C,YAAY,CAAC,CAAC,CAAC,CAAC"}
{"version":3,"file":"filter-it.d.ts","sourceRoot":"","sources":["../../src/transformation/filter-it.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGxE;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EACtB,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC5B,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,KAAK,OAAO,GAC1C,YAAY,CAAC,CAAC,CAAC,CAAC;AAEnB;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,EACnC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC5B,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,KAAK,OAAO,IAAI,CAAC,GAC/C,YAAY,CAAC,CAAC,CAAC,CAAC"}

@@ -1,2 +0,2 @@

import type { PushIterable } from '../push-iterable';
import type { PushIterable, PushOrRawIterable } from '../push-iterable';
/**

@@ -12,3 +12,3 @@ * Flattens the source iterable of iterables into new {@link PushIterable push iterable}.

*/
export declare function flatMapIt<T>(source: Iterable<Iterable<T>>): PushIterable<T>;
export declare function flatMapIt<T>(source: PushOrRawIterable<Iterable<T>>): PushIterable<T>;
/**

@@ -25,3 +25,3 @@ * First maps each element of the `source` iterable using a mapping function, then flattens the result into new

*/
export declare function flatMapIt<T, R>(source: Iterable<T> | PushIterable<T>, convert: (this: void, element: T) => Iterable<R> | PushIterable<R>): PushIterable<R>;
export declare function flatMapIt<T, R>(source: PushOrRawIterable<T>, convert: (this: void, element: T) => PushOrRawIterable<R>): PushIterable<R>;
//# sourceMappingURL=flat-map-it.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"flat-map-it.d.ts","sourceRoot":"","sources":["../../src/transformation/flat-map-it.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAQrD;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;AAE7E;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,CAAC,EAC1B,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,EACrC,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,GACnE,YAAY,CAAC,CAAC,CAAC,CAAC"}
{"version":3,"file":"flat-map-it.d.ts","sourceRoot":"","sources":["../../src/transformation/flat-map-it.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAQxE;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;AAEtF;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,CAAC,EAC1B,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC5B,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,KAAK,iBAAiB,CAAC,CAAC,CAAC,GAC1D,YAAY,CAAC,CAAC,CAAC,CAAC"}

@@ -1,2 +0,2 @@

import type { PushIterable } from '../push-iterable';
import type { PushIterable, PushOrRawIterable } from '../push-iterable';
/**

@@ -14,3 +14,3 @@ * Creates a {@link PushIterable push iterable} with the results of calling a provided function on every element of the

*/
export declare function mapIt<T, R>(source: Iterable<T> | PushIterable<T>, convert: (this: void, element: T) => R): PushIterable<R>;
export declare function mapIt<T, R>(source: PushOrRawIterable<T>, convert: (this: void, element: T) => R): PushIterable<R>;
//# sourceMappingURL=map-it.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"map-it.d.ts","sourceRoot":"","sources":["../../src/transformation/map-it.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGrD;;;;;;;;;;;GAWG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,EACtB,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,EACrC,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,GACvC,YAAY,CAAC,CAAC,CAAC,CASjB"}
{"version":3,"file":"map-it.d.ts","sourceRoot":"","sources":["../../src/transformation/map-it.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGxE;;;;;;;;;;;GAWG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,EACtB,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC5B,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,GACvC,YAAY,CAAC,CAAC,CAAC,CASjB"}

@@ -1,1 +0,1 @@

{"version":3,"file":"push-iterator.call-thru.js","sources":["../src/call-thru/next-iterate.ts","../src/call-thru/thru-it.ts"],"sourcesContent":["/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator/call-thru\n */\nimport { NextCall, nextCall } from '@proc7ts/call-thru';\nimport type { PushIterable } from '../push-iterable';\nimport type { IterableCallChain } from './iterable-call-chain';\n\n/**\n * Creates a next call in {@link IterableCallChain iterable call chain} that performs the next passes for each\n * element of the given iterable.\n *\n * This call passes elements to the next call on demand, while the `nextEach()` one transforms them all at once,\n * and iterates over results after that.\n *\n * @typeParam T Iterated elements type.\n * @param iterable An iterable containing elements to pass down the chain.\n *\n * @returns Next call for iterable call chain.\n */\nexport function nextIterate<T>(iterable: Iterable<T> | PushIterable<T>): NextCall<IterableCallChain, [T], T> {\n return nextCall((chain, pass) => chain.iterate(pass, iterable));\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator/call-thru\n */\nimport { isNextCall, NextCall__symbol } from '@proc7ts/call-thru';\nimport { overElementsOf, overOne } from '../construction';\nimport type { PushIterable } from '../push-iterable';\nimport { flatMapIt } from '../transformation';\nimport type { IterableCallChain } from './iterable-call-chain';\n\ntype Args<TReturn> = IterableCallChain.Args<TReturn>;\ntype Out<TReturn> = IterableCallChain.Out<TReturn>;\n\n/**\n * Passes each element of the given iterable trough the {@link IterableCallChain chain of transformation passes}.\n *\n * The passes are preformed by `@proc7ts/call-thru`.\n *\n * @returns An push iterable of transformed elements.\n */\nexport function thruIt<\n T, TReturn1\n >(\n it: Iterable<T> | PushIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n): PushIterable<Out<TReturn1>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n >(\n it: Iterable<T> | PushIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n): PushIterable<Out<TReturn2>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n TArgs3 extends Args<TReturn2>, TReturn3,\n >(\n it: Iterable<T> | PushIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n pass3: (this: void, ...args: TArgs3) => TReturn3,\n): PushIterable<Out<TReturn3>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n TArgs3 extends Args<TReturn2>, TReturn3,\n TArgs4 extends Args<TReturn3>, TReturn4,\n >(\n it: Iterable<T> | PushIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n pass3: (this: void, ...args: TArgs3) => TReturn3,\n pass4: (this: void, ...args: TArgs4) => TReturn4,\n): PushIterable<Out<TReturn4>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n TArgs3 extends Args<TReturn2>, TReturn3,\n TArgs4 extends Args<TReturn3>, TReturn4,\n TArgs5 extends Args<TReturn4>, TReturn5,\n >(\n it: Iterable<T> | PushIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n pass3: (this: void, ...args: TArgs3) => TReturn3,\n pass4: (this: void, ...args: TArgs4) => TReturn4,\n pass5: (this: void, ...args: TArgs5) => TReturn5,\n): PushIterable<Out<TReturn4>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n TArgs3 extends Args<TReturn2>, TReturn3,\n TArgs4 extends Args<TReturn3>, TReturn4,\n TArgs5 extends Args<TReturn4>, TReturn5,\n TArgs6 extends Args<TReturn5>, TReturn6,\n >(\n it: Iterable<T> | PushIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n pass3: (this: void, ...args: TArgs3) => TReturn3,\n pass4: (this: void, ...args: TArgs4) => TReturn4,\n pass5: (this: void, ...args: TArgs5) => TReturn5,\n pass6: (this: void, ...args: TArgs6) => TReturn6,\n): PushIterable<Out<TReturn4>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n TArgs3 extends Args<TReturn2>, TReturn3,\n TArgs4 extends Args<TReturn3>, TReturn4,\n TArgs5 extends Args<TReturn4>, TReturn5,\n TArgs6 extends Args<TReturn5>, TReturn6,\n TArgs7 extends Args<TReturn6>, TReturn7,\n >(\n it: Iterable<T> | PushIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n pass3: (this: void, ...args: TArgs3) => TReturn3,\n pass4: (this: void, ...args: TArgs4) => TReturn4,\n pass5: (this: void, ...args: TArgs5) => TReturn5,\n pass6: (this: void, ...args: TArgs6) => TReturn6,\n pass7: (this: void, ...args: TArgs7) => TReturn7,\n): PushIterable<Out<TReturn4>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n TArgs3 extends Args<TReturn2>, TReturn3,\n TArgs4 extends Args<TReturn3>, TReturn4,\n TArgs5 extends Args<TReturn4>, TReturn5,\n TArgs6 extends Args<TReturn5>, TReturn6,\n TArgs7 extends Args<TReturn6>, TReturn7,\n TArgs8 extends Args<TReturn7>, TReturn8,\n >(\n it: Iterable<T> | PushIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n pass3: (this: void, ...args: TArgs3) => TReturn3,\n pass4: (this: void, ...args: TArgs4) => TReturn4,\n pass5: (this: void, ...args: TArgs5) => TReturn5,\n pass6: (this: void, ...args: TArgs6) => TReturn6,\n pass7: (this: void, ...args: TArgs7) => TReturn7,\n pass8: (this: void, ...args: TArgs8) => TReturn8,\n): PushIterable<Out<TReturn4>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n TArgs3 extends Args<TReturn2>, TReturn3,\n TArgs4 extends Args<TReturn3>, TReturn4,\n TArgs5 extends Args<TReturn4>, TReturn5,\n TArgs6 extends Args<TReturn5>, TReturn6,\n TArgs7 extends Args<TReturn6>, TReturn7,\n TArgs8 extends Args<TReturn7>, TReturn8,\n TArgs9 extends Args<TReturn8>, TReturn9,\n >(\n it: Iterable<T> | PushIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n pass3: (this: void, ...args: TArgs3) => TReturn3,\n pass4: (this: void, ...args: TArgs4) => TReturn4,\n pass5: (this: void, ...args: TArgs5) => TReturn5,\n pass6: (this: void, ...args: TArgs6) => TReturn6,\n pass7: (this: void, ...args: TArgs7) => TReturn7,\n pass8: (this: void, ...args: TArgs8) => TReturn8,\n pass9: (this: void, ...args: TArgs9) => TReturn9,\n): PushIterable<Out<TReturn4>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n TArgs3 extends Args<TReturn2>, TReturn3,\n TArgs4 extends Args<TReturn3>, TReturn4,\n TArgs5 extends Args<TReturn4>, TReturn5,\n TArgs6 extends Args<TReturn5>, TReturn6,\n TArgs7 extends Args<TReturn6>, TReturn7,\n TArgs8 extends Args<TReturn7>, TReturn8,\n TArgs9 extends Args<TReturn8>, TReturn9,\n TArgs10 extends Args<TReturn9>, TReturn10,\n >(\n it: Iterable<T> | PushIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n pass3: (this: void, ...args: TArgs3) => TReturn3,\n pass4: (this: void, ...args: TArgs4) => TReturn4,\n pass5: (this: void, ...args: TArgs5) => TReturn5,\n pass6: (this: void, ...args: TArgs6) => TReturn6,\n pass7: (this: void, ...args: TArgs7) => TReturn7,\n pass8: (this: void, ...args: TArgs8) => TReturn8,\n pass9: (this: void, ...args: TArgs9) => TReturn9,\n pass10: (this: void, ...args: TArgs10) => TReturn10,\n): PushIterable<Out<TReturn4>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n TArgs3 extends Args<TReturn2>, TReturn3,\n TArgs4 extends Args<TReturn3>, TReturn4,\n TArgs5 extends Args<TReturn4>, TReturn5,\n TArgs6 extends Args<TReturn5>, TReturn6,\n TArgs7 extends Args<TReturn6>, TReturn7,\n TArgs8 extends Args<TReturn7>, TReturn8,\n TArgs9 extends Args<TReturn8>, TReturn9,\n TArgs10 extends Args<TReturn9>, TReturn10,\n TArgs11 extends Args<TReturn10>, TReturn11,\n >(\n it: Iterable<T> | PushIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n pass3: (this: void, ...args: TArgs3) => TReturn3,\n pass4: (this: void, ...args: TArgs4) => TReturn4,\n pass5: (this: void, ...args: TArgs5) => TReturn5,\n pass6: (this: void, ...args: TArgs6) => TReturn6,\n pass7: (this: void, ...args: TArgs7) => TReturn7,\n pass8: (this: void, ...args: TArgs8) => TReturn8,\n pass9: (this: void, ...args: TArgs9) => TReturn9,\n pass10: (this: void, ...args: TArgs10) => TReturn10,\n pass11: (this: void, ...args: TArgs11) => TReturn11,\n): PushIterable<Out<TReturn4>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n TArgs3 extends Args<TReturn2>, TReturn3,\n TArgs4 extends Args<TReturn3>, TReturn4,\n TArgs5 extends Args<TReturn4>, TReturn5,\n TArgs6 extends Args<TReturn5>, TReturn6,\n TArgs7 extends Args<TReturn6>, TReturn7,\n TArgs8 extends Args<TReturn7>, TReturn8,\n TArgs9 extends Args<TReturn8>, TReturn9,\n TArgs10 extends Args<TReturn9>, TReturn10,\n TArgs11 extends Args<TReturn10>, TReturn11,\n TArgs12 extends Args<TReturn11>, TReturn12,\n >(\n it: Iterable<T> | PushIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n pass3: (this: void, ...args: TArgs3) => TReturn3,\n pass4: (this: void, ...args: TArgs4) => TReturn4,\n pass5: (this: void, ...args: TArgs5) => TReturn5,\n pass6: (this: void, ...args: TArgs6) => TReturn6,\n pass7: (this: void, ...args: TArgs7) => TReturn7,\n pass8: (this: void, ...args: TArgs8) => TReturn8,\n pass9: (this: void, ...args: TArgs9) => TReturn9,\n pass10: (this: void, ...args: TArgs10) => TReturn10,\n pass11: (this: void, ...args: TArgs11) => TReturn11,\n pass12: (this: void, ...args: TArgs12) => TReturn12,\n): PushIterable<Out<TReturn4>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n TArgs3 extends Args<TReturn2>, TReturn3,\n TArgs4 extends Args<TReturn3>, TReturn4,\n TArgs5 extends Args<TReturn4>, TReturn5,\n TArgs6 extends Args<TReturn5>, TReturn6,\n TArgs7 extends Args<TReturn6>, TReturn7,\n TArgs8 extends Args<TReturn7>, TReturn8,\n TArgs9 extends Args<TReturn8>, TReturn9,\n TArgs10 extends Args<TReturn9>, TReturn10,\n TArgs11 extends Args<TReturn10>, TReturn11,\n TArgs12 extends Args<TReturn11>, TReturn12,\n TArgs13 extends Args<TReturn12>, TReturn13,\n >(\n it: Iterable<T> | PushIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n pass3: (this: void, ...args: TArgs3) => TReturn3,\n pass4: (this: void, ...args: TArgs4) => TReturn4,\n pass5: (this: void, ...args: TArgs5) => TReturn5,\n pass6: (this: void, ...args: TArgs6) => TReturn6,\n pass7: (this: void, ...args: TArgs7) => TReturn7,\n pass8: (this: void, ...args: TArgs8) => TReturn8,\n pass9: (this: void, ...args: TArgs9) => TReturn9,\n pass10: (this: void, ...args: TArgs10) => TReturn10,\n pass11: (this: void, ...args: TArgs11) => TReturn11,\n pass12: (this: void, ...args: TArgs12) => TReturn12,\n pass13: (this: void, ...args: TArgs13) => TReturn13,\n): PushIterable<Out<TReturn4>>;\n\nexport function thruIt<T, TReturn>(\n it: Iterable<T> | PushIterable<T>,\n ...passes: ((...args: any[]) => any)[]\n): PushIterable<TReturn> {\n\n const chain = (outcome: PushIterable<any>[], index: number): IterableCallChain => {\n\n const lastPass = index >= passes.length;\n\n ++index;\n\n const pass = index < passes.length ? passes[index] : () => { /* empty pass */ };\n const handleResult = (outcome: PushIterable<any>[], callResult: any, arg: any): void => {\n if (isNextCall(callResult)) {\n callResult[NextCall__symbol](chain(outcome, index), pass);\n } else if (lastPass) {\n outcome.push(overOne(arg));\n } else {\n chain(outcome, index).pass(pass, callResult);\n }\n };\n\n return ({\n call<A extends any[]>(fn: (...args: A) => any, args: A): void {\n handleResult(outcome, fn(...args), args);\n },\n pass<A>(fn: (arg: A) => any, arg: A): void {\n handleResult(outcome, fn(arg), arg);\n },\n skip() {/* skip item */},\n iterate<I>(fn: (this: void, arg: I) => void, iterable: Iterable<I>): void {\n outcome.push(flatMapIt(\n iterable,\n item => {\n\n const itemOutcome: PushIterable<any>[] = [];\n\n handleResult(itemOutcome, fn(item), item);\n\n return overElementsOf(...itemOutcome);\n },\n ));\n },\n });\n };\n\n const finalOutcome: PushIterable<any>[] = [];\n\n chain(finalOutcome, 0).iterate(passes[0], it);\n\n return overElementsOf<TReturn>(...finalOutcome);\n}\n"],"names":["nextCall","isNextCall","NextCall__symbol","overOne","flatMapIt","overElementsOf"],"mappings":";;;;;;;AAAA;;;;AAQA;;;;;;;;;;;;SAYgB,WAAW,CAAI,QAAuC;IACpE,OAAOA,iBAAQ,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;AAClE;;ACtBA;;;;SA2QgB,MAAM,CAClB,EAAiC,EACjC,GAAG,MAAmC;IAGxC,MAAM,KAAK,GAAG,CAAC,OAA4B,EAAE,KAAa;QAExD,MAAM,QAAQ,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC;QAExC,EAAE,KAAK,CAAC;QAER,MAAM,IAAI,GAAG,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,SAA0B,CAAC;QAChF,MAAM,YAAY,GAAG,CAAC,OAA4B,EAAE,UAAe,EAAE,GAAQ;YAC3E,IAAIC,mBAAU,CAAC,UAAU,CAAC,EAAE;gBAC1B,UAAU,CAACC,yBAAgB,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;aAC3D;iBAAM,IAAI,QAAQ,EAAE;gBACnB,OAAO,CAAC,IAAI,CAACC,oBAAO,CAAC,GAAG,CAAC,CAAC,CAAC;aAC5B;iBAAM;gBACL,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;aAC9C;SACF,CAAC;QAEF,QAAQ;YACN,IAAI,CAAkB,EAAuB,EAAE,IAAO;gBACpD,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;aAC1C;YACD,IAAI,CAAI,EAAmB,EAAE,GAAM;gBACjC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;aACrC;YACD,IAAI,MAAoB;YACxB,OAAO,CAAI,EAAgC,EAAE,QAAqB;gBAChE,OAAO,CAAC,IAAI,CAACC,sBAAS,CAClB,QAAQ,EACR,IAAI;oBAEF,MAAM,WAAW,GAAwB,EAAE,CAAC;oBAE5C,YAAY,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;oBAE1C,OAAOC,2BAAc,CAAC,GAAG,WAAW,CAAC,CAAC;iBACvC,CACJ,CAAC,CAAC;aACJ;SACF,EAAE;KACJ,CAAC;IAEF,MAAM,YAAY,GAAwB,EAAE,CAAC;IAE7C,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAE9C,OAAOA,2BAAc,CAAU,GAAG,YAAY,CAAC,CAAC;AAClD;;;;;"}
{"version":3,"file":"push-iterator.call-thru.js","sources":["../src/call-thru/next-iterate.ts","../src/call-thru/thru-it.ts"],"sourcesContent":["/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator/call-thru\n */\nimport { NextCall, nextCall } from '@proc7ts/call-thru';\nimport type { PushOrRawIterable } from '../push-iterable';\nimport type { IterableCallChain } from './iterable-call-chain';\n\n/**\n * Creates a next call in {@link IterableCallChain iterable call chain} that performs the next passes for each\n * element of the given iterable.\n *\n * This call passes elements to the next call on demand, while the `nextEach()` one transforms them all at once,\n * and iterates over results after that.\n *\n * @typeParam T Iterated elements type.\n * @param iterable An iterable containing elements to pass down the chain.\n *\n * @returns Next call for iterable call chain.\n */\nexport function nextIterate<T>(iterable: PushOrRawIterable<T>): NextCall<IterableCallChain, [T], T> {\n return nextCall((chain, pass) => chain.iterate(pass, iterable));\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator/call-thru\n */\nimport { isNextCall, NextCall__symbol } from '@proc7ts/call-thru';\nimport { overElementsOf, overOne } from '../construction';\nimport type { PushIterable, PushOrRawIterable } from '../push-iterable';\nimport { flatMapIt } from '../transformation';\nimport type { IterableCallChain } from './iterable-call-chain';\n\ntype Args<TReturn> = IterableCallChain.Args<TReturn>;\ntype Out<TReturn> = IterableCallChain.Out<TReturn>;\n\n/**\n * Passes each element of the given iterable trough the {@link IterableCallChain chain of transformation passes}.\n *\n * The passes are preformed by `@proc7ts/call-thru`.\n *\n * @returns An push iterable of transformed elements.\n */\nexport function thruIt<\n T, TReturn1\n >(\n it: PushOrRawIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n): PushIterable<Out<TReturn1>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n >(\n it: PushOrRawIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n): PushIterable<Out<TReturn2>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n TArgs3 extends Args<TReturn2>, TReturn3,\n >(\n it: PushOrRawIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n pass3: (this: void, ...args: TArgs3) => TReturn3,\n): PushIterable<Out<TReturn3>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n TArgs3 extends Args<TReturn2>, TReturn3,\n TArgs4 extends Args<TReturn3>, TReturn4,\n >(\n it: PushOrRawIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n pass3: (this: void, ...args: TArgs3) => TReturn3,\n pass4: (this: void, ...args: TArgs4) => TReturn4,\n): PushIterable<Out<TReturn4>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n TArgs3 extends Args<TReturn2>, TReturn3,\n TArgs4 extends Args<TReturn3>, TReturn4,\n TArgs5 extends Args<TReturn4>, TReturn5,\n >(\n it: PushOrRawIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n pass3: (this: void, ...args: TArgs3) => TReturn3,\n pass4: (this: void, ...args: TArgs4) => TReturn4,\n pass5: (this: void, ...args: TArgs5) => TReturn5,\n): PushIterable<Out<TReturn4>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n TArgs3 extends Args<TReturn2>, TReturn3,\n TArgs4 extends Args<TReturn3>, TReturn4,\n TArgs5 extends Args<TReturn4>, TReturn5,\n TArgs6 extends Args<TReturn5>, TReturn6,\n >(\n it: PushOrRawIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n pass3: (this: void, ...args: TArgs3) => TReturn3,\n pass4: (this: void, ...args: TArgs4) => TReturn4,\n pass5: (this: void, ...args: TArgs5) => TReturn5,\n pass6: (this: void, ...args: TArgs6) => TReturn6,\n): PushIterable<Out<TReturn4>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n TArgs3 extends Args<TReturn2>, TReturn3,\n TArgs4 extends Args<TReturn3>, TReturn4,\n TArgs5 extends Args<TReturn4>, TReturn5,\n TArgs6 extends Args<TReturn5>, TReturn6,\n TArgs7 extends Args<TReturn6>, TReturn7,\n >(\n it: PushOrRawIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n pass3: (this: void, ...args: TArgs3) => TReturn3,\n pass4: (this: void, ...args: TArgs4) => TReturn4,\n pass5: (this: void, ...args: TArgs5) => TReturn5,\n pass6: (this: void, ...args: TArgs6) => TReturn6,\n pass7: (this: void, ...args: TArgs7) => TReturn7,\n): PushIterable<Out<TReturn4>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n TArgs3 extends Args<TReturn2>, TReturn3,\n TArgs4 extends Args<TReturn3>, TReturn4,\n TArgs5 extends Args<TReturn4>, TReturn5,\n TArgs6 extends Args<TReturn5>, TReturn6,\n TArgs7 extends Args<TReturn6>, TReturn7,\n TArgs8 extends Args<TReturn7>, TReturn8,\n >(\n it: PushOrRawIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n pass3: (this: void, ...args: TArgs3) => TReturn3,\n pass4: (this: void, ...args: TArgs4) => TReturn4,\n pass5: (this: void, ...args: TArgs5) => TReturn5,\n pass6: (this: void, ...args: TArgs6) => TReturn6,\n pass7: (this: void, ...args: TArgs7) => TReturn7,\n pass8: (this: void, ...args: TArgs8) => TReturn8,\n): PushIterable<Out<TReturn4>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n TArgs3 extends Args<TReturn2>, TReturn3,\n TArgs4 extends Args<TReturn3>, TReturn4,\n TArgs5 extends Args<TReturn4>, TReturn5,\n TArgs6 extends Args<TReturn5>, TReturn6,\n TArgs7 extends Args<TReturn6>, TReturn7,\n TArgs8 extends Args<TReturn7>, TReturn8,\n TArgs9 extends Args<TReturn8>, TReturn9,\n >(\n it: PushOrRawIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n pass3: (this: void, ...args: TArgs3) => TReturn3,\n pass4: (this: void, ...args: TArgs4) => TReturn4,\n pass5: (this: void, ...args: TArgs5) => TReturn5,\n pass6: (this: void, ...args: TArgs6) => TReturn6,\n pass7: (this: void, ...args: TArgs7) => TReturn7,\n pass8: (this: void, ...args: TArgs8) => TReturn8,\n pass9: (this: void, ...args: TArgs9) => TReturn9,\n): PushIterable<Out<TReturn4>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n TArgs3 extends Args<TReturn2>, TReturn3,\n TArgs4 extends Args<TReturn3>, TReturn4,\n TArgs5 extends Args<TReturn4>, TReturn5,\n TArgs6 extends Args<TReturn5>, TReturn6,\n TArgs7 extends Args<TReturn6>, TReturn7,\n TArgs8 extends Args<TReturn7>, TReturn8,\n TArgs9 extends Args<TReturn8>, TReturn9,\n TArgs10 extends Args<TReturn9>, TReturn10,\n >(\n it: PushOrRawIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n pass3: (this: void, ...args: TArgs3) => TReturn3,\n pass4: (this: void, ...args: TArgs4) => TReturn4,\n pass5: (this: void, ...args: TArgs5) => TReturn5,\n pass6: (this: void, ...args: TArgs6) => TReturn6,\n pass7: (this: void, ...args: TArgs7) => TReturn7,\n pass8: (this: void, ...args: TArgs8) => TReturn8,\n pass9: (this: void, ...args: TArgs9) => TReturn9,\n pass10: (this: void, ...args: TArgs10) => TReturn10,\n): PushIterable<Out<TReturn4>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n TArgs3 extends Args<TReturn2>, TReturn3,\n TArgs4 extends Args<TReturn3>, TReturn4,\n TArgs5 extends Args<TReturn4>, TReturn5,\n TArgs6 extends Args<TReturn5>, TReturn6,\n TArgs7 extends Args<TReturn6>, TReturn7,\n TArgs8 extends Args<TReturn7>, TReturn8,\n TArgs9 extends Args<TReturn8>, TReturn9,\n TArgs10 extends Args<TReturn9>, TReturn10,\n TArgs11 extends Args<TReturn10>, TReturn11,\n >(\n it: PushOrRawIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n pass3: (this: void, ...args: TArgs3) => TReturn3,\n pass4: (this: void, ...args: TArgs4) => TReturn4,\n pass5: (this: void, ...args: TArgs5) => TReturn5,\n pass6: (this: void, ...args: TArgs6) => TReturn6,\n pass7: (this: void, ...args: TArgs7) => TReturn7,\n pass8: (this: void, ...args: TArgs8) => TReturn8,\n pass9: (this: void, ...args: TArgs9) => TReturn9,\n pass10: (this: void, ...args: TArgs10) => TReturn10,\n pass11: (this: void, ...args: TArgs11) => TReturn11,\n): PushIterable<Out<TReturn4>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n TArgs3 extends Args<TReturn2>, TReturn3,\n TArgs4 extends Args<TReturn3>, TReturn4,\n TArgs5 extends Args<TReturn4>, TReturn5,\n TArgs6 extends Args<TReturn5>, TReturn6,\n TArgs7 extends Args<TReturn6>, TReturn7,\n TArgs8 extends Args<TReturn7>, TReturn8,\n TArgs9 extends Args<TReturn8>, TReturn9,\n TArgs10 extends Args<TReturn9>, TReturn10,\n TArgs11 extends Args<TReturn10>, TReturn11,\n TArgs12 extends Args<TReturn11>, TReturn12,\n >(\n it: PushOrRawIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n pass3: (this: void, ...args: TArgs3) => TReturn3,\n pass4: (this: void, ...args: TArgs4) => TReturn4,\n pass5: (this: void, ...args: TArgs5) => TReturn5,\n pass6: (this: void, ...args: TArgs6) => TReturn6,\n pass7: (this: void, ...args: TArgs7) => TReturn7,\n pass8: (this: void, ...args: TArgs8) => TReturn8,\n pass9: (this: void, ...args: TArgs9) => TReturn9,\n pass10: (this: void, ...args: TArgs10) => TReturn10,\n pass11: (this: void, ...args: TArgs11) => TReturn11,\n pass12: (this: void, ...args: TArgs12) => TReturn12,\n): PushIterable<Out<TReturn4>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n TArgs3 extends Args<TReturn2>, TReturn3,\n TArgs4 extends Args<TReturn3>, TReturn4,\n TArgs5 extends Args<TReturn4>, TReturn5,\n TArgs6 extends Args<TReturn5>, TReturn6,\n TArgs7 extends Args<TReturn6>, TReturn7,\n TArgs8 extends Args<TReturn7>, TReturn8,\n TArgs9 extends Args<TReturn8>, TReturn9,\n TArgs10 extends Args<TReturn9>, TReturn10,\n TArgs11 extends Args<TReturn10>, TReturn11,\n TArgs12 extends Args<TReturn11>, TReturn12,\n TArgs13 extends Args<TReturn12>, TReturn13,\n >(\n it: PushOrRawIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n pass3: (this: void, ...args: TArgs3) => TReturn3,\n pass4: (this: void, ...args: TArgs4) => TReturn4,\n pass5: (this: void, ...args: TArgs5) => TReturn5,\n pass6: (this: void, ...args: TArgs6) => TReturn6,\n pass7: (this: void, ...args: TArgs7) => TReturn7,\n pass8: (this: void, ...args: TArgs8) => TReturn8,\n pass9: (this: void, ...args: TArgs9) => TReturn9,\n pass10: (this: void, ...args: TArgs10) => TReturn10,\n pass11: (this: void, ...args: TArgs11) => TReturn11,\n pass12: (this: void, ...args: TArgs12) => TReturn12,\n pass13: (this: void, ...args: TArgs13) => TReturn13,\n): PushIterable<Out<TReturn4>>;\n\nexport function thruIt<T, TReturn>(\n it: PushOrRawIterable<T>,\n ...passes: ((...args: any[]) => any)[]\n): PushIterable<TReturn> {\n\n const chain = (outcome: PushIterable<any>[], index: number): IterableCallChain => {\n\n const lastPass = index >= passes.length;\n\n ++index;\n\n const pass = index < passes.length ? passes[index] : () => { /* empty pass */ };\n const handleResult = (outcome: PushIterable<any>[], callResult: any, arg: any): void => {\n if (isNextCall(callResult)) {\n callResult[NextCall__symbol](chain(outcome, index), pass);\n } else if (lastPass) {\n outcome.push(overOne(arg));\n } else {\n chain(outcome, index).pass(pass, callResult);\n }\n };\n\n return ({\n call<A extends any[]>(fn: (...args: A) => any, args: A): void {\n handleResult(outcome, fn(...args), args);\n },\n pass<A>(fn: (arg: A) => any, arg: A): void {\n handleResult(outcome, fn(arg), arg);\n },\n skip() {/* skip item */},\n iterate<I>(fn: (this: void, arg: I) => void, iterable: PushOrRawIterable<I>): void {\n outcome.push(flatMapIt(\n iterable,\n item => {\n\n const itemOutcome: PushIterable<any>[] = [];\n\n handleResult(itemOutcome, fn(item), item);\n\n return overElementsOf(...itemOutcome);\n },\n ));\n },\n });\n };\n\n const finalOutcome: PushIterable<any>[] = [];\n\n chain(finalOutcome, 0).iterate(passes[0], it);\n\n return overElementsOf<TReturn>(...finalOutcome);\n}\n"],"names":["nextCall","isNextCall","NextCall__symbol","overOne","flatMapIt","overElementsOf"],"mappings":";;;;;;;AAAA;;;;AAQA;;;;;;;;;;;;SAYgB,WAAW,CAAI,QAA8B;IAC3D,OAAOA,iBAAQ,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;AAClE;;ACtBA;;;;SA2QgB,MAAM,CAClB,EAAwB,EACxB,GAAG,MAAmC;IAGxC,MAAM,KAAK,GAAG,CAAC,OAA4B,EAAE,KAAa;QAExD,MAAM,QAAQ,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC;QAExC,EAAE,KAAK,CAAC;QAER,MAAM,IAAI,GAAG,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,SAA0B,CAAC;QAChF,MAAM,YAAY,GAAG,CAAC,OAA4B,EAAE,UAAe,EAAE,GAAQ;YAC3E,IAAIC,mBAAU,CAAC,UAAU,CAAC,EAAE;gBAC1B,UAAU,CAACC,yBAAgB,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;aAC3D;iBAAM,IAAI,QAAQ,EAAE;gBACnB,OAAO,CAAC,IAAI,CAACC,oBAAO,CAAC,GAAG,CAAC,CAAC,CAAC;aAC5B;iBAAM;gBACL,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;aAC9C;SACF,CAAC;QAEF,QAAQ;YACN,IAAI,CAAkB,EAAuB,EAAE,IAAO;gBACpD,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;aAC1C;YACD,IAAI,CAAI,EAAmB,EAAE,GAAM;gBACjC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;aACrC;YACD,IAAI,MAAoB;YACxB,OAAO,CAAI,EAAgC,EAAE,QAA8B;gBACzE,OAAO,CAAC,IAAI,CAACC,sBAAS,CAClB,QAAQ,EACR,IAAI;oBAEF,MAAM,WAAW,GAAwB,EAAE,CAAC;oBAE5C,YAAY,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;oBAE1C,OAAOC,2BAAc,CAAC,GAAG,WAAW,CAAC,CAAC;iBACvC,CACJ,CAAC,CAAC;aACJ;SACF,EAAE;KACJ,CAAC;IAEF,MAAM,YAAY,GAAwB,EAAE,CAAC;IAE7C,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAE9C,OAAOA,2BAAc,CAAU,GAAG,YAAY,CAAC,CAAC;AAClD;;;;;"}

@@ -1,1 +0,1 @@

{"version":3,"file":"push-iterator.call-thru.mjs","sources":["../src/call-thru/next-iterate.ts","../src/call-thru/thru-it.ts"],"sourcesContent":["/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator/call-thru\n */\nimport { NextCall, nextCall } from '@proc7ts/call-thru';\nimport type { PushIterable } from '../push-iterable';\nimport type { IterableCallChain } from './iterable-call-chain';\n\n/**\n * Creates a next call in {@link IterableCallChain iterable call chain} that performs the next passes for each\n * element of the given iterable.\n *\n * This call passes elements to the next call on demand, while the `nextEach()` one transforms them all at once,\n * and iterates over results after that.\n *\n * @typeParam T Iterated elements type.\n * @param iterable An iterable containing elements to pass down the chain.\n *\n * @returns Next call for iterable call chain.\n */\nexport function nextIterate<T>(iterable: Iterable<T> | PushIterable<T>): NextCall<IterableCallChain, [T], T> {\n return nextCall((chain, pass) => chain.iterate(pass, iterable));\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator/call-thru\n */\nimport { isNextCall, NextCall__symbol } from '@proc7ts/call-thru';\nimport { overElementsOf, overOne } from '../construction';\nimport type { PushIterable } from '../push-iterable';\nimport { flatMapIt } from '../transformation';\nimport type { IterableCallChain } from './iterable-call-chain';\n\ntype Args<TReturn> = IterableCallChain.Args<TReturn>;\ntype Out<TReturn> = IterableCallChain.Out<TReturn>;\n\n/**\n * Passes each element of the given iterable trough the {@link IterableCallChain chain of transformation passes}.\n *\n * The passes are preformed by `@proc7ts/call-thru`.\n *\n * @returns An push iterable of transformed elements.\n */\nexport function thruIt<\n T, TReturn1\n >(\n it: Iterable<T> | PushIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n): PushIterable<Out<TReturn1>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n >(\n it: Iterable<T> | PushIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n): PushIterable<Out<TReturn2>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n TArgs3 extends Args<TReturn2>, TReturn3,\n >(\n it: Iterable<T> | PushIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n pass3: (this: void, ...args: TArgs3) => TReturn3,\n): PushIterable<Out<TReturn3>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n TArgs3 extends Args<TReturn2>, TReturn3,\n TArgs4 extends Args<TReturn3>, TReturn4,\n >(\n it: Iterable<T> | PushIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n pass3: (this: void, ...args: TArgs3) => TReturn3,\n pass4: (this: void, ...args: TArgs4) => TReturn4,\n): PushIterable<Out<TReturn4>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n TArgs3 extends Args<TReturn2>, TReturn3,\n TArgs4 extends Args<TReturn3>, TReturn4,\n TArgs5 extends Args<TReturn4>, TReturn5,\n >(\n it: Iterable<T> | PushIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n pass3: (this: void, ...args: TArgs3) => TReturn3,\n pass4: (this: void, ...args: TArgs4) => TReturn4,\n pass5: (this: void, ...args: TArgs5) => TReturn5,\n): PushIterable<Out<TReturn4>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n TArgs3 extends Args<TReturn2>, TReturn3,\n TArgs4 extends Args<TReturn3>, TReturn4,\n TArgs5 extends Args<TReturn4>, TReturn5,\n TArgs6 extends Args<TReturn5>, TReturn6,\n >(\n it: Iterable<T> | PushIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n pass3: (this: void, ...args: TArgs3) => TReturn3,\n pass4: (this: void, ...args: TArgs4) => TReturn4,\n pass5: (this: void, ...args: TArgs5) => TReturn5,\n pass6: (this: void, ...args: TArgs6) => TReturn6,\n): PushIterable<Out<TReturn4>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n TArgs3 extends Args<TReturn2>, TReturn3,\n TArgs4 extends Args<TReturn3>, TReturn4,\n TArgs5 extends Args<TReturn4>, TReturn5,\n TArgs6 extends Args<TReturn5>, TReturn6,\n TArgs7 extends Args<TReturn6>, TReturn7,\n >(\n it: Iterable<T> | PushIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n pass3: (this: void, ...args: TArgs3) => TReturn3,\n pass4: (this: void, ...args: TArgs4) => TReturn4,\n pass5: (this: void, ...args: TArgs5) => TReturn5,\n pass6: (this: void, ...args: TArgs6) => TReturn6,\n pass7: (this: void, ...args: TArgs7) => TReturn7,\n): PushIterable<Out<TReturn4>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n TArgs3 extends Args<TReturn2>, TReturn3,\n TArgs4 extends Args<TReturn3>, TReturn4,\n TArgs5 extends Args<TReturn4>, TReturn5,\n TArgs6 extends Args<TReturn5>, TReturn6,\n TArgs7 extends Args<TReturn6>, TReturn7,\n TArgs8 extends Args<TReturn7>, TReturn8,\n >(\n it: Iterable<T> | PushIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n pass3: (this: void, ...args: TArgs3) => TReturn3,\n pass4: (this: void, ...args: TArgs4) => TReturn4,\n pass5: (this: void, ...args: TArgs5) => TReturn5,\n pass6: (this: void, ...args: TArgs6) => TReturn6,\n pass7: (this: void, ...args: TArgs7) => TReturn7,\n pass8: (this: void, ...args: TArgs8) => TReturn8,\n): PushIterable<Out<TReturn4>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n TArgs3 extends Args<TReturn2>, TReturn3,\n TArgs4 extends Args<TReturn3>, TReturn4,\n TArgs5 extends Args<TReturn4>, TReturn5,\n TArgs6 extends Args<TReturn5>, TReturn6,\n TArgs7 extends Args<TReturn6>, TReturn7,\n TArgs8 extends Args<TReturn7>, TReturn8,\n TArgs9 extends Args<TReturn8>, TReturn9,\n >(\n it: Iterable<T> | PushIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n pass3: (this: void, ...args: TArgs3) => TReturn3,\n pass4: (this: void, ...args: TArgs4) => TReturn4,\n pass5: (this: void, ...args: TArgs5) => TReturn5,\n pass6: (this: void, ...args: TArgs6) => TReturn6,\n pass7: (this: void, ...args: TArgs7) => TReturn7,\n pass8: (this: void, ...args: TArgs8) => TReturn8,\n pass9: (this: void, ...args: TArgs9) => TReturn9,\n): PushIterable<Out<TReturn4>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n TArgs3 extends Args<TReturn2>, TReturn3,\n TArgs4 extends Args<TReturn3>, TReturn4,\n TArgs5 extends Args<TReturn4>, TReturn5,\n TArgs6 extends Args<TReturn5>, TReturn6,\n TArgs7 extends Args<TReturn6>, TReturn7,\n TArgs8 extends Args<TReturn7>, TReturn8,\n TArgs9 extends Args<TReturn8>, TReturn9,\n TArgs10 extends Args<TReturn9>, TReturn10,\n >(\n it: Iterable<T> | PushIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n pass3: (this: void, ...args: TArgs3) => TReturn3,\n pass4: (this: void, ...args: TArgs4) => TReturn4,\n pass5: (this: void, ...args: TArgs5) => TReturn5,\n pass6: (this: void, ...args: TArgs6) => TReturn6,\n pass7: (this: void, ...args: TArgs7) => TReturn7,\n pass8: (this: void, ...args: TArgs8) => TReturn8,\n pass9: (this: void, ...args: TArgs9) => TReturn9,\n pass10: (this: void, ...args: TArgs10) => TReturn10,\n): PushIterable<Out<TReturn4>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n TArgs3 extends Args<TReturn2>, TReturn3,\n TArgs4 extends Args<TReturn3>, TReturn4,\n TArgs5 extends Args<TReturn4>, TReturn5,\n TArgs6 extends Args<TReturn5>, TReturn6,\n TArgs7 extends Args<TReturn6>, TReturn7,\n TArgs8 extends Args<TReturn7>, TReturn8,\n TArgs9 extends Args<TReturn8>, TReturn9,\n TArgs10 extends Args<TReturn9>, TReturn10,\n TArgs11 extends Args<TReturn10>, TReturn11,\n >(\n it: Iterable<T> | PushIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n pass3: (this: void, ...args: TArgs3) => TReturn3,\n pass4: (this: void, ...args: TArgs4) => TReturn4,\n pass5: (this: void, ...args: TArgs5) => TReturn5,\n pass6: (this: void, ...args: TArgs6) => TReturn6,\n pass7: (this: void, ...args: TArgs7) => TReturn7,\n pass8: (this: void, ...args: TArgs8) => TReturn8,\n pass9: (this: void, ...args: TArgs9) => TReturn9,\n pass10: (this: void, ...args: TArgs10) => TReturn10,\n pass11: (this: void, ...args: TArgs11) => TReturn11,\n): PushIterable<Out<TReturn4>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n TArgs3 extends Args<TReturn2>, TReturn3,\n TArgs4 extends Args<TReturn3>, TReturn4,\n TArgs5 extends Args<TReturn4>, TReturn5,\n TArgs6 extends Args<TReturn5>, TReturn6,\n TArgs7 extends Args<TReturn6>, TReturn7,\n TArgs8 extends Args<TReturn7>, TReturn8,\n TArgs9 extends Args<TReturn8>, TReturn9,\n TArgs10 extends Args<TReturn9>, TReturn10,\n TArgs11 extends Args<TReturn10>, TReturn11,\n TArgs12 extends Args<TReturn11>, TReturn12,\n >(\n it: Iterable<T> | PushIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n pass3: (this: void, ...args: TArgs3) => TReturn3,\n pass4: (this: void, ...args: TArgs4) => TReturn4,\n pass5: (this: void, ...args: TArgs5) => TReturn5,\n pass6: (this: void, ...args: TArgs6) => TReturn6,\n pass7: (this: void, ...args: TArgs7) => TReturn7,\n pass8: (this: void, ...args: TArgs8) => TReturn8,\n pass9: (this: void, ...args: TArgs9) => TReturn9,\n pass10: (this: void, ...args: TArgs10) => TReturn10,\n pass11: (this: void, ...args: TArgs11) => TReturn11,\n pass12: (this: void, ...args: TArgs12) => TReturn12,\n): PushIterable<Out<TReturn4>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n TArgs3 extends Args<TReturn2>, TReturn3,\n TArgs4 extends Args<TReturn3>, TReturn4,\n TArgs5 extends Args<TReturn4>, TReturn5,\n TArgs6 extends Args<TReturn5>, TReturn6,\n TArgs7 extends Args<TReturn6>, TReturn7,\n TArgs8 extends Args<TReturn7>, TReturn8,\n TArgs9 extends Args<TReturn8>, TReturn9,\n TArgs10 extends Args<TReturn9>, TReturn10,\n TArgs11 extends Args<TReturn10>, TReturn11,\n TArgs12 extends Args<TReturn11>, TReturn12,\n TArgs13 extends Args<TReturn12>, TReturn13,\n >(\n it: Iterable<T> | PushIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n pass3: (this: void, ...args: TArgs3) => TReturn3,\n pass4: (this: void, ...args: TArgs4) => TReturn4,\n pass5: (this: void, ...args: TArgs5) => TReturn5,\n pass6: (this: void, ...args: TArgs6) => TReturn6,\n pass7: (this: void, ...args: TArgs7) => TReturn7,\n pass8: (this: void, ...args: TArgs8) => TReturn8,\n pass9: (this: void, ...args: TArgs9) => TReturn9,\n pass10: (this: void, ...args: TArgs10) => TReturn10,\n pass11: (this: void, ...args: TArgs11) => TReturn11,\n pass12: (this: void, ...args: TArgs12) => TReturn12,\n pass13: (this: void, ...args: TArgs13) => TReturn13,\n): PushIterable<Out<TReturn4>>;\n\nexport function thruIt<T, TReturn>(\n it: Iterable<T> | PushIterable<T>,\n ...passes: ((...args: any[]) => any)[]\n): PushIterable<TReturn> {\n\n const chain = (outcome: PushIterable<any>[], index: number): IterableCallChain => {\n\n const lastPass = index >= passes.length;\n\n ++index;\n\n const pass = index < passes.length ? passes[index] : () => { /* empty pass */ };\n const handleResult = (outcome: PushIterable<any>[], callResult: any, arg: any): void => {\n if (isNextCall(callResult)) {\n callResult[NextCall__symbol](chain(outcome, index), pass);\n } else if (lastPass) {\n outcome.push(overOne(arg));\n } else {\n chain(outcome, index).pass(pass, callResult);\n }\n };\n\n return ({\n call<A extends any[]>(fn: (...args: A) => any, args: A): void {\n handleResult(outcome, fn(...args), args);\n },\n pass<A>(fn: (arg: A) => any, arg: A): void {\n handleResult(outcome, fn(arg), arg);\n },\n skip() {/* skip item */},\n iterate<I>(fn: (this: void, arg: I) => void, iterable: Iterable<I>): void {\n outcome.push(flatMapIt(\n iterable,\n item => {\n\n const itemOutcome: PushIterable<any>[] = [];\n\n handleResult(itemOutcome, fn(item), item);\n\n return overElementsOf(...itemOutcome);\n },\n ));\n },\n });\n };\n\n const finalOutcome: PushIterable<any>[] = [];\n\n chain(finalOutcome, 0).iterate(passes[0], it);\n\n return overElementsOf<TReturn>(...finalOutcome);\n}\n"],"names":[],"mappings":";;;AAAA;;;;AAQA;;;;;;;;;;;;SAYgB,WAAW,CAAI,QAAuC;IACpE,OAAO,QAAQ,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;AAClE;;ACtBA;;;;SA2QgB,MAAM,CAClB,EAAiC,EACjC,GAAG,MAAmC;IAGxC,MAAM,KAAK,GAAG,CAAC,OAA4B,EAAE,KAAa;QAExD,MAAM,QAAQ,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC;QAExC,EAAE,KAAK,CAAC;QAER,MAAM,IAAI,GAAG,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,SAA0B,CAAC;QAChF,MAAM,YAAY,GAAG,CAAC,OAA4B,EAAE,UAAe,EAAE,GAAQ;YAC3E,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE;gBAC1B,UAAU,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;aAC3D;iBAAM,IAAI,QAAQ,EAAE;gBACnB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;aAC5B;iBAAM;gBACL,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;aAC9C;SACF,CAAC;QAEF,QAAQ;YACN,IAAI,CAAkB,EAAuB,EAAE,IAAO;gBACpD,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;aAC1C;YACD,IAAI,CAAI,EAAmB,EAAE,GAAM;gBACjC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;aACrC;YACD,IAAI,MAAoB;YACxB,OAAO,CAAI,EAAgC,EAAE,QAAqB;gBAChE,OAAO,CAAC,IAAI,CAAC,SAAS,CAClB,QAAQ,EACR,IAAI;oBAEF,MAAM,WAAW,GAAwB,EAAE,CAAC;oBAE5C,YAAY,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;oBAE1C,OAAO,cAAc,CAAC,GAAG,WAAW,CAAC,CAAC;iBACvC,CACJ,CAAC,CAAC;aACJ;SACF,EAAE;KACJ,CAAC;IAEF,MAAM,YAAY,GAAwB,EAAE,CAAC;IAE7C,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAE9C,OAAO,cAAc,CAAU,GAAG,YAAY,CAAC,CAAC;AAClD;;;;"}
{"version":3,"file":"push-iterator.call-thru.mjs","sources":["../src/call-thru/next-iterate.ts","../src/call-thru/thru-it.ts"],"sourcesContent":["/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator/call-thru\n */\nimport { NextCall, nextCall } from '@proc7ts/call-thru';\nimport type { PushOrRawIterable } from '../push-iterable';\nimport type { IterableCallChain } from './iterable-call-chain';\n\n/**\n * Creates a next call in {@link IterableCallChain iterable call chain} that performs the next passes for each\n * element of the given iterable.\n *\n * This call passes elements to the next call on demand, while the `nextEach()` one transforms them all at once,\n * and iterates over results after that.\n *\n * @typeParam T Iterated elements type.\n * @param iterable An iterable containing elements to pass down the chain.\n *\n * @returns Next call for iterable call chain.\n */\nexport function nextIterate<T>(iterable: PushOrRawIterable<T>): NextCall<IterableCallChain, [T], T> {\n return nextCall((chain, pass) => chain.iterate(pass, iterable));\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator/call-thru\n */\nimport { isNextCall, NextCall__symbol } from '@proc7ts/call-thru';\nimport { overElementsOf, overOne } from '../construction';\nimport type { PushIterable, PushOrRawIterable } from '../push-iterable';\nimport { flatMapIt } from '../transformation';\nimport type { IterableCallChain } from './iterable-call-chain';\n\ntype Args<TReturn> = IterableCallChain.Args<TReturn>;\ntype Out<TReturn> = IterableCallChain.Out<TReturn>;\n\n/**\n * Passes each element of the given iterable trough the {@link IterableCallChain chain of transformation passes}.\n *\n * The passes are preformed by `@proc7ts/call-thru`.\n *\n * @returns An push iterable of transformed elements.\n */\nexport function thruIt<\n T, TReturn1\n >(\n it: PushOrRawIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n): PushIterable<Out<TReturn1>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n >(\n it: PushOrRawIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n): PushIterable<Out<TReturn2>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n TArgs3 extends Args<TReturn2>, TReturn3,\n >(\n it: PushOrRawIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n pass3: (this: void, ...args: TArgs3) => TReturn3,\n): PushIterable<Out<TReturn3>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n TArgs3 extends Args<TReturn2>, TReturn3,\n TArgs4 extends Args<TReturn3>, TReturn4,\n >(\n it: PushOrRawIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n pass3: (this: void, ...args: TArgs3) => TReturn3,\n pass4: (this: void, ...args: TArgs4) => TReturn4,\n): PushIterable<Out<TReturn4>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n TArgs3 extends Args<TReturn2>, TReturn3,\n TArgs4 extends Args<TReturn3>, TReturn4,\n TArgs5 extends Args<TReturn4>, TReturn5,\n >(\n it: PushOrRawIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n pass3: (this: void, ...args: TArgs3) => TReturn3,\n pass4: (this: void, ...args: TArgs4) => TReturn4,\n pass5: (this: void, ...args: TArgs5) => TReturn5,\n): PushIterable<Out<TReturn4>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n TArgs3 extends Args<TReturn2>, TReturn3,\n TArgs4 extends Args<TReturn3>, TReturn4,\n TArgs5 extends Args<TReturn4>, TReturn5,\n TArgs6 extends Args<TReturn5>, TReturn6,\n >(\n it: PushOrRawIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n pass3: (this: void, ...args: TArgs3) => TReturn3,\n pass4: (this: void, ...args: TArgs4) => TReturn4,\n pass5: (this: void, ...args: TArgs5) => TReturn5,\n pass6: (this: void, ...args: TArgs6) => TReturn6,\n): PushIterable<Out<TReturn4>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n TArgs3 extends Args<TReturn2>, TReturn3,\n TArgs4 extends Args<TReturn3>, TReturn4,\n TArgs5 extends Args<TReturn4>, TReturn5,\n TArgs6 extends Args<TReturn5>, TReturn6,\n TArgs7 extends Args<TReturn6>, TReturn7,\n >(\n it: PushOrRawIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n pass3: (this: void, ...args: TArgs3) => TReturn3,\n pass4: (this: void, ...args: TArgs4) => TReturn4,\n pass5: (this: void, ...args: TArgs5) => TReturn5,\n pass6: (this: void, ...args: TArgs6) => TReturn6,\n pass7: (this: void, ...args: TArgs7) => TReturn7,\n): PushIterable<Out<TReturn4>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n TArgs3 extends Args<TReturn2>, TReturn3,\n TArgs4 extends Args<TReturn3>, TReturn4,\n TArgs5 extends Args<TReturn4>, TReturn5,\n TArgs6 extends Args<TReturn5>, TReturn6,\n TArgs7 extends Args<TReturn6>, TReturn7,\n TArgs8 extends Args<TReturn7>, TReturn8,\n >(\n it: PushOrRawIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n pass3: (this: void, ...args: TArgs3) => TReturn3,\n pass4: (this: void, ...args: TArgs4) => TReturn4,\n pass5: (this: void, ...args: TArgs5) => TReturn5,\n pass6: (this: void, ...args: TArgs6) => TReturn6,\n pass7: (this: void, ...args: TArgs7) => TReturn7,\n pass8: (this: void, ...args: TArgs8) => TReturn8,\n): PushIterable<Out<TReturn4>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n TArgs3 extends Args<TReturn2>, TReturn3,\n TArgs4 extends Args<TReturn3>, TReturn4,\n TArgs5 extends Args<TReturn4>, TReturn5,\n TArgs6 extends Args<TReturn5>, TReturn6,\n TArgs7 extends Args<TReturn6>, TReturn7,\n TArgs8 extends Args<TReturn7>, TReturn8,\n TArgs9 extends Args<TReturn8>, TReturn9,\n >(\n it: PushOrRawIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n pass3: (this: void, ...args: TArgs3) => TReturn3,\n pass4: (this: void, ...args: TArgs4) => TReturn4,\n pass5: (this: void, ...args: TArgs5) => TReturn5,\n pass6: (this: void, ...args: TArgs6) => TReturn6,\n pass7: (this: void, ...args: TArgs7) => TReturn7,\n pass8: (this: void, ...args: TArgs8) => TReturn8,\n pass9: (this: void, ...args: TArgs9) => TReturn9,\n): PushIterable<Out<TReturn4>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n TArgs3 extends Args<TReturn2>, TReturn3,\n TArgs4 extends Args<TReturn3>, TReturn4,\n TArgs5 extends Args<TReturn4>, TReturn5,\n TArgs6 extends Args<TReturn5>, TReturn6,\n TArgs7 extends Args<TReturn6>, TReturn7,\n TArgs8 extends Args<TReturn7>, TReturn8,\n TArgs9 extends Args<TReturn8>, TReturn9,\n TArgs10 extends Args<TReturn9>, TReturn10,\n >(\n it: PushOrRawIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n pass3: (this: void, ...args: TArgs3) => TReturn3,\n pass4: (this: void, ...args: TArgs4) => TReturn4,\n pass5: (this: void, ...args: TArgs5) => TReturn5,\n pass6: (this: void, ...args: TArgs6) => TReturn6,\n pass7: (this: void, ...args: TArgs7) => TReturn7,\n pass8: (this: void, ...args: TArgs8) => TReturn8,\n pass9: (this: void, ...args: TArgs9) => TReturn9,\n pass10: (this: void, ...args: TArgs10) => TReturn10,\n): PushIterable<Out<TReturn4>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n TArgs3 extends Args<TReturn2>, TReturn3,\n TArgs4 extends Args<TReturn3>, TReturn4,\n TArgs5 extends Args<TReturn4>, TReturn5,\n TArgs6 extends Args<TReturn5>, TReturn6,\n TArgs7 extends Args<TReturn6>, TReturn7,\n TArgs8 extends Args<TReturn7>, TReturn8,\n TArgs9 extends Args<TReturn8>, TReturn9,\n TArgs10 extends Args<TReturn9>, TReturn10,\n TArgs11 extends Args<TReturn10>, TReturn11,\n >(\n it: PushOrRawIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n pass3: (this: void, ...args: TArgs3) => TReturn3,\n pass4: (this: void, ...args: TArgs4) => TReturn4,\n pass5: (this: void, ...args: TArgs5) => TReturn5,\n pass6: (this: void, ...args: TArgs6) => TReturn6,\n pass7: (this: void, ...args: TArgs7) => TReturn7,\n pass8: (this: void, ...args: TArgs8) => TReturn8,\n pass9: (this: void, ...args: TArgs9) => TReturn9,\n pass10: (this: void, ...args: TArgs10) => TReturn10,\n pass11: (this: void, ...args: TArgs11) => TReturn11,\n): PushIterable<Out<TReturn4>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n TArgs3 extends Args<TReturn2>, TReturn3,\n TArgs4 extends Args<TReturn3>, TReturn4,\n TArgs5 extends Args<TReturn4>, TReturn5,\n TArgs6 extends Args<TReturn5>, TReturn6,\n TArgs7 extends Args<TReturn6>, TReturn7,\n TArgs8 extends Args<TReturn7>, TReturn8,\n TArgs9 extends Args<TReturn8>, TReturn9,\n TArgs10 extends Args<TReturn9>, TReturn10,\n TArgs11 extends Args<TReturn10>, TReturn11,\n TArgs12 extends Args<TReturn11>, TReturn12,\n >(\n it: PushOrRawIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n pass3: (this: void, ...args: TArgs3) => TReturn3,\n pass4: (this: void, ...args: TArgs4) => TReturn4,\n pass5: (this: void, ...args: TArgs5) => TReturn5,\n pass6: (this: void, ...args: TArgs6) => TReturn6,\n pass7: (this: void, ...args: TArgs7) => TReturn7,\n pass8: (this: void, ...args: TArgs8) => TReturn8,\n pass9: (this: void, ...args: TArgs9) => TReturn9,\n pass10: (this: void, ...args: TArgs10) => TReturn10,\n pass11: (this: void, ...args: TArgs11) => TReturn11,\n pass12: (this: void, ...args: TArgs12) => TReturn12,\n): PushIterable<Out<TReturn4>>;\n\nexport function thruIt<\n T, TReturn1,\n TArgs2 extends Args<TReturn1>, TReturn2,\n TArgs3 extends Args<TReturn2>, TReturn3,\n TArgs4 extends Args<TReturn3>, TReturn4,\n TArgs5 extends Args<TReturn4>, TReturn5,\n TArgs6 extends Args<TReturn5>, TReturn6,\n TArgs7 extends Args<TReturn6>, TReturn7,\n TArgs8 extends Args<TReturn7>, TReturn8,\n TArgs9 extends Args<TReturn8>, TReturn9,\n TArgs10 extends Args<TReturn9>, TReturn10,\n TArgs11 extends Args<TReturn10>, TReturn11,\n TArgs12 extends Args<TReturn11>, TReturn12,\n TArgs13 extends Args<TReturn12>, TReturn13,\n >(\n it: PushOrRawIterable<T>,\n pass1: (this: void, arg: T) => TReturn1,\n pass2: (this: void, ...args: TArgs2) => TReturn2,\n pass3: (this: void, ...args: TArgs3) => TReturn3,\n pass4: (this: void, ...args: TArgs4) => TReturn4,\n pass5: (this: void, ...args: TArgs5) => TReturn5,\n pass6: (this: void, ...args: TArgs6) => TReturn6,\n pass7: (this: void, ...args: TArgs7) => TReturn7,\n pass8: (this: void, ...args: TArgs8) => TReturn8,\n pass9: (this: void, ...args: TArgs9) => TReturn9,\n pass10: (this: void, ...args: TArgs10) => TReturn10,\n pass11: (this: void, ...args: TArgs11) => TReturn11,\n pass12: (this: void, ...args: TArgs12) => TReturn12,\n pass13: (this: void, ...args: TArgs13) => TReturn13,\n): PushIterable<Out<TReturn4>>;\n\nexport function thruIt<T, TReturn>(\n it: PushOrRawIterable<T>,\n ...passes: ((...args: any[]) => any)[]\n): PushIterable<TReturn> {\n\n const chain = (outcome: PushIterable<any>[], index: number): IterableCallChain => {\n\n const lastPass = index >= passes.length;\n\n ++index;\n\n const pass = index < passes.length ? passes[index] : () => { /* empty pass */ };\n const handleResult = (outcome: PushIterable<any>[], callResult: any, arg: any): void => {\n if (isNextCall(callResult)) {\n callResult[NextCall__symbol](chain(outcome, index), pass);\n } else if (lastPass) {\n outcome.push(overOne(arg));\n } else {\n chain(outcome, index).pass(pass, callResult);\n }\n };\n\n return ({\n call<A extends any[]>(fn: (...args: A) => any, args: A): void {\n handleResult(outcome, fn(...args), args);\n },\n pass<A>(fn: (arg: A) => any, arg: A): void {\n handleResult(outcome, fn(arg), arg);\n },\n skip() {/* skip item */},\n iterate<I>(fn: (this: void, arg: I) => void, iterable: PushOrRawIterable<I>): void {\n outcome.push(flatMapIt(\n iterable,\n item => {\n\n const itemOutcome: PushIterable<any>[] = [];\n\n handleResult(itemOutcome, fn(item), item);\n\n return overElementsOf(...itemOutcome);\n },\n ));\n },\n });\n };\n\n const finalOutcome: PushIterable<any>[] = [];\n\n chain(finalOutcome, 0).iterate(passes[0], it);\n\n return overElementsOf<TReturn>(...finalOutcome);\n}\n"],"names":[],"mappings":";;;AAAA;;;;AAQA;;;;;;;;;;;;SAYgB,WAAW,CAAI,QAA8B;IAC3D,OAAO,QAAQ,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;AAClE;;ACtBA;;;;SA2QgB,MAAM,CAClB,EAAwB,EACxB,GAAG,MAAmC;IAGxC,MAAM,KAAK,GAAG,CAAC,OAA4B,EAAE,KAAa;QAExD,MAAM,QAAQ,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC;QAExC,EAAE,KAAK,CAAC;QAER,MAAM,IAAI,GAAG,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,SAA0B,CAAC;QAChF,MAAM,YAAY,GAAG,CAAC,OAA4B,EAAE,UAAe,EAAE,GAAQ;YAC3E,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE;gBAC1B,UAAU,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;aAC3D;iBAAM,IAAI,QAAQ,EAAE;gBACnB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;aAC5B;iBAAM;gBACL,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;aAC9C;SACF,CAAC;QAEF,QAAQ;YACN,IAAI,CAAkB,EAAuB,EAAE,IAAO;gBACpD,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;aAC1C;YACD,IAAI,CAAI,EAAmB,EAAE,GAAM;gBACjC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;aACrC;YACD,IAAI,MAAoB;YACxB,OAAO,CAAI,EAAgC,EAAE,QAA8B;gBACzE,OAAO,CAAC,IAAI,CAAC,SAAS,CAClB,QAAQ,EACR,IAAI;oBAEF,MAAM,WAAW,GAAwB,EAAE,CAAC;oBAE5C,YAAY,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;oBAE1C,OAAO,cAAc,CAAC,GAAG,WAAW,CAAC,CAAC;iBACvC,CACJ,CAAC,CAAC;aACJ;SACF,EAAE;KACJ,CAAC;IAEF,MAAM,YAAY,GAAwB,EAAE,CAAC;IAE7C,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAE9C,OAAO,cAAc,CAAU,GAAG,YAAY,CAAC,CAAC;AAClD;;;;"}

@@ -6,13 +6,2 @@ 'use strict';

/**
* Checks whether the given iterator implements push iteration protocol.
*
* @param iterator Target iterator to check.
*
* @returns `true` if `iterator` has {@link PushIterator.forNext forNext} method, or `false` otherwise.
*/
function isPushIterator(iterator) {
return !!iterator.forNext;
}
/**
* @internal

@@ -45,3 +34,3 @@ */

function toPushIterator(it) {
if (isPushIterator(it)) {
if (it.forNext) {
return it;

@@ -309,6 +298,2 @@ }

/**
* @packageDocumentation
* @module @proc7ts/push-iterator
*/
/**
* Performs the given `action` for each element of the given `iterable`.

@@ -323,4 +308,5 @@ *

const it = iterable[Symbol.iterator]();
if (isPushIterator(it)) {
it.forNext(element => {
const forNext = it.forNext;
if (forNext) {
forNext(element => {
action(element);

@@ -341,6 +327,2 @@ });

/**
* @packageDocumentation
* @module @proc7ts/push-iterator
*/
/**
* Checks whether the given `iterable` is empty.

@@ -354,5 +336,6 @@ *

const it = iterable[Symbol.iterator]();
if (isPushIterator(it)) {
const forNext = it.forNext;
if (forNext) {
let isEmpty = true;
itsIterator(iterable).forNext(() => isEmpty = false);
forNext(() => isEmpty = false);
return isEmpty;

@@ -385,6 +368,2 @@ }

/**
* @packageDocumentation
* @module @proc7ts/push-iterator
*/
/**
* Extracts the first element of the given `iterable`, if any.

@@ -399,5 +378,6 @@ *

const it = iterable[Symbol.iterator]();
if (isPushIterator(it)) {
const forNext = it.forNext;
if (forNext) {
let first;
it.forNext(element => {
forNext(element => {
first = element;

@@ -413,6 +393,2 @@ return false;

/**
* @packageDocumentation
* @module @proc7ts/push-iterator
*/
/**
* Applies a function against an accumulator and each element of the given `iterable` to reduce elements to a single

@@ -433,4 +409,5 @@ * value.

const it = iterable[Symbol.iterator]();
if (isPushIterator(it)) {
it.forNext(element => {
const forNext = it.forNext;
if (forNext) {
forNext(element => {
reduced = reducer(reduced, element);

@@ -589,3 +566,2 @@ });

exports.flatMapIt = flatMapIt;
exports.isPushIterator = isPushIterator;
exports.itsEach = itsEach;

@@ -592,0 +568,0 @@ exports.itsEmpty = itsEmpty;

@@ -1,1 +0,1 @@

{"version":3,"file":"push-iterator.js","sources":["../src/is-push-iterator.ts","../src/push-iterator.impl.ts","../src/array-iterator.impl.ts","../src/construction/over-array.ts","../src/its-iterator.ts","../src/make-push-iterator.ts","../src/construction/over-iterable.ts","../src/construction/over-none.ts","../src/construction/over-elements-of.ts","../src/construction/over-one.ts","../src/construction/over-many.ts","../src/construction/reverse-array.ts","../src/consumption/its-each.ts","../src/consumption/its-empty.ts","../src/consumption/its-every.ts","../src/consumption/its-first.ts","../src/consumption/its-reduction.ts","../src/consumption/its-some.ts","../src/objects/over-keys.ts","../src/transformation/filter-it.ts","../src/transformation/flat-map-it.ts","../src/transformation/map-it.ts","../src/objects/over-entries.ts"],"sourcesContent":["/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport type { PushIterator } from './push-iterator';\n\n/**\n * Checks whether the given iterator implements push iteration protocol.\n *\n * @param iterator Target iterator to check.\n *\n * @returns `true` if `iterator` has {@link PushIterator.forNext forNext} method, or `false` otherwise.\n */\nexport function isPushIterator<T>(iterator: Iterator<T> | PushIterator<T>): iterator is PushIterator<T> {\n return !!(iterator as PushIterator<T>).forNext;\n}\n","import { isPushIterator } from './is-push-iterator';\nimport type { PushIterator } from './push-iterator';\n\n/**\n * @internal\n */\nexport function PushIterator$iterator<T>(this: PushIterator<T>): PushIterator<T> {\n return this;\n}\n\n/**\n * @internal\n */\nexport function PushIterator$next<T>(this: PushIterator<T>): IteratorResult<T> {\n for (; ;) {\n\n let result: IteratorYieldResult<T> | undefined;\n const done = !this.forNext(value => {\n result = { value };\n return false;\n });\n\n if (result) {\n return result;\n }\n if (done) {\n return { done: true } as IteratorReturnResult<T>;\n }\n }\n}\n\n/**\n * @internal\n */\nexport function toPushIterator<T>(it: Iterator<T>): PushIterator<T> {\n if (isPushIterator(it)) {\n return it;\n }\n\n return {\n\n [Symbol.iterator]: PushIterator$iterator,\n\n next() {\n return it.next();\n },\n\n forNext(accept) {\n for (; ;) {\n\n const res = it.next();\n\n if (res.done) {\n return false;\n }\n if (accept(res.value) === false) {\n return true;\n }\n }\n },\n\n };\n}\n","import type { PushIterator } from './push-iterator';\nimport { PushIterator$iterator } from './push-iterator.impl';\n\n/**\n * @internal\n */\nexport function arrayIterator<T>(array: ArrayLike<T>): PushIterator<T> {\n\n let i = 0;\n\n return {\n [Symbol.iterator]: PushIterator$iterator,\n next: () => i < array.length ? { value: array[i++] } : { done: true } as IteratorReturnResult<undefined>,\n forNext(accept) {\n if (i >= array.length) {\n return false;\n }\n\n for (; ;) {\n\n const goOn = accept(array[i++]);\n\n if (i >= array.length) {\n return false;\n }\n if (goOn === false) {\n return true;\n }\n }\n },\n };\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { arrayIterator } from '../array-iterator.impl';\nimport type { PushIterable } from '../push-iterable';\n\n/**\n * Creates a {@link PushIterable push iterable} over elements of array-like structure.\n *\n * @typeParam T Array elements type.\n * @param array An array-like structure. E.g. `Array`, DOM `NodeList`, etc.\n *\n * @returns New push iterable over array elements.\n */\nexport function overArray<T>(array: ArrayLike<T>): PushIterable<T> {\n return { [Symbol.iterator]: () => arrayIterator(array) };\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { arrayIterator } from './array-iterator.impl';\nimport type { PushIterable } from './push-iterable';\nimport type { PushIterator } from './push-iterator';\nimport { toPushIterator } from './push-iterator.impl';\n\n/**\n * Starts iteration over the given `iterable`.\n *\n * @typeParam T Iterated elements type.\n * @param iterable An iterable or push iterable to iterate over.\n *\n * @return A push iterator iterating over the given iterable.\n */\nexport function itsIterator<T>(iterable: Iterable<T> | PushIterable<T>): PushIterator<T> {\n if (Array.isArray(iterable)) {\n return arrayIterator<T>(iterable);\n }\n return toPushIterator(iterable[Symbol.iterator]());\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport type { PushIterator } from './push-iterator';\nimport { PushIterator$iterator, PushIterator$next } from './push-iterator.impl';\n\n/**\n * Creates push iterator implementation.\n *\n * @param forNext A function iterating over elements conforming to {@link PushIterator.forNext} requirement.\n *\n * @returns New push iterator instance performing iteration by `forNext` function.\n */\nexport function makePushIterator<T>(forNext: PushIterator.Pusher<T>): PushIterator<T> {\n return {\n [Symbol.iterator]: PushIterator$iterator,\n next: PushIterator$next,\n forNext,\n };\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport type { PushIterable } from '../push-iterable';\nimport { toPushIterator } from '../push-iterator.impl';\nimport { overArray } from './over-array';\n\n/**\n * Creates a {@link PushIterable push iterable} over elements of the given raw iterable.\n *\n * @typeParam T Iterated elements type.\n * @param source Source iterable to iterate over elements of.\n *\n * @returns New push iterable over elements of the given `source`.\n */\nexport function overIterable<T>(source: Iterable<T>): PushIterable<T> {\n if (Array.isArray(source)) {\n return overArray<T>(source);\n }\n return { [Symbol.iterator]: () => toPushIterator(source[Symbol.iterator]()) };\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport type { PushIterable } from '../push-iterable';\nimport type { PushIterator } from '../push-iterator';\n\n/**\n * @internal\n */\nconst noneIterator = {\n [Symbol.iterator]: () => noneIterator,\n next: () => ({ done: true } as IteratorReturnResult<unknown>),\n forNext: () => false,\n};\n\n/**\n * Returns a {@link PushIterator push iterable iterator} without elements.\n *\n * @typeParam T Iterated elements type.\n *\n * @returns Empty push iterable and push iterator instance.\n */\nexport function overNone<T>(): PushIterable<T> & PushIterator<T> {\n return noneIterator;\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { itsIterator } from '../its-iterator';\nimport { makePushIterator } from '../make-push-iterator';\nimport type { PushIterable } from '../push-iterable';\nimport type { PushIterator } from '../push-iterator';\nimport { overIterable } from './over-iterable';\nimport { overNone } from './over-none';\n\n/**\n * Creates a {@link PushIterable push iterable} over elements of other iterables.\n *\n * @typeParam T Iterated elements type.\n * @param sources Source iterables to iterate over elements of.\n *\n * @returns New push iterable over elements of the given `sources`.\n */\nexport function overElementsOf<T>(...sources: Iterable<T>[]): PushIterable<T> {\n if (sources.length > 1) {\n return {\n [Symbol.iterator](): PushIterator<T> {\n\n let i = 0;\n let it: PushIterator<T> = itsIterator(sources[0]);\n\n return makePushIterator(accept => {\n for (;;) {\n\n // eslint-disable-next-line @typescript-eslint/no-invalid-void-type\n let goOn: boolean | void;\n\n if (!it.forNext(element => goOn = accept(element))) {\n if (++i >= sources.length) {\n return false;\n }\n it = itsIterator(sources[i]);\n }\n if (goOn === false) {\n return true;\n }\n }\n });\n },\n };\n }\n if (sources.length) {\n return overIterable(sources[0]);\n }\n return overNone();\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport type { PushIterable } from '../push-iterable';\nimport type { PushIterator } from '../push-iterator';\nimport { PushIterator$iterator } from '../push-iterator.impl';\n\n/**\n * Creates a {@link PushIterable push iterable} over one value.\n *\n * @typeParam T Iterated element value type.\n * @param value A value to iterate over.\n *\n * @returns New push iterable over the given value.\n */\nexport function overOne<T>(value: T): PushIterable<T> {\n return { [Symbol.iterator]: () => oneValueIterator(value) };\n}\n\n/**\n * @internal\n */\nfunction oneValueIterator<T>(value: T): PushIterator<T> {\n\n let done = false;\n\n return {\n [Symbol.iterator]: PushIterator$iterator,\n next() {\n if (done) {\n return { done } as IteratorReturnResult<undefined>;\n }\n done = true;\n return { value };\n },\n forNext(accept) {\n if (!done) {\n done = true;\n accept(value);\n }\n return false;\n },\n };\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport type { PushIterable } from '../push-iterable';\nimport { overArray } from './over-array';\nimport { overNone } from './over-none';\nimport { overOne } from './over-one';\n\n/**\n * Creates a {@link PushIterable push iterable} over many values.\n *\n * @typeParam T Iterated elements value type.\n * @param values Values to iterate over.\n *\n * @returns New push iterable over the given values.\n */\nexport function overMany<T>(...values: readonly T[]): PushIterable<T> {\n if (values.length > 1) {\n return overArray(values);\n }\n if (values.length) {\n return overOne(values[0]);\n }\n return overNone();\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { makePushIterator } from '../make-push-iterator';\nimport type { PushIterable } from '../push-iterable';\nimport type { PushIterator } from '../push-iterator';\n\n/**\n * Creates a {@link PushIterable push iterable} over elements of array-like structure in reverse order.\n *\n * @typeParam T Array elements type.\n * @param array An array-like structure. E.g. `Array`, DOM `NodeList`, etc.\n *\n * @returns New push iterable over array elements in reverse order.\n */\nexport function reverseArray<T>(array: ArrayLike<T>): PushIterable<T> {\n return { [Symbol.iterator]: () => reverseArrayIterator(array) };\n}\n\n/**\n * @internal\n */\nfunction reverseArrayIterator<T>(array: ArrayLike<T>): PushIterator<T> {\n\n let i = array.length - 1;\n\n return makePushIterator(accept => {\n if (i < 0) {\n return false;\n }\n\n for (; ;) {\n\n const goOn = accept(array[i--]);\n\n if (i < 0) {\n return false;\n }\n if (goOn === false) {\n return true;\n }\n }\n });\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { isPushIterator } from '../is-push-iterator';\nimport type { PushIterable } from '../push-iterable';\n\n/**\n * Performs the given `action` for each element of the given `iterable`.\n *\n * @typeParam T Iterated elements type.\n * @param iterable An iterable of elements to perform actions on.\n * @param action An action to perform on each iterable element. This is a function accepting an element as its only\n * parameter.\n */\nexport function itsEach<T>(iterable: Iterable<T> | PushIterable<T>, action: (this: void, element: T) => void): void {\n\n const it = iterable[Symbol.iterator]();\n\n if (isPushIterator(it)) {\n it.forNext(element => {\n action(element);\n });\n } else {\n for (;;) {\n\n const res = it.next();\n\n if (res.done) {\n break;\n }\n\n action(res.value);\n }\n }\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { isPushIterator } from '../is-push-iterator';\nimport { itsIterator } from '../its-iterator';\nimport type { PushIterable } from '../push-iterable';\n\n/**\n * Checks whether the given `iterable` is empty.\n *\n * @param iterable An iterable or push iterable to check for elements.\n *\n * @return `true` if the given iterable contains at least one element, or `false` otherwise.\n */\nexport function itsEmpty(iterable: Iterable<any> | PushIterable<any>): boolean {\n\n const it = iterable[Symbol.iterator]();\n\n if (isPushIterator(it)) {\n\n let isEmpty = true;\n\n itsIterator(iterable).forNext(() => isEmpty = false);\n\n return isEmpty;\n }\n\n return !!it.next().done;\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { itsIterator } from '../its-iterator';\nimport type { PushIterable } from '../push-iterable';\n\n/**\n * Tests whether all elements of the given `iterable` pass the test implemented by the provided function.\n *\n * @typeParam T Iterated elements type.\n * @param iterable An iterable to test elements of.\n * @param test A predicate function to test each element. Returns `true` to continue tests, or `false` to stop it\n * and return `false` from the method call. It accepts the tested element as the only parameter.\n *\n * @returns `true` if the `test` function returned a truthy value for every element, or `false` otherwise.\n * Returns `true` for empty iterable.\n */\nexport function itsEvery<T>(\n iterable: Iterable<T> | PushIterable<T>,\n test: (this: void, element: T) => boolean,\n): boolean {\n\n let allMatch = true;\n\n itsIterator(iterable).forNext(element => allMatch = !!test(element));\n\n return allMatch;\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { isPushIterator } from '../is-push-iterator';\nimport type { PushIterable } from '../push-iterable';\n\n/**\n * Extracts the first element of the given `iterable`, if any.\n *\n * @typeParam T Iterated elements type.\n * @param iterable An iterable to extract element from.\n *\n * @return Either the first element, or `undefined` if the given `iterable` is empty.\n */\nexport function itsFirst<T>(iterable: Iterable<T> | PushIterable<T>): T | undefined {\n\n const it = iterable[Symbol.iterator]();\n\n if (isPushIterator(it)) {\n\n let first: T | undefined;\n\n it.forNext(element => {\n first = element;\n return false;\n });\n\n return first;\n }\n\n const result = it.next();\n\n return result.done ? undefined : result.value;\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { isPushIterator } from '../is-push-iterator';\nimport type { PushIterable } from '../push-iterable';\n\n/**\n * Applies a function against an accumulator and each element of the given `iterable` to reduce elements to a single\n * value.\n *\n * @typeParam T A type of `iterable` elements.\n * @typeParam R A type of reduced value.\n * @param iterable An iterable to reduce values of.\n * @param reducer A function to apply the value returned from the previous `reducer` call and to each element.\n * @param initialValue Initial value passed to the first `reducer` call.\n *\n * @return Reduced value returned from the last `reducer` call, or `initialValue` if there is no elements in the given\n * `iterable`.\n */\nexport function itsReduction<T, R>(\n iterable: Iterable<T> | PushIterable<T>,\n reducer: (this: void, prev: R, element: T) => R,\n initialValue: R,\n): R {\n\n let reduced = initialValue;\n const it = iterable[Symbol.iterator]();\n\n if (isPushIterator(it)) {\n it.forNext(element => {\n reduced = reducer(reduced, element);\n });\n } else {\n for (;;) {\n\n const res = it.next();\n\n if (res.done) {\n break;\n }\n\n reduced = reducer(reduced, res.value);\n }\n }\n\n return reduced;\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { itsIterator } from '../its-iterator';\nimport type { PushIterable } from '../push-iterable';\n\n/**\n * Tests whether at least one element of the given `iterable` passes the test implemented by the provided function.\n *\n * @typeParam T A type of `iterable` elements.\n * @param iterable An iterable to test elements of.\n * @param test A predicate function to test each element. Returns `false` to continue tests, or `true` to stop it\n * and return `true` from the method call. It accepts the tested element as the only parameter.\n *\n * @returns `true` if the callback function returned a truthy value for at least one element in the array, or `false`\n * otherwise. Returns `false` for empty iterable.\n */\nexport function itsSome<T>(\n iterable: Iterable<T> | PushIterable<T>,\n test: (this: void, element: T) => boolean,\n): boolean {\n\n let someMatches = false;\n\n itsIterator(iterable).forNext(element => !(someMatches = !!test(element)));\n\n return someMatches;\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { overArray } from '../construction';\nimport type { PushIterable } from '../push-iterable';\n\n/**\n * Creates a {@link PushIterable push iterable} over keys of the given object.\n *\n * A list of keys is constructed using `Reflect.ownKeys()`.\n *\n * @typeParam T Source object type.\n * @param source An object to select keys from.\n *\n * @returns New push iterable over own object keys retrieved by `Reflect.ownKeys()`.\n */\nexport function overKeys<T extends object>(source: T): PushIterable<keyof T> {\n return overArray(Reflect.ownKeys(source) as (keyof T)[]);\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { itsIterator } from '../its-iterator';\nimport { makePushIterator } from '../make-push-iterator';\nimport type { PushIterable } from '../push-iterable';\nimport type { PushIterator } from '../push-iterator';\n\n/**\n * Creates a {@link PushIterable push iterable} with all `source` iterable elements that pass the test implemented by\n * the provided function.\n *\n * @typeParam T A type of source elements.\n * @param source A source iterable.\n * @param test A predicate function to test each element. Returns `true` to keep the element, or `false` otherwise.\n * It accepts the tested element as the only parameter.\n *\n * @return New push iterable with the elements that pass the test. If no elements passed the test, an empty iterable\n * will be returned.\n */\nexport function filterIt<T>(\n source: Iterable<T> | PushIterable<T>,\n test: (this: void, element: T) => boolean,\n): PushIterable<T>;\n\n/**\n * Creates a {@link PushIterable push iterable} with all `source` iterable elements extending the given type.\n *\n * @typeParam T A type of source elements\n * @typeParam R Target type.\n * @param source A source iterable.\n * @param test A predicate function to test that element extends the type `R`. Returns `true` to keep the element, or\n * `false` otherwise. It accepts the tested element as the only parameter.\n *\n * @return New push iterable with the elements that pass the test. If no elements passed the test, an empty iterable\n * will be returned.\n */\nexport function filterIt<T, R extends T>(\n source: Iterable<T> | PushIterable<T>,\n test: (this: void, element: T) => element is R,\n): PushIterable<R>;\n\nexport function filterIt<T>(\n source: Iterable<T> | PushIterable<T>,\n test: (this: void, element: T) => boolean,\n): PushIterable<T> {\n return {\n [Symbol.iterator](): PushIterator<T> {\n\n const it = itsIterator(source);\n\n return makePushIterator(accept => it.forNext(element => !test(element) || accept(element)));\n },\n };\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { itsIterator } from '../its-iterator';\nimport { makePushIterator } from '../make-push-iterator';\nimport type { PushIterable } from '../push-iterable';\nimport type { PushIterator } from '../push-iterator';\n\n/**\n * @internal\n */\nconst flatMapIt$defaultConverter = <T, R>(element: T): Iterable<R> => element as unknown as Iterable<R>;\n\n/**\n * Flattens the source iterable of iterables into new {@link PushIterable push iterable}.\n *\n * Calling this function is the same as calling `flatMapIt(source, element => element)`.\n *\n * @typeParam T A type of source elements.\n * @param source A source iterable of iterables.\n *\n * @returns New push iterable with each element of `source` being the flattened.\n */\nexport function flatMapIt<T>(source: Iterable<Iterable<T>>): PushIterable<T>;\n\n/**\n * First maps each element of the `source` iterable using a mapping function, then flattens the result into new\n * {@link PushIterable push iterable}.\n *\n * @typeParam T A type of source elements.\n * @typeParam R A type of converted elements.\n * @param source A source iterable.\n * @param convert A function that produces a new iterable, taking the source element as the only parameter.\n *\n * @returns New push iterable with each element being the flattened result of the `convert` function call.\n */\nexport function flatMapIt<T, R>(\n source: Iterable<T> | PushIterable<T>,\n convert: (this: void, element: T) => Iterable<R> | PushIterable<R>,\n): PushIterable<R>;\n\nexport function flatMapIt<T, R>(\n source: Iterable<T> | PushIterable<T>,\n convert: (this: void, element: T) => Iterable<R> | PushIterable<R> = flatMapIt$defaultConverter,\n): PushIterable<R> {\n return {\n [Symbol.iterator](): PushIterator<R> {\n\n const it = itsIterator(source);\n let cIt: PushIterator<R> | undefined;\n let lastSrc = false;\n\n return makePushIterator(accept => {\n for (;;) {\n while (!cIt) {\n if (!it.forNext(src => {\n cIt = itsIterator(convert(src));\n return false;\n })) {\n if (!cIt) {\n return false;\n }\n lastSrc = true;\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-invalid-void-type\n let goOn: boolean | void;\n\n if (!cIt.forNext(element => goOn = accept(element))) {\n cIt = undefined;\n if (lastSrc) {\n return false;\n }\n }\n if (goOn === false) {\n return true;\n }\n }\n });\n },\n };\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { itsIterator } from '../its-iterator';\nimport { makePushIterator } from '../make-push-iterator';\nimport type { PushIterable } from '../push-iterable';\nimport type { PushIterator } from '../push-iterator';\n\n/**\n * Creates a {@link PushIterable push iterable} with the results of calling a provided function on every element of the\n * `source` iterable.\n *\n * @typeParam T A type of source elements.\n * @typeParam R A type of converted elements.\n * @param source A source iterable.\n * @param convert A function that produces an element of the new iterable, taking the source element as the only\n * parameter.\n *\n * @returns New push iterable of transformed elements.\n */\nexport function mapIt<T, R>(\n source: Iterable<T> | PushIterable<T>,\n convert: (this: void, element: T) => R,\n): PushIterable<R> {\n return {\n [Symbol.iterator](): PushIterator<R> {\n\n const it = itsIterator(source);\n\n return makePushIterator(accept => it.forNext(element => accept(convert(element))));\n },\n };\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport type { PushIterable } from '../push-iterable';\nimport { mapIt } from '../transformation';\nimport type { ObjectEntry } from './object-entry';\nimport { overKeys } from './over-keys';\n\n/**\n * Creates a {@link PushIterable push iterable} over the property key/value entries of the given object.\n *\n * A list of keys is constructed using `Reflect.ownKeys()`.\n *\n * @typeParam T Object type.\n *\n * @param source An object to select keys and values from.\n *\n * @returns New push iterable of object property entries.\n */\nexport function overEntries<T extends object>(source: T): PushIterable<ObjectEntry<T>> {\n return mapIt(\n overKeys(source),\n key => [key, source[key]],\n );\n}\n"],"names":[],"mappings":";;;;AAMA;;;;;;;SAOgB,cAAc,CAAI,QAAuC;IACvE,OAAO,CAAC,CAAE,QAA4B,CAAC,OAAO,CAAC;AACjD;;ACZA;;;SAGgB,qBAAqB;IACnC,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;SAGgB,iBAAiB;IAC/B,SAAU;QAER,IAAI,MAA0C,CAAC;QAC/C,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK;YAC9B,MAAM,GAAG,EAAE,KAAK,EAAE,CAAC;YACnB,OAAO,KAAK,CAAC;SACd,CAAC,CAAC;QAEH,IAAI,MAAM,EAAE;YACV,OAAO,MAAM,CAAC;SACf;QACD,IAAI,IAAI,EAAE;YACR,OAAO,EAAE,IAAI,EAAE,IAAI,EAA6B,CAAC;SAClD;KACF;AACH,CAAC;AAED;;;SAGgB,cAAc,CAAI,EAAe;IAC/C,IAAI,cAAc,CAAC,EAAE,CAAC,EAAE;QACtB,OAAO,EAAE,CAAC;KACX;IAED,OAAO;QAEL,CAAC,MAAM,CAAC,QAAQ,GAAG,qBAAqB;QAExC,IAAI;YACF,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC;SAClB;QAED,OAAO,CAAC,MAAM;YACZ,SAAU;gBAER,MAAM,GAAG,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;gBAEtB,IAAI,GAAG,CAAC,IAAI,EAAE;oBACZ,OAAO,KAAK,CAAC;iBACd;gBACD,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE;oBAC/B,OAAO,IAAI,CAAC;iBACb;aACF;SACF;KAEF,CAAC;AACJ;;AC3DA;;;SAGgB,aAAa,CAAI,KAAmB;IAElD,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,OAAO;QACL,CAAC,MAAM,CAAC,QAAQ,GAAG,qBAAqB;QACxC,IAAI,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAqC;QACxG,OAAO,CAAC,MAAM;YACZ,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE;gBACrB,OAAO,KAAK,CAAC;aACd;YAED,SAAU;gBAER,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAEhC,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE;oBACrB,OAAO,KAAK,CAAC;iBACd;gBACD,IAAI,IAAI,KAAK,KAAK,EAAE;oBAClB,OAAO,IAAI,CAAC;iBACb;aACF;SACF;KACF,CAAC;AACJ;;AC/BA;;;;AAOA;;;;;;;;SAQgB,SAAS,CAAI,KAAmB;IAC9C,OAAO,EAAE,CAAC,MAAM,CAAC,QAAQ,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;AAC3D;;ACjBA;;;;AASA;;;;;;;;SAQgB,WAAW,CAAI,QAAuC;IACpE,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QAC3B,OAAO,aAAa,CAAI,QAAQ,CAAC,CAAC;KACnC;IACD,OAAO,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACrD;;ACfA;;;;;;;SAOgB,gBAAgB,CAAI,OAA+B;IACjE,OAAO;QACL,CAAC,MAAM,CAAC,QAAQ,GAAG,qBAAqB;QACxC,IAAI,EAAE,iBAAiB;QACvB,OAAO;KACR,CAAC;AACJ;;ACZA;;;;;;;;SAQgB,YAAY,CAAI,MAAmB;IACjD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QACzB,OAAO,SAAS,CAAI,MAAM,CAAC,CAAC;KAC7B;IACD,OAAO,EAAE,CAAC,MAAM,CAAC,QAAQ,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;AAChF;;ACdA;;;AAGA,MAAM,YAAY,GAAG;IACnB,CAAC,MAAM,CAAC,QAAQ,GAAG,MAAM,YAAY;IACrC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAoC,CAAA;IAC7D,OAAO,EAAE,MAAM,KAAK;CACrB,CAAC;AAEF;;;;;;;SAOgB,QAAQ;IACtB,OAAO,YAAY,CAAC;AACtB;;ACzBA;;;;AAWA;;;;;;;;SAQgB,cAAc,CAAI,GAAG,OAAsB;IACzD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;QACtB,OAAO;YACL,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAEf,IAAI,CAAC,GAAG,CAAC,CAAC;gBACV,IAAI,EAAE,GAAoB,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;gBAElD,OAAO,gBAAgB,CAAC,MAAM;oBAC5B,SAAS;;wBAGP,IAAI,IAAoB,CAAC;wBAEzB,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE;4BAClD,IAAI,EAAE,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE;gCACzB,OAAO,KAAK,CAAC;6BACd;4BACD,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;yBAC9B;wBACD,IAAI,IAAI,KAAK,KAAK,EAAE;4BAClB,OAAO,IAAI,CAAC;yBACb;qBACF;iBACF,CAAC,CAAC;aACJ;SACF,CAAC;KACH;IACD,IAAI,OAAO,CAAC,MAAM,EAAE;QAClB,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;KACjC;IACD,OAAO,QAAQ,EAAE,CAAC;AACpB;;AC3CA;;;;;;;;SAQgB,OAAO,CAAI,KAAQ;IACjC,OAAO,EAAE,CAAC,MAAM,CAAC,QAAQ,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;AAC9D,CAAC;AAED;;;AAGA,SAAS,gBAAgB,CAAI,KAAQ;IAEnC,IAAI,IAAI,GAAG,KAAK,CAAC;IAEjB,OAAO;QACL,CAAC,MAAM,CAAC,QAAQ,GAAG,qBAAqB;QACxC,IAAI;YACF,IAAI,IAAI,EAAE;gBACR,OAAO,EAAE,IAAI,EAAqC,CAAC;aACpD;YACD,IAAI,GAAG,IAAI,CAAC;YACZ,OAAO,EAAE,KAAK,EAAE,CAAC;SAClB;QACD,OAAO,CAAC,MAAM;YACZ,IAAI,CAAC,IAAI,EAAE;gBACT,IAAI,GAAG,IAAI,CAAC;gBACZ,MAAM,CAAC,KAAK,CAAC,CAAC;aACf;YACD,OAAO,KAAK,CAAC;SACd;KACF,CAAC;AACJ;;ACnCA;;;;;;;;SAQgB,QAAQ,CAAI,GAAG,MAAoB;IACjD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;QACrB,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;KAC1B;IACD,IAAI,MAAM,CAAC,MAAM,EAAE;QACjB,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;KAC3B;IACD,OAAO,QAAQ,EAAE,CAAC;AACpB;;ACzBA;;;;AAQA;;;;;;;;SAQgB,YAAY,CAAI,KAAmB;IACjD,OAAO,EAAE,CAAC,MAAM,CAAC,QAAQ,GAAG,MAAM,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;AAClE,CAAC;AAED;;;AAGA,SAAS,oBAAoB,CAAI,KAAmB;IAElD,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAEzB,OAAO,gBAAgB,CAAC,MAAM;QAC5B,IAAI,CAAC,GAAG,CAAC,EAAE;YACT,OAAO,KAAK,CAAC;SACd;QAED,SAAU;YAER,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAEhC,IAAI,CAAC,GAAG,CAAC,EAAE;gBACT,OAAO,KAAK,CAAC;aACd;YACD,IAAI,IAAI,KAAK,KAAK,EAAE;gBAClB,OAAO,IAAI,CAAC;aACb;SACF;KACF,CAAC,CAAC;AACL;;AC5CA;;;;AAOA;;;;;;;;SAQgB,OAAO,CAAI,QAAuC,EAAE,MAAwC;IAE1G,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;IAEvC,IAAI,cAAc,CAAC,EAAE,CAAC,EAAE;QACtB,EAAE,CAAC,OAAO,CAAC,OAAO;YAChB,MAAM,CAAC,OAAO,CAAC,CAAC;SACjB,CAAC,CAAC;KACJ;SAAM;QACL,SAAS;YAEP,MAAM,GAAG,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;YAEtB,IAAI,GAAG,CAAC,IAAI,EAAE;gBACZ,MAAM;aACP;YAED,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SACnB;KACF;AACH;;ACnCA;;;;AAQA;;;;;;;SAOgB,QAAQ,CAAC,QAA2C;IAElE,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;IAEvC,IAAI,cAAc,CAAC,EAAE,CAAC,EAAE;QAEtB,IAAI,OAAO,GAAG,IAAI,CAAC;QAEnB,WAAW,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC;QAErD,OAAO,OAAO,CAAC;KAChB;IAED,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC;AAC1B;;AC7BA;;;;AAOA;;;;;;;;;;;SAWgB,QAAQ,CACpB,QAAuC,EACvC,IAAyC;IAG3C,IAAI,QAAQ,GAAG,IAAI,CAAC;IAEpB,WAAW,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAErE,OAAO,QAAQ,CAAC;AAClB;;AC5BA;;;;AAOA;;;;;;;;SAQgB,QAAQ,CAAI,QAAuC;IAEjE,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;IAEvC,IAAI,cAAc,CAAC,EAAE,CAAC,EAAE;QAEtB,IAAI,KAAoB,CAAC;QAEzB,EAAE,CAAC,OAAO,CAAC,OAAO;YAChB,KAAK,GAAG,OAAO,CAAC;YAChB,OAAO,KAAK,CAAC;SACd,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC;KACd;IAED,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;IAEzB,OAAO,MAAM,CAAC,IAAI,GAAG,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;AAChD;;AClCA;;;;AAOA;;;;;;;;;;;;;SAagB,YAAY,CACxB,QAAuC,EACvC,OAA+C,EAC/C,YAAe;IAGjB,IAAI,OAAO,GAAG,YAAY,CAAC;IAC3B,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;IAEvC,IAAI,cAAc,CAAC,EAAE,CAAC,EAAE;QACtB,EAAE,CAAC,OAAO,CAAC,OAAO;YAChB,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;SACrC,CAAC,CAAC;KACJ;SAAM;QACL,SAAS;YAEP,MAAM,GAAG,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;YAEtB,IAAI,GAAG,CAAC,IAAI,EAAE;gBACZ,MAAM;aACP;YAED,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;SACvC;KACF;IAED,OAAO,OAAO,CAAC;AACjB;;AC/CA;;;;AAOA;;;;;;;;;;;SAWgB,OAAO,CACnB,QAAuC,EACvC,IAAyC;IAG3C,IAAI,WAAW,GAAG,KAAK,CAAC;IAExB,WAAW,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAE3E,OAAO,WAAW,CAAC;AACrB;;AC5BA;;;;AAOA;;;;;;;;;;SAUgB,QAAQ,CAAmB,MAAS;IAClD,OAAO,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAgB,CAAC,CAAC;AAC3D;;ACnBA;;;;SA2CgB,QAAQ,CACpB,MAAqC,EACrC,IAAyC;IAE3C,OAAO;QACL,CAAC,MAAM,CAAC,QAAQ,CAAC;YAEf,MAAM,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;YAE/B,OAAO,gBAAgB,CAAC,MAAM,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;SAC7F;KACF,CAAC;AACJ;;ACvDA;;;;AASA;;;AAGA,MAAM,0BAA0B,GAAG,CAAO,OAAU,KAAkB,OAAiC,CAAC;SA8BxF,SAAS,CACrB,MAAqC,EACrC,UAAqE,0BAA0B;IAEjG,OAAO;QACL,CAAC,MAAM,CAAC,QAAQ,CAAC;YAEf,MAAM,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;YAC/B,IAAI,GAAgC,CAAC;YACrC,IAAI,OAAO,GAAG,KAAK,CAAC;YAEpB,OAAO,gBAAgB,CAAC,MAAM;gBAC5B,SAAS;oBACP,OAAO,CAAC,GAAG,EAAE;wBACX,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG;4BACjB,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;4BAChC,OAAO,KAAK,CAAC;yBACd,CAAC,EAAE;4BACF,IAAI,CAAC,GAAG,EAAE;gCACR,OAAO,KAAK,CAAC;6BACd;4BACD,OAAO,GAAG,IAAI,CAAC;yBAChB;qBACF;;oBAGD,IAAI,IAAoB,CAAC;oBAEzB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE;wBACnD,GAAG,GAAG,SAAS,CAAC;wBAChB,IAAI,OAAO,EAAE;4BACX,OAAO,KAAK,CAAC;yBACd;qBACF;oBACD,IAAI,IAAI,KAAK,KAAK,EAAE;wBAClB,OAAO,IAAI,CAAC;qBACb;iBACF;aACF,CAAC,CAAC;SACJ;KACF,CAAC;AACJ;;ACnFA;;;;AASA;;;;;;;;;;;;SAYgB,KAAK,CACjB,MAAqC,EACrC,OAAsC;IAExC,OAAO;QACL,CAAC,MAAM,CAAC,QAAQ,CAAC;YAEf,MAAM,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;YAE/B,OAAO,gBAAgB,CAAC,MAAM,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;SACpF;KACF,CAAC;AACJ;;ACxBA;;;;;;;;;;;SAWgB,WAAW,CAAmB,MAAS;IACrD,OAAO,KAAK,CACR,QAAQ,CAAC,MAAM,CAAC,EAChB,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAC5B,CAAC;AACJ;;;;;;;;;;;;;;;;;;;;;;;;"}
{"version":3,"file":"push-iterator.js","sources":["../src/push-iterator.impl.ts","../src/array-iterator.impl.ts","../src/construction/over-array.ts","../src/its-iterator.ts","../src/make-push-iterator.ts","../src/construction/over-iterable.ts","../src/construction/over-none.ts","../src/construction/over-elements-of.ts","../src/construction/over-one.ts","../src/construction/over-many.ts","../src/construction/reverse-array.ts","../src/consumption/its-each.ts","../src/consumption/its-empty.ts","../src/consumption/its-every.ts","../src/consumption/its-first.ts","../src/consumption/its-reduction.ts","../src/consumption/its-some.ts","../src/objects/over-keys.ts","../src/transformation/filter-it.ts","../src/transformation/flat-map-it.ts","../src/transformation/map-it.ts","../src/objects/over-entries.ts"],"sourcesContent":["import type { PushIterator, PushOrRawIterator } from './push-iterator';\n\n/**\n * @internal\n */\nexport function PushIterator$iterator<T>(this: PushIterator<T>): PushIterator<T> {\n return this;\n}\n\n/**\n * @internal\n */\nexport function PushIterator$next<T>(this: PushIterator<T>): IteratorResult<T> {\n for (; ;) {\n\n let result: IteratorYieldResult<T> | undefined;\n const done = !this.forNext(value => {\n result = { value };\n return false;\n });\n\n if (result) {\n return result;\n }\n if (done) {\n return { done: true } as IteratorReturnResult<T>;\n }\n }\n}\n\n/**\n * @internal\n */\nexport function toPushIterator<T>(it: PushOrRawIterator<T>): PushIterator<T> {\n if (it.forNext) {\n return it;\n }\n\n return {\n\n [Symbol.iterator]: PushIterator$iterator,\n\n next() {\n return it.next();\n },\n\n forNext(accept) {\n for (; ;) {\n\n const res = it.next();\n\n if (res.done) {\n return false;\n }\n if (accept(res.value) === false) {\n return true;\n }\n }\n },\n\n };\n}\n","import type { PushIterator } from './push-iterator';\nimport { PushIterator$iterator } from './push-iterator.impl';\n\n/**\n * @internal\n */\nexport function arrayIterator<T>(array: ArrayLike<T>): PushIterator<T> {\n\n let i = 0;\n\n return {\n [Symbol.iterator]: PushIterator$iterator,\n next: () => i < array.length ? { value: array[i++] } : { done: true } as IteratorReturnResult<undefined>,\n forNext(accept) {\n if (i >= array.length) {\n return false;\n }\n\n for (; ;) {\n\n const goOn = accept(array[i++]);\n\n if (i >= array.length) {\n return false;\n }\n if (goOn === false) {\n return true;\n }\n }\n },\n };\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { arrayIterator } from '../array-iterator.impl';\nimport type { PushIterable } from '../push-iterable';\n\n/**\n * Creates a {@link PushIterable push iterable} over elements of array-like structure.\n *\n * @typeParam T Array elements type.\n * @param array An array-like structure. E.g. `Array`, DOM `NodeList`, etc.\n *\n * @returns New push iterable over array elements.\n */\nexport function overArray<T>(array: ArrayLike<T>): PushIterable<T> {\n return { [Symbol.iterator]: () => arrayIterator(array) };\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { arrayIterator } from './array-iterator.impl';\nimport type { PushOrRawIterable } from './push-iterable';\nimport type { PushIterator } from './push-iterator';\nimport { toPushIterator } from './push-iterator.impl';\n\n/**\n * Starts iteration over the given `iterable`.\n *\n * @typeParam T Iterated elements type.\n * @param iterable An iterable or push iterable to iterate over.\n *\n * @return A push iterator iterating over the given iterable.\n */\nexport function itsIterator<T>(iterable: PushOrRawIterable<T>): PushIterator<T> {\n if (Array.isArray(iterable)) {\n return arrayIterator<T>(iterable);\n }\n return toPushIterator(iterable[Symbol.iterator]());\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport type { PushIterator } from './push-iterator';\nimport { PushIterator$iterator, PushIterator$next } from './push-iterator.impl';\n\n/**\n * Creates push iterator implementation.\n *\n * @param forNext A function iterating over elements conforming to {@link PushIterator.forNext} requirement.\n *\n * @returns New push iterator instance performing iteration by `forNext` function.\n */\nexport function makePushIterator<T>(forNext: PushIterator.Pusher<T>): PushIterator<T> {\n return {\n [Symbol.iterator]: PushIterator$iterator,\n next: PushIterator$next,\n forNext,\n };\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport type { PushIterable, PushOrRawIterable } from '../push-iterable';\nimport { toPushIterator } from '../push-iterator.impl';\nimport { overArray } from './over-array';\n\n/**\n * Creates a {@link PushIterable push iterable} over elements of the given raw iterable.\n *\n * @typeParam T Iterated elements type.\n * @param source Source iterable to iterate over elements of.\n *\n * @returns New push iterable over elements of the given `source`.\n */\nexport function overIterable<T>(source: PushOrRawIterable<T>): PushIterable<T> {\n if (Array.isArray(source)) {\n return overArray<T>(source);\n }\n return { [Symbol.iterator]: () => toPushIterator(source[Symbol.iterator]()) };\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport type { PushIterable } from '../push-iterable';\nimport type { PushIterator } from '../push-iterator';\n\n/**\n * @internal\n */\nconst noneIterator = {\n [Symbol.iterator]: () => noneIterator,\n next: () => ({ done: true } as IteratorReturnResult<unknown>),\n forNext: () => false,\n};\n\n/**\n * Returns a {@link PushIterator push iterable iterator} without elements.\n *\n * @typeParam T Iterated elements type.\n *\n * @returns Empty push iterable and push iterator instance.\n */\nexport function overNone<T>(): PushIterable<T> & PushIterator<T> {\n return noneIterator;\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { itsIterator } from '../its-iterator';\nimport { makePushIterator } from '../make-push-iterator';\nimport type { PushIterable, PushOrRawIterable } from '../push-iterable';\nimport type { PushIterator } from '../push-iterator';\nimport { overIterable } from './over-iterable';\nimport { overNone } from './over-none';\n\n/**\n * Creates a {@link PushIterable push iterable} over elements of other iterables.\n *\n * @typeParam T Iterated elements type.\n * @param sources Source iterables to iterate over elements of.\n *\n * @returns New push iterable over elements of the given `sources`.\n */\nexport function overElementsOf<T>(...sources: readonly PushOrRawIterable<T>[]): PushIterable<T> {\n if (sources.length > 1) {\n return {\n [Symbol.iterator](): PushIterator<T> {\n\n let i = 0;\n let it: PushIterator<T> = itsIterator(sources[0]);\n\n return makePushIterator(accept => {\n for (;;) {\n\n // eslint-disable-next-line @typescript-eslint/no-invalid-void-type\n let goOn: boolean | void;\n\n if (!it.forNext(element => goOn = accept(element))) {\n if (++i >= sources.length) {\n return false;\n }\n it = itsIterator(sources[i]);\n }\n if (goOn === false) {\n return true;\n }\n }\n });\n },\n };\n }\n if (sources.length) {\n return overIterable(sources[0]);\n }\n return overNone();\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport type { PushIterable } from '../push-iterable';\nimport type { PushIterator } from '../push-iterator';\nimport { PushIterator$iterator } from '../push-iterator.impl';\n\n/**\n * Creates a {@link PushIterable push iterable} over one value.\n *\n * @typeParam T Iterated element value type.\n * @param value A value to iterate over.\n *\n * @returns New push iterable over the given value.\n */\nexport function overOne<T>(value: T): PushIterable<T> {\n return { [Symbol.iterator]: () => oneValueIterator(value) };\n}\n\n/**\n * @internal\n */\nfunction oneValueIterator<T>(value: T): PushIterator<T> {\n\n let done = false;\n\n return {\n [Symbol.iterator]: PushIterator$iterator,\n next() {\n if (done) {\n return { done } as IteratorReturnResult<undefined>;\n }\n done = true;\n return { value };\n },\n forNext(accept) {\n if (!done) {\n done = true;\n accept(value);\n }\n return false;\n },\n };\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport type { PushIterable } from '../push-iterable';\nimport { overArray } from './over-array';\nimport { overNone } from './over-none';\nimport { overOne } from './over-one';\n\n/**\n * Creates a {@link PushIterable push iterable} over many values.\n *\n * @typeParam T Iterated elements value type.\n * @param values Values to iterate over.\n *\n * @returns New push iterable over the given values.\n */\nexport function overMany<T>(...values: readonly T[]): PushIterable<T> {\n if (values.length > 1) {\n return overArray(values);\n }\n if (values.length) {\n return overOne(values[0]);\n }\n return overNone();\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { makePushIterator } from '../make-push-iterator';\nimport type { PushIterable } from '../push-iterable';\nimport type { PushIterator } from '../push-iterator';\n\n/**\n * Creates a {@link PushIterable push iterable} over elements of array-like structure in reverse order.\n *\n * @typeParam T Array elements type.\n * @param array An array-like structure. E.g. `Array`, DOM `NodeList`, etc.\n *\n * @returns New push iterable over array elements in reverse order.\n */\nexport function reverseArray<T>(array: ArrayLike<T>): PushIterable<T> {\n return { [Symbol.iterator]: () => reverseArrayIterator(array) };\n}\n\n/**\n * @internal\n */\nfunction reverseArrayIterator<T>(array: ArrayLike<T>): PushIterator<T> {\n\n let i = array.length - 1;\n\n return makePushIterator(accept => {\n if (i < 0) {\n return false;\n }\n\n for (; ;) {\n\n const goOn = accept(array[i--]);\n\n if (i < 0) {\n return false;\n }\n if (goOn === false) {\n return true;\n }\n }\n });\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport type { PushOrRawIterable } from '../push-iterable';\n\n/**\n * Performs the given `action` for each element of the given `iterable`.\n *\n * @typeParam T Iterated elements type.\n * @param iterable An iterable of elements to perform actions on.\n * @param action An action to perform on each iterable element. This is a function accepting an element as its only\n * parameter.\n */\nexport function itsEach<T>(iterable: PushOrRawIterable<T>, action: (this: void, element: T) => void): void {\n\n const it = iterable[Symbol.iterator]();\n const forNext = it.forNext;\n\n if (forNext) {\n forNext(element => {\n action(element);\n });\n } else {\n for (;;) {\n\n const res = it.next();\n\n if (res.done) {\n break;\n }\n\n action(res.value);\n }\n }\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport type { PushOrRawIterable } from '../push-iterable';\n\n/**\n * Checks whether the given `iterable` is empty.\n *\n * @param iterable An iterable or push iterable to check for elements.\n *\n * @return `true` if the given iterable contains at least one element, or `false` otherwise.\n */\nexport function itsEmpty(iterable: PushOrRawIterable<any>): boolean {\n\n const it = iterable[Symbol.iterator]();\n const forNext = it.forNext;\n\n if (forNext) {\n\n let isEmpty = true;\n\n forNext(() => isEmpty = false);\n\n return isEmpty;\n }\n\n return !!it.next().done;\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { itsIterator } from '../its-iterator';\nimport type { PushOrRawIterable } from '../push-iterable';\n\n/**\n * Tests whether all elements of the given `iterable` pass the test implemented by the provided function.\n *\n * @typeParam T Iterated elements type.\n * @param iterable An iterable to test elements of.\n * @param test A predicate function to test each element. Returns `true` to continue tests, or `false` to stop it\n * and return `false` from the method call. It accepts the tested element as the only parameter.\n *\n * @returns `true` if the `test` function returned a truthy value for every element, or `false` otherwise.\n * Returns `true` for empty iterable.\n */\nexport function itsEvery<T>(\n iterable: PushOrRawIterable<T>,\n test: (this: void, element: T) => boolean,\n): boolean {\n\n let allMatch = true;\n\n itsIterator(iterable).forNext(element => allMatch = !!test(element));\n\n return allMatch;\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport type { PushOrRawIterable } from '../push-iterable';\n\n/**\n * Extracts the first element of the given `iterable`, if any.\n *\n * @typeParam T Iterated elements type.\n * @param iterable An iterable to extract element from.\n *\n * @return Either the first element, or `undefined` if the given `iterable` is empty.\n */\nexport function itsFirst<T>(iterable: PushOrRawIterable<T>): T | undefined {\n\n const it = iterable[Symbol.iterator]();\n const forNext = it.forNext;\n\n if (forNext) {\n\n let first: T | undefined;\n\n forNext(element => {\n first = element;\n return false;\n });\n\n return first;\n }\n\n const result = it.next();\n\n return result.done ? undefined : result.value;\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport type { PushOrRawIterable } from '../push-iterable';\n\n/**\n * Applies a function against an accumulator and each element of the given `iterable` to reduce elements to a single\n * value.\n *\n * @typeParam T A type of `iterable` elements.\n * @typeParam R A type of reduced value.\n * @param iterable An iterable to reduce values of.\n * @param reducer A function to apply the value returned from the previous `reducer` call and to each element.\n * @param initialValue Initial value passed to the first `reducer` call.\n *\n * @return Reduced value returned from the last `reducer` call, or `initialValue` if there is no elements in the given\n * `iterable`.\n */\nexport function itsReduction<T, R>(\n iterable: PushOrRawIterable<T>,\n reducer: (this: void, prev: R, element: T) => R,\n initialValue: R,\n): R {\n\n let reduced = initialValue;\n const it = iterable[Symbol.iterator]();\n const forNext = it.forNext;\n\n if (forNext) {\n forNext(element => {\n reduced = reducer(reduced, element);\n });\n } else {\n for (;;) {\n\n const res = it.next();\n\n if (res.done) {\n break;\n }\n\n reduced = reducer(reduced, res.value);\n }\n }\n\n return reduced;\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { itsIterator } from '../its-iterator';\nimport type { PushOrRawIterable } from '../push-iterable';\n\n/**\n * Tests whether at least one element of the given `iterable` passes the test implemented by the provided function.\n *\n * @typeParam T A type of `iterable` elements.\n * @param iterable An iterable to test elements of.\n * @param test A predicate function to test each element. Returns `false` to continue tests, or `true` to stop it\n * and return `true` from the method call. It accepts the tested element as the only parameter.\n *\n * @returns `true` if the callback function returned a truthy value for at least one element in the array, or `false`\n * otherwise. Returns `false` for empty iterable.\n */\nexport function itsSome<T>(\n iterable: PushOrRawIterable<T>,\n test: (this: void, element: T) => boolean,\n): boolean {\n\n let someMatches = false;\n\n itsIterator(iterable).forNext(element => !(someMatches = !!test(element)));\n\n return someMatches;\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { overArray } from '../construction';\nimport type { PushIterable } from '../push-iterable';\n\n/**\n * Creates a {@link PushIterable push iterable} over keys of the given object.\n *\n * A list of keys is constructed using `Reflect.ownKeys()`.\n *\n * @typeParam T Source object type.\n * @param source An object to select keys from.\n *\n * @returns New push iterable over own object keys retrieved by `Reflect.ownKeys()`.\n */\nexport function overKeys<T extends object>(source: T): PushIterable<keyof T> {\n return overArray(Reflect.ownKeys(source) as (keyof T)[]);\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { itsIterator } from '../its-iterator';\nimport { makePushIterator } from '../make-push-iterator';\nimport type { PushIterable, PushOrRawIterable } from '../push-iterable';\nimport type { PushIterator } from '../push-iterator';\n\n/**\n * Creates a {@link PushIterable push iterable} with all `source` iterable elements that pass the test implemented by\n * the provided function.\n *\n * @typeParam T A type of source elements.\n * @param source A source iterable.\n * @param test A predicate function to test each element. Returns `true` to keep the element, or `false` otherwise.\n * It accepts the tested element as the only parameter.\n *\n * @return New push iterable with the elements that pass the test. If no elements passed the test, an empty iterable\n * will be returned.\n */\nexport function filterIt<T>(\n source: PushOrRawIterable<T>,\n test: (this: void, element: T) => boolean,\n): PushIterable<T>;\n\n/**\n * Creates a {@link PushIterable push iterable} with all `source` iterable elements extending the given type.\n *\n * @typeParam T A type of source elements\n * @typeParam R Target type.\n * @param source A source iterable.\n * @param test A predicate function to test that element extends the type `R`. Returns `true` to keep the element, or\n * `false` otherwise. It accepts the tested element as the only parameter.\n *\n * @return New push iterable with the elements that pass the test. If no elements passed the test, an empty iterable\n * will be returned.\n */\nexport function filterIt<T, R extends T>(\n source: PushOrRawIterable<T>,\n test: (this: void, element: T) => element is R,\n): PushIterable<R>;\n\nexport function filterIt<T>(\n source: PushOrRawIterable<T>,\n test: (this: void, element: T) => boolean,\n): PushIterable<T> {\n return {\n [Symbol.iterator](): PushIterator<T> {\n\n const it = itsIterator(source);\n\n return makePushIterator(accept => it.forNext(element => !test(element) || accept(element)));\n },\n };\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { itsIterator } from '../its-iterator';\nimport { makePushIterator } from '../make-push-iterator';\nimport type { PushIterable, PushOrRawIterable } from '../push-iterable';\nimport type { PushIterator } from '../push-iterator';\n\n/**\n * @internal\n */\nconst flatMapIt$defaultConverter = <T, R>(element: T): PushOrRawIterable<R> => element as unknown as Iterable<R>;\n\n/**\n * Flattens the source iterable of iterables into new {@link PushIterable push iterable}.\n *\n * Calling this function is the same as calling `flatMapIt(source, element => element)`.\n *\n * @typeParam T A type of source elements.\n * @param source A source iterable of iterables.\n *\n * @returns New push iterable with each element of `source` being the flattened.\n */\nexport function flatMapIt<T>(source: PushOrRawIterable<Iterable<T>>): PushIterable<T>;\n\n/**\n * First maps each element of the `source` iterable using a mapping function, then flattens the result into new\n * {@link PushIterable push iterable}.\n *\n * @typeParam T A type of source elements.\n * @typeParam R A type of converted elements.\n * @param source A source iterable.\n * @param convert A function that produces a new iterable, taking the source element as the only parameter.\n *\n * @returns New push iterable with each element being the flattened result of the `convert` function call.\n */\nexport function flatMapIt<T, R>(\n source: PushOrRawIterable<T>,\n convert: (this: void, element: T) => PushOrRawIterable<R>,\n): PushIterable<R>;\n\nexport function flatMapIt<T, R>(\n source: PushOrRawIterable<T>,\n convert: (this: void, element: T) => PushOrRawIterable<R> = flatMapIt$defaultConverter,\n): PushIterable<R> {\n return {\n [Symbol.iterator](): PushIterator<R> {\n\n const it = itsIterator(source);\n let cIt: PushIterator<R> | undefined;\n let lastSrc = false;\n\n return makePushIterator(accept => {\n for (;;) {\n while (!cIt) {\n if (!it.forNext(src => {\n cIt = itsIterator(convert(src));\n return false;\n })) {\n if (!cIt) {\n return false;\n }\n lastSrc = true;\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-invalid-void-type\n let goOn: boolean | void;\n\n if (!cIt.forNext(element => goOn = accept(element))) {\n cIt = undefined;\n if (lastSrc) {\n return false;\n }\n }\n if (goOn === false) {\n return true;\n }\n }\n });\n },\n };\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { itsIterator } from '../its-iterator';\nimport { makePushIterator } from '../make-push-iterator';\nimport type { PushIterable, PushOrRawIterable } from '../push-iterable';\nimport type { PushIterator } from '../push-iterator';\n\n/**\n * Creates a {@link PushIterable push iterable} with the results of calling a provided function on every element of the\n * `source` iterable.\n *\n * @typeParam T A type of source elements.\n * @typeParam R A type of converted elements.\n * @param source A source iterable.\n * @param convert A function that produces an element of the new iterable, taking the source element as the only\n * parameter.\n *\n * @returns New push iterable of transformed elements.\n */\nexport function mapIt<T, R>(\n source: PushOrRawIterable<T>,\n convert: (this: void, element: T) => R,\n): PushIterable<R> {\n return {\n [Symbol.iterator](): PushIterator<R> {\n\n const it = itsIterator(source);\n\n return makePushIterator(accept => it.forNext(element => accept(convert(element))));\n },\n };\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport type { PushIterable } from '../push-iterable';\nimport { mapIt } from '../transformation';\nimport type { ObjectEntry } from './object-entry';\nimport { overKeys } from './over-keys';\n\n/**\n * Creates a {@link PushIterable push iterable} over the property key/value entries of the given object.\n *\n * A list of keys is constructed using `Reflect.ownKeys()`.\n *\n * @typeParam T Object type.\n *\n * @param source An object to select keys and values from.\n *\n * @returns New push iterable of object property entries.\n */\nexport function overEntries<T extends object>(source: T): PushIterable<ObjectEntry<T>> {\n return mapIt(\n overKeys(source),\n key => [key, source[key]],\n );\n}\n"],"names":[],"mappings":"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"}
/**
* Checks whether the given iterator implements push iteration protocol.
*
* @param iterator Target iterator to check.
*
* @returns `true` if `iterator` has {@link PushIterator.forNext forNext} method, or `false` otherwise.
*/
function isPushIterator(iterator) {
return !!iterator.forNext;
}
/**
* @internal

@@ -40,3 +29,3 @@ */

function toPushIterator(it) {
if (isPushIterator(it)) {
if (it.forNext) {
return it;

@@ -304,6 +293,2 @@ }

/**
* @packageDocumentation
* @module @proc7ts/push-iterator
*/
/**
* Performs the given `action` for each element of the given `iterable`.

@@ -318,4 +303,5 @@ *

const it = iterable[Symbol.iterator]();
if (isPushIterator(it)) {
it.forNext(element => {
const forNext = it.forNext;
if (forNext) {
forNext(element => {
action(element);

@@ -336,6 +322,2 @@ });

/**
* @packageDocumentation
* @module @proc7ts/push-iterator
*/
/**
* Checks whether the given `iterable` is empty.

@@ -349,5 +331,6 @@ *

const it = iterable[Symbol.iterator]();
if (isPushIterator(it)) {
const forNext = it.forNext;
if (forNext) {
let isEmpty = true;
itsIterator(iterable).forNext(() => isEmpty = false);
forNext(() => isEmpty = false);
return isEmpty;

@@ -380,6 +363,2 @@ }

/**
* @packageDocumentation
* @module @proc7ts/push-iterator
*/
/**
* Extracts the first element of the given `iterable`, if any.

@@ -394,5 +373,6 @@ *

const it = iterable[Symbol.iterator]();
if (isPushIterator(it)) {
const forNext = it.forNext;
if (forNext) {
let first;
it.forNext(element => {
forNext(element => {
first = element;

@@ -408,6 +388,2 @@ return false;

/**
* @packageDocumentation
* @module @proc7ts/push-iterator
*/
/**
* Applies a function against an accumulator and each element of the given `iterable` to reduce elements to a single

@@ -428,4 +404,5 @@ * value.

const it = iterable[Symbol.iterator]();
if (isPushIterator(it)) {
it.forNext(element => {
const forNext = it.forNext;
if (forNext) {
forNext(element => {
reduced = reducer(reduced, element);

@@ -582,3 +559,3 @@ });

export { filterIt, flatMapIt, isPushIterator, itsEach, itsEmpty, itsEvery, itsFirst, itsIterator, itsReduction, itsSome, makePushIterator, mapIt, overArray, overElementsOf, overEntries, overIterable, overKeys, overMany, overNone, overOne, reverseArray };
export { filterIt, flatMapIt, itsEach, itsEmpty, itsEvery, itsFirst, itsIterator, itsReduction, itsSome, makePushIterator, mapIt, overArray, overElementsOf, overEntries, overIterable, overKeys, overMany, overNone, overOne, reverseArray };
//# sourceMappingURL=push-iterator.mjs.map

@@ -1,1 +0,1 @@

{"version":3,"file":"push-iterator.mjs","sources":["../src/is-push-iterator.ts","../src/push-iterator.impl.ts","../src/array-iterator.impl.ts","../src/construction/over-array.ts","../src/its-iterator.ts","../src/make-push-iterator.ts","../src/construction/over-iterable.ts","../src/construction/over-none.ts","../src/construction/over-elements-of.ts","../src/construction/over-one.ts","../src/construction/over-many.ts","../src/construction/reverse-array.ts","../src/consumption/its-each.ts","../src/consumption/its-empty.ts","../src/consumption/its-every.ts","../src/consumption/its-first.ts","../src/consumption/its-reduction.ts","../src/consumption/its-some.ts","../src/objects/over-keys.ts","../src/transformation/filter-it.ts","../src/transformation/flat-map-it.ts","../src/transformation/map-it.ts","../src/objects/over-entries.ts"],"sourcesContent":["/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport type { PushIterator } from './push-iterator';\n\n/**\n * Checks whether the given iterator implements push iteration protocol.\n *\n * @param iterator Target iterator to check.\n *\n * @returns `true` if `iterator` has {@link PushIterator.forNext forNext} method, or `false` otherwise.\n */\nexport function isPushIterator<T>(iterator: Iterator<T> | PushIterator<T>): iterator is PushIterator<T> {\n return !!(iterator as PushIterator<T>).forNext;\n}\n","import { isPushIterator } from './is-push-iterator';\nimport type { PushIterator } from './push-iterator';\n\n/**\n * @internal\n */\nexport function PushIterator$iterator<T>(this: PushIterator<T>): PushIterator<T> {\n return this;\n}\n\n/**\n * @internal\n */\nexport function PushIterator$next<T>(this: PushIterator<T>): IteratorResult<T> {\n for (; ;) {\n\n let result: IteratorYieldResult<T> | undefined;\n const done = !this.forNext(value => {\n result = { value };\n return false;\n });\n\n if (result) {\n return result;\n }\n if (done) {\n return { done: true } as IteratorReturnResult<T>;\n }\n }\n}\n\n/**\n * @internal\n */\nexport function toPushIterator<T>(it: Iterator<T>): PushIterator<T> {\n if (isPushIterator(it)) {\n return it;\n }\n\n return {\n\n [Symbol.iterator]: PushIterator$iterator,\n\n next() {\n return it.next();\n },\n\n forNext(accept) {\n for (; ;) {\n\n const res = it.next();\n\n if (res.done) {\n return false;\n }\n if (accept(res.value) === false) {\n return true;\n }\n }\n },\n\n };\n}\n","import type { PushIterator } from './push-iterator';\nimport { PushIterator$iterator } from './push-iterator.impl';\n\n/**\n * @internal\n */\nexport function arrayIterator<T>(array: ArrayLike<T>): PushIterator<T> {\n\n let i = 0;\n\n return {\n [Symbol.iterator]: PushIterator$iterator,\n next: () => i < array.length ? { value: array[i++] } : { done: true } as IteratorReturnResult<undefined>,\n forNext(accept) {\n if (i >= array.length) {\n return false;\n }\n\n for (; ;) {\n\n const goOn = accept(array[i++]);\n\n if (i >= array.length) {\n return false;\n }\n if (goOn === false) {\n return true;\n }\n }\n },\n };\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { arrayIterator } from '../array-iterator.impl';\nimport type { PushIterable } from '../push-iterable';\n\n/**\n * Creates a {@link PushIterable push iterable} over elements of array-like structure.\n *\n * @typeParam T Array elements type.\n * @param array An array-like structure. E.g. `Array`, DOM `NodeList`, etc.\n *\n * @returns New push iterable over array elements.\n */\nexport function overArray<T>(array: ArrayLike<T>): PushIterable<T> {\n return { [Symbol.iterator]: () => arrayIterator(array) };\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { arrayIterator } from './array-iterator.impl';\nimport type { PushIterable } from './push-iterable';\nimport type { PushIterator } from './push-iterator';\nimport { toPushIterator } from './push-iterator.impl';\n\n/**\n * Starts iteration over the given `iterable`.\n *\n * @typeParam T Iterated elements type.\n * @param iterable An iterable or push iterable to iterate over.\n *\n * @return A push iterator iterating over the given iterable.\n */\nexport function itsIterator<T>(iterable: Iterable<T> | PushIterable<T>): PushIterator<T> {\n if (Array.isArray(iterable)) {\n return arrayIterator<T>(iterable);\n }\n return toPushIterator(iterable[Symbol.iterator]());\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport type { PushIterator } from './push-iterator';\nimport { PushIterator$iterator, PushIterator$next } from './push-iterator.impl';\n\n/**\n * Creates push iterator implementation.\n *\n * @param forNext A function iterating over elements conforming to {@link PushIterator.forNext} requirement.\n *\n * @returns New push iterator instance performing iteration by `forNext` function.\n */\nexport function makePushIterator<T>(forNext: PushIterator.Pusher<T>): PushIterator<T> {\n return {\n [Symbol.iterator]: PushIterator$iterator,\n next: PushIterator$next,\n forNext,\n };\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport type { PushIterable } from '../push-iterable';\nimport { toPushIterator } from '../push-iterator.impl';\nimport { overArray } from './over-array';\n\n/**\n * Creates a {@link PushIterable push iterable} over elements of the given raw iterable.\n *\n * @typeParam T Iterated elements type.\n * @param source Source iterable to iterate over elements of.\n *\n * @returns New push iterable over elements of the given `source`.\n */\nexport function overIterable<T>(source: Iterable<T>): PushIterable<T> {\n if (Array.isArray(source)) {\n return overArray<T>(source);\n }\n return { [Symbol.iterator]: () => toPushIterator(source[Symbol.iterator]()) };\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport type { PushIterable } from '../push-iterable';\nimport type { PushIterator } from '../push-iterator';\n\n/**\n * @internal\n */\nconst noneIterator = {\n [Symbol.iterator]: () => noneIterator,\n next: () => ({ done: true } as IteratorReturnResult<unknown>),\n forNext: () => false,\n};\n\n/**\n * Returns a {@link PushIterator push iterable iterator} without elements.\n *\n * @typeParam T Iterated elements type.\n *\n * @returns Empty push iterable and push iterator instance.\n */\nexport function overNone<T>(): PushIterable<T> & PushIterator<T> {\n return noneIterator;\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { itsIterator } from '../its-iterator';\nimport { makePushIterator } from '../make-push-iterator';\nimport type { PushIterable } from '../push-iterable';\nimport type { PushIterator } from '../push-iterator';\nimport { overIterable } from './over-iterable';\nimport { overNone } from './over-none';\n\n/**\n * Creates a {@link PushIterable push iterable} over elements of other iterables.\n *\n * @typeParam T Iterated elements type.\n * @param sources Source iterables to iterate over elements of.\n *\n * @returns New push iterable over elements of the given `sources`.\n */\nexport function overElementsOf<T>(...sources: Iterable<T>[]): PushIterable<T> {\n if (sources.length > 1) {\n return {\n [Symbol.iterator](): PushIterator<T> {\n\n let i = 0;\n let it: PushIterator<T> = itsIterator(sources[0]);\n\n return makePushIterator(accept => {\n for (;;) {\n\n // eslint-disable-next-line @typescript-eslint/no-invalid-void-type\n let goOn: boolean | void;\n\n if (!it.forNext(element => goOn = accept(element))) {\n if (++i >= sources.length) {\n return false;\n }\n it = itsIterator(sources[i]);\n }\n if (goOn === false) {\n return true;\n }\n }\n });\n },\n };\n }\n if (sources.length) {\n return overIterable(sources[0]);\n }\n return overNone();\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport type { PushIterable } from '../push-iterable';\nimport type { PushIterator } from '../push-iterator';\nimport { PushIterator$iterator } from '../push-iterator.impl';\n\n/**\n * Creates a {@link PushIterable push iterable} over one value.\n *\n * @typeParam T Iterated element value type.\n * @param value A value to iterate over.\n *\n * @returns New push iterable over the given value.\n */\nexport function overOne<T>(value: T): PushIterable<T> {\n return { [Symbol.iterator]: () => oneValueIterator(value) };\n}\n\n/**\n * @internal\n */\nfunction oneValueIterator<T>(value: T): PushIterator<T> {\n\n let done = false;\n\n return {\n [Symbol.iterator]: PushIterator$iterator,\n next() {\n if (done) {\n return { done } as IteratorReturnResult<undefined>;\n }\n done = true;\n return { value };\n },\n forNext(accept) {\n if (!done) {\n done = true;\n accept(value);\n }\n return false;\n },\n };\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport type { PushIterable } from '../push-iterable';\nimport { overArray } from './over-array';\nimport { overNone } from './over-none';\nimport { overOne } from './over-one';\n\n/**\n * Creates a {@link PushIterable push iterable} over many values.\n *\n * @typeParam T Iterated elements value type.\n * @param values Values to iterate over.\n *\n * @returns New push iterable over the given values.\n */\nexport function overMany<T>(...values: readonly T[]): PushIterable<T> {\n if (values.length > 1) {\n return overArray(values);\n }\n if (values.length) {\n return overOne(values[0]);\n }\n return overNone();\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { makePushIterator } from '../make-push-iterator';\nimport type { PushIterable } from '../push-iterable';\nimport type { PushIterator } from '../push-iterator';\n\n/**\n * Creates a {@link PushIterable push iterable} over elements of array-like structure in reverse order.\n *\n * @typeParam T Array elements type.\n * @param array An array-like structure. E.g. `Array`, DOM `NodeList`, etc.\n *\n * @returns New push iterable over array elements in reverse order.\n */\nexport function reverseArray<T>(array: ArrayLike<T>): PushIterable<T> {\n return { [Symbol.iterator]: () => reverseArrayIterator(array) };\n}\n\n/**\n * @internal\n */\nfunction reverseArrayIterator<T>(array: ArrayLike<T>): PushIterator<T> {\n\n let i = array.length - 1;\n\n return makePushIterator(accept => {\n if (i < 0) {\n return false;\n }\n\n for (; ;) {\n\n const goOn = accept(array[i--]);\n\n if (i < 0) {\n return false;\n }\n if (goOn === false) {\n return true;\n }\n }\n });\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { isPushIterator } from '../is-push-iterator';\nimport type { PushIterable } from '../push-iterable';\n\n/**\n * Performs the given `action` for each element of the given `iterable`.\n *\n * @typeParam T Iterated elements type.\n * @param iterable An iterable of elements to perform actions on.\n * @param action An action to perform on each iterable element. This is a function accepting an element as its only\n * parameter.\n */\nexport function itsEach<T>(iterable: Iterable<T> | PushIterable<T>, action: (this: void, element: T) => void): void {\n\n const it = iterable[Symbol.iterator]();\n\n if (isPushIterator(it)) {\n it.forNext(element => {\n action(element);\n });\n } else {\n for (;;) {\n\n const res = it.next();\n\n if (res.done) {\n break;\n }\n\n action(res.value);\n }\n }\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { isPushIterator } from '../is-push-iterator';\nimport { itsIterator } from '../its-iterator';\nimport type { PushIterable } from '../push-iterable';\n\n/**\n * Checks whether the given `iterable` is empty.\n *\n * @param iterable An iterable or push iterable to check for elements.\n *\n * @return `true` if the given iterable contains at least one element, or `false` otherwise.\n */\nexport function itsEmpty(iterable: Iterable<any> | PushIterable<any>): boolean {\n\n const it = iterable[Symbol.iterator]();\n\n if (isPushIterator(it)) {\n\n let isEmpty = true;\n\n itsIterator(iterable).forNext(() => isEmpty = false);\n\n return isEmpty;\n }\n\n return !!it.next().done;\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { itsIterator } from '../its-iterator';\nimport type { PushIterable } from '../push-iterable';\n\n/**\n * Tests whether all elements of the given `iterable` pass the test implemented by the provided function.\n *\n * @typeParam T Iterated elements type.\n * @param iterable An iterable to test elements of.\n * @param test A predicate function to test each element. Returns `true` to continue tests, or `false` to stop it\n * and return `false` from the method call. It accepts the tested element as the only parameter.\n *\n * @returns `true` if the `test` function returned a truthy value for every element, or `false` otherwise.\n * Returns `true` for empty iterable.\n */\nexport function itsEvery<T>(\n iterable: Iterable<T> | PushIterable<T>,\n test: (this: void, element: T) => boolean,\n): boolean {\n\n let allMatch = true;\n\n itsIterator(iterable).forNext(element => allMatch = !!test(element));\n\n return allMatch;\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { isPushIterator } from '../is-push-iterator';\nimport type { PushIterable } from '../push-iterable';\n\n/**\n * Extracts the first element of the given `iterable`, if any.\n *\n * @typeParam T Iterated elements type.\n * @param iterable An iterable to extract element from.\n *\n * @return Either the first element, or `undefined` if the given `iterable` is empty.\n */\nexport function itsFirst<T>(iterable: Iterable<T> | PushIterable<T>): T | undefined {\n\n const it = iterable[Symbol.iterator]();\n\n if (isPushIterator(it)) {\n\n let first: T | undefined;\n\n it.forNext(element => {\n first = element;\n return false;\n });\n\n return first;\n }\n\n const result = it.next();\n\n return result.done ? undefined : result.value;\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { isPushIterator } from '../is-push-iterator';\nimport type { PushIterable } from '../push-iterable';\n\n/**\n * Applies a function against an accumulator and each element of the given `iterable` to reduce elements to a single\n * value.\n *\n * @typeParam T A type of `iterable` elements.\n * @typeParam R A type of reduced value.\n * @param iterable An iterable to reduce values of.\n * @param reducer A function to apply the value returned from the previous `reducer` call and to each element.\n * @param initialValue Initial value passed to the first `reducer` call.\n *\n * @return Reduced value returned from the last `reducer` call, or `initialValue` if there is no elements in the given\n * `iterable`.\n */\nexport function itsReduction<T, R>(\n iterable: Iterable<T> | PushIterable<T>,\n reducer: (this: void, prev: R, element: T) => R,\n initialValue: R,\n): R {\n\n let reduced = initialValue;\n const it = iterable[Symbol.iterator]();\n\n if (isPushIterator(it)) {\n it.forNext(element => {\n reduced = reducer(reduced, element);\n });\n } else {\n for (;;) {\n\n const res = it.next();\n\n if (res.done) {\n break;\n }\n\n reduced = reducer(reduced, res.value);\n }\n }\n\n return reduced;\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { itsIterator } from '../its-iterator';\nimport type { PushIterable } from '../push-iterable';\n\n/**\n * Tests whether at least one element of the given `iterable` passes the test implemented by the provided function.\n *\n * @typeParam T A type of `iterable` elements.\n * @param iterable An iterable to test elements of.\n * @param test A predicate function to test each element. Returns `false` to continue tests, or `true` to stop it\n * and return `true` from the method call. It accepts the tested element as the only parameter.\n *\n * @returns `true` if the callback function returned a truthy value for at least one element in the array, or `false`\n * otherwise. Returns `false` for empty iterable.\n */\nexport function itsSome<T>(\n iterable: Iterable<T> | PushIterable<T>,\n test: (this: void, element: T) => boolean,\n): boolean {\n\n let someMatches = false;\n\n itsIterator(iterable).forNext(element => !(someMatches = !!test(element)));\n\n return someMatches;\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { overArray } from '../construction';\nimport type { PushIterable } from '../push-iterable';\n\n/**\n * Creates a {@link PushIterable push iterable} over keys of the given object.\n *\n * A list of keys is constructed using `Reflect.ownKeys()`.\n *\n * @typeParam T Source object type.\n * @param source An object to select keys from.\n *\n * @returns New push iterable over own object keys retrieved by `Reflect.ownKeys()`.\n */\nexport function overKeys<T extends object>(source: T): PushIterable<keyof T> {\n return overArray(Reflect.ownKeys(source) as (keyof T)[]);\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { itsIterator } from '../its-iterator';\nimport { makePushIterator } from '../make-push-iterator';\nimport type { PushIterable } from '../push-iterable';\nimport type { PushIterator } from '../push-iterator';\n\n/**\n * Creates a {@link PushIterable push iterable} with all `source` iterable elements that pass the test implemented by\n * the provided function.\n *\n * @typeParam T A type of source elements.\n * @param source A source iterable.\n * @param test A predicate function to test each element. Returns `true` to keep the element, or `false` otherwise.\n * It accepts the tested element as the only parameter.\n *\n * @return New push iterable with the elements that pass the test. If no elements passed the test, an empty iterable\n * will be returned.\n */\nexport function filterIt<T>(\n source: Iterable<T> | PushIterable<T>,\n test: (this: void, element: T) => boolean,\n): PushIterable<T>;\n\n/**\n * Creates a {@link PushIterable push iterable} with all `source` iterable elements extending the given type.\n *\n * @typeParam T A type of source elements\n * @typeParam R Target type.\n * @param source A source iterable.\n * @param test A predicate function to test that element extends the type `R`. Returns `true` to keep the element, or\n * `false` otherwise. It accepts the tested element as the only parameter.\n *\n * @return New push iterable with the elements that pass the test. If no elements passed the test, an empty iterable\n * will be returned.\n */\nexport function filterIt<T, R extends T>(\n source: Iterable<T> | PushIterable<T>,\n test: (this: void, element: T) => element is R,\n): PushIterable<R>;\n\nexport function filterIt<T>(\n source: Iterable<T> | PushIterable<T>,\n test: (this: void, element: T) => boolean,\n): PushIterable<T> {\n return {\n [Symbol.iterator](): PushIterator<T> {\n\n const it = itsIterator(source);\n\n return makePushIterator(accept => it.forNext(element => !test(element) || accept(element)));\n },\n };\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { itsIterator } from '../its-iterator';\nimport { makePushIterator } from '../make-push-iterator';\nimport type { PushIterable } from '../push-iterable';\nimport type { PushIterator } from '../push-iterator';\n\n/**\n * @internal\n */\nconst flatMapIt$defaultConverter = <T, R>(element: T): Iterable<R> => element as unknown as Iterable<R>;\n\n/**\n * Flattens the source iterable of iterables into new {@link PushIterable push iterable}.\n *\n * Calling this function is the same as calling `flatMapIt(source, element => element)`.\n *\n * @typeParam T A type of source elements.\n * @param source A source iterable of iterables.\n *\n * @returns New push iterable with each element of `source` being the flattened.\n */\nexport function flatMapIt<T>(source: Iterable<Iterable<T>>): PushIterable<T>;\n\n/**\n * First maps each element of the `source` iterable using a mapping function, then flattens the result into new\n * {@link PushIterable push iterable}.\n *\n * @typeParam T A type of source elements.\n * @typeParam R A type of converted elements.\n * @param source A source iterable.\n * @param convert A function that produces a new iterable, taking the source element as the only parameter.\n *\n * @returns New push iterable with each element being the flattened result of the `convert` function call.\n */\nexport function flatMapIt<T, R>(\n source: Iterable<T> | PushIterable<T>,\n convert: (this: void, element: T) => Iterable<R> | PushIterable<R>,\n): PushIterable<R>;\n\nexport function flatMapIt<T, R>(\n source: Iterable<T> | PushIterable<T>,\n convert: (this: void, element: T) => Iterable<R> | PushIterable<R> = flatMapIt$defaultConverter,\n): PushIterable<R> {\n return {\n [Symbol.iterator](): PushIterator<R> {\n\n const it = itsIterator(source);\n let cIt: PushIterator<R> | undefined;\n let lastSrc = false;\n\n return makePushIterator(accept => {\n for (;;) {\n while (!cIt) {\n if (!it.forNext(src => {\n cIt = itsIterator(convert(src));\n return false;\n })) {\n if (!cIt) {\n return false;\n }\n lastSrc = true;\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-invalid-void-type\n let goOn: boolean | void;\n\n if (!cIt.forNext(element => goOn = accept(element))) {\n cIt = undefined;\n if (lastSrc) {\n return false;\n }\n }\n if (goOn === false) {\n return true;\n }\n }\n });\n },\n };\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { itsIterator } from '../its-iterator';\nimport { makePushIterator } from '../make-push-iterator';\nimport type { PushIterable } from '../push-iterable';\nimport type { PushIterator } from '../push-iterator';\n\n/**\n * Creates a {@link PushIterable push iterable} with the results of calling a provided function on every element of the\n * `source` iterable.\n *\n * @typeParam T A type of source elements.\n * @typeParam R A type of converted elements.\n * @param source A source iterable.\n * @param convert A function that produces an element of the new iterable, taking the source element as the only\n * parameter.\n *\n * @returns New push iterable of transformed elements.\n */\nexport function mapIt<T, R>(\n source: Iterable<T> | PushIterable<T>,\n convert: (this: void, element: T) => R,\n): PushIterable<R> {\n return {\n [Symbol.iterator](): PushIterator<R> {\n\n const it = itsIterator(source);\n\n return makePushIterator(accept => it.forNext(element => accept(convert(element))));\n },\n };\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport type { PushIterable } from '../push-iterable';\nimport { mapIt } from '../transformation';\nimport type { ObjectEntry } from './object-entry';\nimport { overKeys } from './over-keys';\n\n/**\n * Creates a {@link PushIterable push iterable} over the property key/value entries of the given object.\n *\n * A list of keys is constructed using `Reflect.ownKeys()`.\n *\n * @typeParam T Object type.\n *\n * @param source An object to select keys and values from.\n *\n * @returns New push iterable of object property entries.\n */\nexport function overEntries<T extends object>(source: T): PushIterable<ObjectEntry<T>> {\n return mapIt(\n overKeys(source),\n key => [key, source[key]],\n );\n}\n"],"names":[],"mappings":"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"}
{"version":3,"file":"push-iterator.mjs","sources":["../src/push-iterator.impl.ts","../src/array-iterator.impl.ts","../src/construction/over-array.ts","../src/its-iterator.ts","../src/make-push-iterator.ts","../src/construction/over-iterable.ts","../src/construction/over-none.ts","../src/construction/over-elements-of.ts","../src/construction/over-one.ts","../src/construction/over-many.ts","../src/construction/reverse-array.ts","../src/consumption/its-each.ts","../src/consumption/its-empty.ts","../src/consumption/its-every.ts","../src/consumption/its-first.ts","../src/consumption/its-reduction.ts","../src/consumption/its-some.ts","../src/objects/over-keys.ts","../src/transformation/filter-it.ts","../src/transformation/flat-map-it.ts","../src/transformation/map-it.ts","../src/objects/over-entries.ts"],"sourcesContent":["import type { PushIterator, PushOrRawIterator } from './push-iterator';\n\n/**\n * @internal\n */\nexport function PushIterator$iterator<T>(this: PushIterator<T>): PushIterator<T> {\n return this;\n}\n\n/**\n * @internal\n */\nexport function PushIterator$next<T>(this: PushIterator<T>): IteratorResult<T> {\n for (; ;) {\n\n let result: IteratorYieldResult<T> | undefined;\n const done = !this.forNext(value => {\n result = { value };\n return false;\n });\n\n if (result) {\n return result;\n }\n if (done) {\n return { done: true } as IteratorReturnResult<T>;\n }\n }\n}\n\n/**\n * @internal\n */\nexport function toPushIterator<T>(it: PushOrRawIterator<T>): PushIterator<T> {\n if (it.forNext) {\n return it;\n }\n\n return {\n\n [Symbol.iterator]: PushIterator$iterator,\n\n next() {\n return it.next();\n },\n\n forNext(accept) {\n for (; ;) {\n\n const res = it.next();\n\n if (res.done) {\n return false;\n }\n if (accept(res.value) === false) {\n return true;\n }\n }\n },\n\n };\n}\n","import type { PushIterator } from './push-iterator';\nimport { PushIterator$iterator } from './push-iterator.impl';\n\n/**\n * @internal\n */\nexport function arrayIterator<T>(array: ArrayLike<T>): PushIterator<T> {\n\n let i = 0;\n\n return {\n [Symbol.iterator]: PushIterator$iterator,\n next: () => i < array.length ? { value: array[i++] } : { done: true } as IteratorReturnResult<undefined>,\n forNext(accept) {\n if (i >= array.length) {\n return false;\n }\n\n for (; ;) {\n\n const goOn = accept(array[i++]);\n\n if (i >= array.length) {\n return false;\n }\n if (goOn === false) {\n return true;\n }\n }\n },\n };\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { arrayIterator } from '../array-iterator.impl';\nimport type { PushIterable } from '../push-iterable';\n\n/**\n * Creates a {@link PushIterable push iterable} over elements of array-like structure.\n *\n * @typeParam T Array elements type.\n * @param array An array-like structure. E.g. `Array`, DOM `NodeList`, etc.\n *\n * @returns New push iterable over array elements.\n */\nexport function overArray<T>(array: ArrayLike<T>): PushIterable<T> {\n return { [Symbol.iterator]: () => arrayIterator(array) };\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { arrayIterator } from './array-iterator.impl';\nimport type { PushOrRawIterable } from './push-iterable';\nimport type { PushIterator } from './push-iterator';\nimport { toPushIterator } from './push-iterator.impl';\n\n/**\n * Starts iteration over the given `iterable`.\n *\n * @typeParam T Iterated elements type.\n * @param iterable An iterable or push iterable to iterate over.\n *\n * @return A push iterator iterating over the given iterable.\n */\nexport function itsIterator<T>(iterable: PushOrRawIterable<T>): PushIterator<T> {\n if (Array.isArray(iterable)) {\n return arrayIterator<T>(iterable);\n }\n return toPushIterator(iterable[Symbol.iterator]());\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport type { PushIterator } from './push-iterator';\nimport { PushIterator$iterator, PushIterator$next } from './push-iterator.impl';\n\n/**\n * Creates push iterator implementation.\n *\n * @param forNext A function iterating over elements conforming to {@link PushIterator.forNext} requirement.\n *\n * @returns New push iterator instance performing iteration by `forNext` function.\n */\nexport function makePushIterator<T>(forNext: PushIterator.Pusher<T>): PushIterator<T> {\n return {\n [Symbol.iterator]: PushIterator$iterator,\n next: PushIterator$next,\n forNext,\n };\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport type { PushIterable, PushOrRawIterable } from '../push-iterable';\nimport { toPushIterator } from '../push-iterator.impl';\nimport { overArray } from './over-array';\n\n/**\n * Creates a {@link PushIterable push iterable} over elements of the given raw iterable.\n *\n * @typeParam T Iterated elements type.\n * @param source Source iterable to iterate over elements of.\n *\n * @returns New push iterable over elements of the given `source`.\n */\nexport function overIterable<T>(source: PushOrRawIterable<T>): PushIterable<T> {\n if (Array.isArray(source)) {\n return overArray<T>(source);\n }\n return { [Symbol.iterator]: () => toPushIterator(source[Symbol.iterator]()) };\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport type { PushIterable } from '../push-iterable';\nimport type { PushIterator } from '../push-iterator';\n\n/**\n * @internal\n */\nconst noneIterator = {\n [Symbol.iterator]: () => noneIterator,\n next: () => ({ done: true } as IteratorReturnResult<unknown>),\n forNext: () => false,\n};\n\n/**\n * Returns a {@link PushIterator push iterable iterator} without elements.\n *\n * @typeParam T Iterated elements type.\n *\n * @returns Empty push iterable and push iterator instance.\n */\nexport function overNone<T>(): PushIterable<T> & PushIterator<T> {\n return noneIterator;\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { itsIterator } from '../its-iterator';\nimport { makePushIterator } from '../make-push-iterator';\nimport type { PushIterable, PushOrRawIterable } from '../push-iterable';\nimport type { PushIterator } from '../push-iterator';\nimport { overIterable } from './over-iterable';\nimport { overNone } from './over-none';\n\n/**\n * Creates a {@link PushIterable push iterable} over elements of other iterables.\n *\n * @typeParam T Iterated elements type.\n * @param sources Source iterables to iterate over elements of.\n *\n * @returns New push iterable over elements of the given `sources`.\n */\nexport function overElementsOf<T>(...sources: readonly PushOrRawIterable<T>[]): PushIterable<T> {\n if (sources.length > 1) {\n return {\n [Symbol.iterator](): PushIterator<T> {\n\n let i = 0;\n let it: PushIterator<T> = itsIterator(sources[0]);\n\n return makePushIterator(accept => {\n for (;;) {\n\n // eslint-disable-next-line @typescript-eslint/no-invalid-void-type\n let goOn: boolean | void;\n\n if (!it.forNext(element => goOn = accept(element))) {\n if (++i >= sources.length) {\n return false;\n }\n it = itsIterator(sources[i]);\n }\n if (goOn === false) {\n return true;\n }\n }\n });\n },\n };\n }\n if (sources.length) {\n return overIterable(sources[0]);\n }\n return overNone();\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport type { PushIterable } from '../push-iterable';\nimport type { PushIterator } from '../push-iterator';\nimport { PushIterator$iterator } from '../push-iterator.impl';\n\n/**\n * Creates a {@link PushIterable push iterable} over one value.\n *\n * @typeParam T Iterated element value type.\n * @param value A value to iterate over.\n *\n * @returns New push iterable over the given value.\n */\nexport function overOne<T>(value: T): PushIterable<T> {\n return { [Symbol.iterator]: () => oneValueIterator(value) };\n}\n\n/**\n * @internal\n */\nfunction oneValueIterator<T>(value: T): PushIterator<T> {\n\n let done = false;\n\n return {\n [Symbol.iterator]: PushIterator$iterator,\n next() {\n if (done) {\n return { done } as IteratorReturnResult<undefined>;\n }\n done = true;\n return { value };\n },\n forNext(accept) {\n if (!done) {\n done = true;\n accept(value);\n }\n return false;\n },\n };\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport type { PushIterable } from '../push-iterable';\nimport { overArray } from './over-array';\nimport { overNone } from './over-none';\nimport { overOne } from './over-one';\n\n/**\n * Creates a {@link PushIterable push iterable} over many values.\n *\n * @typeParam T Iterated elements value type.\n * @param values Values to iterate over.\n *\n * @returns New push iterable over the given values.\n */\nexport function overMany<T>(...values: readonly T[]): PushIterable<T> {\n if (values.length > 1) {\n return overArray(values);\n }\n if (values.length) {\n return overOne(values[0]);\n }\n return overNone();\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { makePushIterator } from '../make-push-iterator';\nimport type { PushIterable } from '../push-iterable';\nimport type { PushIterator } from '../push-iterator';\n\n/**\n * Creates a {@link PushIterable push iterable} over elements of array-like structure in reverse order.\n *\n * @typeParam T Array elements type.\n * @param array An array-like structure. E.g. `Array`, DOM `NodeList`, etc.\n *\n * @returns New push iterable over array elements in reverse order.\n */\nexport function reverseArray<T>(array: ArrayLike<T>): PushIterable<T> {\n return { [Symbol.iterator]: () => reverseArrayIterator(array) };\n}\n\n/**\n * @internal\n */\nfunction reverseArrayIterator<T>(array: ArrayLike<T>): PushIterator<T> {\n\n let i = array.length - 1;\n\n return makePushIterator(accept => {\n if (i < 0) {\n return false;\n }\n\n for (; ;) {\n\n const goOn = accept(array[i--]);\n\n if (i < 0) {\n return false;\n }\n if (goOn === false) {\n return true;\n }\n }\n });\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport type { PushOrRawIterable } from '../push-iterable';\n\n/**\n * Performs the given `action` for each element of the given `iterable`.\n *\n * @typeParam T Iterated elements type.\n * @param iterable An iterable of elements to perform actions on.\n * @param action An action to perform on each iterable element. This is a function accepting an element as its only\n * parameter.\n */\nexport function itsEach<T>(iterable: PushOrRawIterable<T>, action: (this: void, element: T) => void): void {\n\n const it = iterable[Symbol.iterator]();\n const forNext = it.forNext;\n\n if (forNext) {\n forNext(element => {\n action(element);\n });\n } else {\n for (;;) {\n\n const res = it.next();\n\n if (res.done) {\n break;\n }\n\n action(res.value);\n }\n }\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport type { PushOrRawIterable } from '../push-iterable';\n\n/**\n * Checks whether the given `iterable` is empty.\n *\n * @param iterable An iterable or push iterable to check for elements.\n *\n * @return `true` if the given iterable contains at least one element, or `false` otherwise.\n */\nexport function itsEmpty(iterable: PushOrRawIterable<any>): boolean {\n\n const it = iterable[Symbol.iterator]();\n const forNext = it.forNext;\n\n if (forNext) {\n\n let isEmpty = true;\n\n forNext(() => isEmpty = false);\n\n return isEmpty;\n }\n\n return !!it.next().done;\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { itsIterator } from '../its-iterator';\nimport type { PushOrRawIterable } from '../push-iterable';\n\n/**\n * Tests whether all elements of the given `iterable` pass the test implemented by the provided function.\n *\n * @typeParam T Iterated elements type.\n * @param iterable An iterable to test elements of.\n * @param test A predicate function to test each element. Returns `true` to continue tests, or `false` to stop it\n * and return `false` from the method call. It accepts the tested element as the only parameter.\n *\n * @returns `true` if the `test` function returned a truthy value for every element, or `false` otherwise.\n * Returns `true` for empty iterable.\n */\nexport function itsEvery<T>(\n iterable: PushOrRawIterable<T>,\n test: (this: void, element: T) => boolean,\n): boolean {\n\n let allMatch = true;\n\n itsIterator(iterable).forNext(element => allMatch = !!test(element));\n\n return allMatch;\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport type { PushOrRawIterable } from '../push-iterable';\n\n/**\n * Extracts the first element of the given `iterable`, if any.\n *\n * @typeParam T Iterated elements type.\n * @param iterable An iterable to extract element from.\n *\n * @return Either the first element, or `undefined` if the given `iterable` is empty.\n */\nexport function itsFirst<T>(iterable: PushOrRawIterable<T>): T | undefined {\n\n const it = iterable[Symbol.iterator]();\n const forNext = it.forNext;\n\n if (forNext) {\n\n let first: T | undefined;\n\n forNext(element => {\n first = element;\n return false;\n });\n\n return first;\n }\n\n const result = it.next();\n\n return result.done ? undefined : result.value;\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport type { PushOrRawIterable } from '../push-iterable';\n\n/**\n * Applies a function against an accumulator and each element of the given `iterable` to reduce elements to a single\n * value.\n *\n * @typeParam T A type of `iterable` elements.\n * @typeParam R A type of reduced value.\n * @param iterable An iterable to reduce values of.\n * @param reducer A function to apply the value returned from the previous `reducer` call and to each element.\n * @param initialValue Initial value passed to the first `reducer` call.\n *\n * @return Reduced value returned from the last `reducer` call, or `initialValue` if there is no elements in the given\n * `iterable`.\n */\nexport function itsReduction<T, R>(\n iterable: PushOrRawIterable<T>,\n reducer: (this: void, prev: R, element: T) => R,\n initialValue: R,\n): R {\n\n let reduced = initialValue;\n const it = iterable[Symbol.iterator]();\n const forNext = it.forNext;\n\n if (forNext) {\n forNext(element => {\n reduced = reducer(reduced, element);\n });\n } else {\n for (;;) {\n\n const res = it.next();\n\n if (res.done) {\n break;\n }\n\n reduced = reducer(reduced, res.value);\n }\n }\n\n return reduced;\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { itsIterator } from '../its-iterator';\nimport type { PushOrRawIterable } from '../push-iterable';\n\n/**\n * Tests whether at least one element of the given `iterable` passes the test implemented by the provided function.\n *\n * @typeParam T A type of `iterable` elements.\n * @param iterable An iterable to test elements of.\n * @param test A predicate function to test each element. Returns `false` to continue tests, or `true` to stop it\n * and return `true` from the method call. It accepts the tested element as the only parameter.\n *\n * @returns `true` if the callback function returned a truthy value for at least one element in the array, or `false`\n * otherwise. Returns `false` for empty iterable.\n */\nexport function itsSome<T>(\n iterable: PushOrRawIterable<T>,\n test: (this: void, element: T) => boolean,\n): boolean {\n\n let someMatches = false;\n\n itsIterator(iterable).forNext(element => !(someMatches = !!test(element)));\n\n return someMatches;\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { overArray } from '../construction';\nimport type { PushIterable } from '../push-iterable';\n\n/**\n * Creates a {@link PushIterable push iterable} over keys of the given object.\n *\n * A list of keys is constructed using `Reflect.ownKeys()`.\n *\n * @typeParam T Source object type.\n * @param source An object to select keys from.\n *\n * @returns New push iterable over own object keys retrieved by `Reflect.ownKeys()`.\n */\nexport function overKeys<T extends object>(source: T): PushIterable<keyof T> {\n return overArray(Reflect.ownKeys(source) as (keyof T)[]);\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { itsIterator } from '../its-iterator';\nimport { makePushIterator } from '../make-push-iterator';\nimport type { PushIterable, PushOrRawIterable } from '../push-iterable';\nimport type { PushIterator } from '../push-iterator';\n\n/**\n * Creates a {@link PushIterable push iterable} with all `source` iterable elements that pass the test implemented by\n * the provided function.\n *\n * @typeParam T A type of source elements.\n * @param source A source iterable.\n * @param test A predicate function to test each element. Returns `true` to keep the element, or `false` otherwise.\n * It accepts the tested element as the only parameter.\n *\n * @return New push iterable with the elements that pass the test. If no elements passed the test, an empty iterable\n * will be returned.\n */\nexport function filterIt<T>(\n source: PushOrRawIterable<T>,\n test: (this: void, element: T) => boolean,\n): PushIterable<T>;\n\n/**\n * Creates a {@link PushIterable push iterable} with all `source` iterable elements extending the given type.\n *\n * @typeParam T A type of source elements\n * @typeParam R Target type.\n * @param source A source iterable.\n * @param test A predicate function to test that element extends the type `R`. Returns `true` to keep the element, or\n * `false` otherwise. It accepts the tested element as the only parameter.\n *\n * @return New push iterable with the elements that pass the test. If no elements passed the test, an empty iterable\n * will be returned.\n */\nexport function filterIt<T, R extends T>(\n source: PushOrRawIterable<T>,\n test: (this: void, element: T) => element is R,\n): PushIterable<R>;\n\nexport function filterIt<T>(\n source: PushOrRawIterable<T>,\n test: (this: void, element: T) => boolean,\n): PushIterable<T> {\n return {\n [Symbol.iterator](): PushIterator<T> {\n\n const it = itsIterator(source);\n\n return makePushIterator(accept => it.forNext(element => !test(element) || accept(element)));\n },\n };\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { itsIterator } from '../its-iterator';\nimport { makePushIterator } from '../make-push-iterator';\nimport type { PushIterable, PushOrRawIterable } from '../push-iterable';\nimport type { PushIterator } from '../push-iterator';\n\n/**\n * @internal\n */\nconst flatMapIt$defaultConverter = <T, R>(element: T): PushOrRawIterable<R> => element as unknown as Iterable<R>;\n\n/**\n * Flattens the source iterable of iterables into new {@link PushIterable push iterable}.\n *\n * Calling this function is the same as calling `flatMapIt(source, element => element)`.\n *\n * @typeParam T A type of source elements.\n * @param source A source iterable of iterables.\n *\n * @returns New push iterable with each element of `source` being the flattened.\n */\nexport function flatMapIt<T>(source: PushOrRawIterable<Iterable<T>>): PushIterable<T>;\n\n/**\n * First maps each element of the `source` iterable using a mapping function, then flattens the result into new\n * {@link PushIterable push iterable}.\n *\n * @typeParam T A type of source elements.\n * @typeParam R A type of converted elements.\n * @param source A source iterable.\n * @param convert A function that produces a new iterable, taking the source element as the only parameter.\n *\n * @returns New push iterable with each element being the flattened result of the `convert` function call.\n */\nexport function flatMapIt<T, R>(\n source: PushOrRawIterable<T>,\n convert: (this: void, element: T) => PushOrRawIterable<R>,\n): PushIterable<R>;\n\nexport function flatMapIt<T, R>(\n source: PushOrRawIterable<T>,\n convert: (this: void, element: T) => PushOrRawIterable<R> = flatMapIt$defaultConverter,\n): PushIterable<R> {\n return {\n [Symbol.iterator](): PushIterator<R> {\n\n const it = itsIterator(source);\n let cIt: PushIterator<R> | undefined;\n let lastSrc = false;\n\n return makePushIterator(accept => {\n for (;;) {\n while (!cIt) {\n if (!it.forNext(src => {\n cIt = itsIterator(convert(src));\n return false;\n })) {\n if (!cIt) {\n return false;\n }\n lastSrc = true;\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-invalid-void-type\n let goOn: boolean | void;\n\n if (!cIt.forNext(element => goOn = accept(element))) {\n cIt = undefined;\n if (lastSrc) {\n return false;\n }\n }\n if (goOn === false) {\n return true;\n }\n }\n });\n },\n };\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport { itsIterator } from '../its-iterator';\nimport { makePushIterator } from '../make-push-iterator';\nimport type { PushIterable, PushOrRawIterable } from '../push-iterable';\nimport type { PushIterator } from '../push-iterator';\n\n/**\n * Creates a {@link PushIterable push iterable} with the results of calling a provided function on every element of the\n * `source` iterable.\n *\n * @typeParam T A type of source elements.\n * @typeParam R A type of converted elements.\n * @param source A source iterable.\n * @param convert A function that produces an element of the new iterable, taking the source element as the only\n * parameter.\n *\n * @returns New push iterable of transformed elements.\n */\nexport function mapIt<T, R>(\n source: PushOrRawIterable<T>,\n convert: (this: void, element: T) => R,\n): PushIterable<R> {\n return {\n [Symbol.iterator](): PushIterator<R> {\n\n const it = itsIterator(source);\n\n return makePushIterator(accept => it.forNext(element => accept(convert(element))));\n },\n };\n}\n","/**\n * @packageDocumentation\n * @module @proc7ts/push-iterator\n */\nimport type { PushIterable } from '../push-iterable';\nimport { mapIt } from '../transformation';\nimport type { ObjectEntry } from './object-entry';\nimport { overKeys } from './over-keys';\n\n/**\n * Creates a {@link PushIterable push iterable} over the property key/value entries of the given object.\n *\n * A list of keys is constructed using `Reflect.ownKeys()`.\n *\n * @typeParam T Object type.\n *\n * @param source An object to select keys and values from.\n *\n * @returns New push iterable of object property entries.\n */\nexport function overEntries<T extends object>(source: T): PushIterable<ObjectEntry<T>> {\n return mapIt(\n overKeys(source),\n key => [key, source[key]],\n );\n}\n"],"names":[],"mappings":"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"}
{
"name": "@proc7ts/push-iterator",
"version": "1.0.0-dev.1",
"version": "1.0.0",
"description": "Push iteration protocol",

@@ -64,3 +64,3 @@ "keywords": [

"shx": "^0.3.2",
"ts-jest": "^26.4.0",
"ts-jest": "^26.4.1",
"tslib": "^2.0.1",

@@ -67,0 +67,0 @@ "typedoc": "^0.19.0",

@@ -10,3 +10,49 @@ Push Iteration Protocol

Push iteration protocol is a faster alternative to traditional JavaScript [iteration protocol].
It extends [Iterator] interface with `forNext(accept: (this: void, element: T) => void | boolean): boolean` method.
The latter pushes iterated elements to `accept` function until there is no more elements, or `accept` function returns
`false` yo stop iteration. The `forNext()` method returns `true` if there are more elements to iterate, or `false`
otherwise. The former is possible only when iteration stopped, i.e. `accept` returned `false`.
Rationale
---------
**Performance!**
Traditional [iteration protocol] implies a call to `next()` method and creation of `IteratorResult` object on each
iteration step. The push iteration protocol avoids that.
See [benchmarking results] for performance comparison.
JavaScript engines optimize native iteration heavily in some situations, especially for arrays. Still, in non-trivial
cases the push iteration protocol demonstrates better performance, especially when it deals with push iterators rather
with raw ones.
Design Goals
------------
1. **Performance**.
Push iterators are faster. Still, a lot of the code base relies on raw iterators and arrays. The library contains
performance optimizations to deal with it.
2. **Compatibility**.
- Push iterator implements [Iterator] interface.
- Each function in this library handles JavaScript [Iterator]/[Iterable] objects in addition to push iterator/push
iterable ones.
3. **Tree shaking** support.
The library API represented by functions. When tree-shaken the unused ones removed from bundles.
[iteration protocol]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols
[Iterator]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#The_iterator_protocol
[Iterable]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#The_iterable_protocol
[benchmarking results]: https://github.com/proc7ts/push-iterator/tree/master/benchmarks
[npm-image]: https://img.shields.io/npm/v/@proc7ts/push-iterator.svg?logo=npm

@@ -23,1 +69,46 @@ [npm-url]: https://www.npmjs.com/package/@proc7ts/push-iterator

[IoC]: https://en.wikipedia.org/wiki/Inversion_of_control
API
---
See the full [API Documentation].
### Push Iterables Construction
Each of the following functions return a push iterable instance:
- `overArray(array)` - Creates a push iterable over elements of array-like structure.
- `overElementsOf(...iterables)` - Creates a push iterable over elements of other iterables.
- `overEntries(object)` - Creates a push iterable over the property key/value entries of the given object.
- `overKeys(object)` - Creates a push iterable over keys of the given object.
- `overMany(...values)` - Creates a push iterable over many values.
- `overNone()` - Returns a push iterable iterator without elements.
- `reverseArray(array)` - Creates a push iterable over elements of array-like structure in reverse order.
### Iterables Consumption
Each of the following functions accept either [Iterable] or push iterable:
- `itsEach(iterable, action)` - Performs the given `action` for each element of the given `iterable`.
- `itsEmpty(iterable): boolean` - Checks whether the given `iterable` is empty.
- `itsEvery(iterable, test): boolean` - Tests whether all elements of the given `iterable` pass the test implemented
by the provided function.
- `itsFirst(iterable): T | undefined` - Extracts the first element of the given `iterable`, if any.
- `itsReduction(iterable, reducer, initialValue): T` - Applies a function against an accumulator and each element
of the given `iterable` to reduce elements to a single value.
- `itsSome(iterable, test): boolean` - Tests whether at least one element of the given `iterable` passes the test
implemented by the provided function.
### Iterables Transformation
Each of the following functions accept either [Iterable] or push iterable, and return a push iterable:
- `filterIt(source, test)` - Creates a push iterable with all `source` iterable elements that pass the test
implemented by the provided function.
- `flatMapIt(source, convert?)` - First maps each element of the `source` iterable using a mapping function,
then flattens the result into new push iterable.
- `mapIt(source, convert)` - Creates a push iterable with the results of calling a provided function on every element
of the `source` iterable.
/**
* @packageDocumentation
* @module @proc7ts/push-iterator
*/
import type { PushIterator } from './push-iterator';
/**
* Checks whether the given iterator implements push iteration protocol.
*
* @param iterator Target iterator to check.
*
* @returns `true` if `iterator` has {@link PushIterator.forNext forNext} method, or `false` otherwise.
*/
export declare function isPushIterator<T>(iterator: Iterator<T> | PushIterator<T>): iterator is PushIterator<T>;
//# sourceMappingURL=is-push-iterator.d.ts.map
{"version":3,"file":"is-push-iterator.d.ts","sourceRoot":"","sources":["../src/is-push-iterator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,YAAY,CAAC,CAAC,CAAC,CAEtG"}