'use strict';

var slice = Array.prototype.slice; var isArgs = require('./isArguments');

var origKeys = Object.keys; var keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');

var originalKeys = Object.keys;

keysShim.shim = function shimObjectKeys() {

if (Object.keys) {
        var keysWorksWithArguments = (function () {
                // Safari 5.0 bug
                var args = Object.keys(arguments);
                return args && args.length === arguments.length;
        }(1, 2));
        if (!keysWorksWithArguments) {
                Object.keys = function keys(object) { // eslint-disable-line func-name-matching
                        if (isArgs(object)) {
                                return originalKeys(slice.call(object));
                        }
                        return originalKeys(object);
                };
        }
} else {
        Object.keys = keysShim;
}
return Object.keys || keysShim;

};

module.exports = keysShim;