export type Source = IterableIterator | T[]; export type IterableActivity = (source: Source) => IterableIterator; export type ScalarActivity = (source: Source) => U; export type Activity = IterableActivity | ScalarActivity; export function isSource(source: Source | any): source is Source { return typeof source[Symbol.iterator] === "function" || Array.isArray(source); }