⭐ Collection of custom operators for iter-ops - ones based on existing operators.
💡 It is here to show implementation examples, plus share ideas of useful operations.
📋 These are just quick copy-n-paste snippets, they are not distributed anywhere.
📣 Feel free submitting PR-s with your own custom operators, to share with others.
- appendIf - conditionally injects value(s) after the current value.
- average - emits an average value, with optional key selector.
- distinctUntilChanged - filters out repeated values.
- distinctValues - selects unique key-values, then remaps into just values.
- flat/flatMap - replacement for default ones, to replicate Array's methods.
- group - groups objects by a property value.
- interval - the same as delay, but without delaying the first value.
- join - joins strings, with optional separator.
- mapWait - remaps and sequentially awaits promises.
- max - emits maximum value, with optional key selector.
- min - emits minimum value, with optional key selector.
- numberStats - emits basic number statistics:
{min, max, avg, sum, count}
. - pluck - maps each value to its specified nested property.
- prependIf - conditionally injects value(s) before the current value.
- removeNotType - removes values that are not of specified primitive type(s).
- removeType - removes values of specified primitive type(s).
- removeNil - removes all
null
andundefined
values. - repeatAll - repeats the entire iterable N times.
- replaceIf - conditionally injects value(s) in place of the current value.
- replaceNil - replaces every
null
andundefined
with an alternative value. - slice - implements Array->slice logic (for positive start/end only).
- sum - sums up values, with optional key selector.
- tapLog - logs values into the console, with optional tag + selector.
- tapOnce - taps into the very first value only.
- toBuffer - emits a
Buffer
from the iterable. - toReadable - emits a
Readable
stream from the iterable.
To use these, create a folder in your project, and copy over either select operators or the entire ./src folder, which also has file ./src/index.ts that includes everything.
Some of these operators may eventually land in the main iter-ops library. Use Discussions, if you want to propose and vote on such additions.
See also Custom Operators - explains API for custom operators.
💡 TIP: Operators consume and concurrencyFork are useful helpers for custom operators.