import { curry1 } from "../function";
import _keys from "../internals/_keys";
/**
* Returns the size of a list, object or string.
* For lists and strings, it will just return the `length` property.
* For objects - returns the sum of the counts of its own property names
* and its own property symbols.
*
* @param {any[]|object|string} collection
* @returns {number}
*/
const size = (collection) => {
if (Array.isArray(collection) || typeof collection === "string") {
return collection.length;
}
if (typeof collection === "object") {
return _keys(collection).length;
}
throw new Error(
`Cannot determine the size of a variable with a type of ${typeof collection}.`
);
};
export default curry1(size);