'use strict'; const { Each } = require('./each'); const { setShorthand } = require('./internal/collection'); class FindKey extends Each { constructor(collection, iterator) { super(collection, iterator, set); } } module.exports = { findKey, FindKey }; function set(collection) { setShorthand.call(this, collection); this._callResolve = this._keys === undefined ? callResolveArray : callResolveObject; return this; } function callResolveArray(value, index) { if (value) { this._size = 0; this._promise._resolve(`${index}`); } else if (--this._rest === 0) { this._promise._resolve(); } } function callResolveObject(value, index) { if (value) { this._size = 0; this._promise._resolve(this._keys[index]); } else if (--this._rest === 0) { this._promise._resolve(); } } /** * @param {Array|Object} collection * @param {Function|Array|Object|string} iterator * @return {Aigle} Returns an Aigle instance */ function findKey(collection, iterator) { return new FindKey(collection, iterator)._execute(); }