| /** |
| * Returns true if the provided object is an Object (i.e. not a string literal) |
| * and implements the Iterator protocol. |
| * |
| * This may be used in place of [Array.isArray()][isArray] to determine if |
| * an object should be iterated-over e.g. Array, Map, Set, Int8Array, |
| * TypedArray, etc. but excludes string literals. |
| * |
| * @internal |
| * @example |
| * ```ts |
| * isIterableObject([1, 2, 3]); // => true |
| * isIterableObject(new Map()); // => true |
| * isIterableObject('ABC'); // => false |
| * isIterableObject({ key: 'value' }); // => false |
| * isIterableObject({ length: 1, 0: 'Alpha' }); // => false |
| * ``` |
| */ |
| export function isIterableObject(maybeIterable) { |
| return ( |
| typeof maybeIterable === 'object' && |
| typeof (maybeIterable === null || maybeIterable === void 0 |
| ? void 0 |
| : maybeIterable[Symbol.iterator]) === 'function' |
| ); |
| } |