'use strict'; require('../../modules/es.object.to-string'); require('../../modules/es.map'); require('../../modules/esnext.map.key-by'); require('../../modules/esnext.map.delete-all'); require('../../modules/esnext.map.emplace'); require('../../modules/esnext.map.every'); require('../../modules/esnext.map.filter'); require('../../modules/esnext.map.find'); require('../../modules/esnext.map.find-key'); require('../../modules/esnext.map.includes'); require('../../modules/esnext.map.key-of'); require('../../modules/esnext.map.map-keys'); require('../../modules/esnext.map.map-values'); require('../../modules/esnext.map.merge'); require('../../modules/esnext.map.reduce'); require('../../modules/esnext.map.some'); require('../../modules/esnext.map.update'); var call = require('../../internals/function-call'); var isCallable = require('../../internals/is-callable'); var path = require('../../internals/path'); var Map = path.Map; var mapKeyBy = Map.keyBy; module.exports = function keyBy(source, iterable, keyDerivative) { return call(mapKeyBy, isCallable(this) ? this : Map, source, iterable, keyDerivative); };