var keys = require('./keys'); var getProto = require('./getProto'); var unique = require('./unique'); var getOwnPropertyNames = Object.getOwnPropertyNames; var getOwnPropertySymbols = Object.getOwnPropertySymbols; exports = function(obj) { var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, _ref$prototype = _ref.prototype, prototype = _ref$prototype === void 0 ? true : _ref$prototype, _ref$unenumerable = _ref.unenumerable, unenumerable = _ref$unenumerable === void 0 ? false : _ref$unenumerable, _ref$symbol = _ref.symbol, symbol = _ref$symbol === void 0 ? false : _ref$symbol; var ret = []; if ((unenumerable || symbol) && getOwnPropertyNames) { var getKeys = keys; if (unenumerable && getOwnPropertyNames) getKeys = getOwnPropertyNames; do { ret = ret.concat(getKeys(obj)); if (symbol && getOwnPropertySymbols) { ret = ret.concat(getOwnPropertySymbols(obj)); } } while ( prototype && (obj = getProto(obj)) && obj !== Object.prototype ); ret = unique(ret); } else { if (prototype) { for (var key in obj) ret.push(key); } else { ret = keys(obj); } } return ret; }; module.exports = exports;