"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports["default"] = void 0;

var _isPlainObject = _interopRequireDefault(require("lodash/isPlainObject"));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

// flattenObjectKeys({
//   a: {
//     b: {
//       c: [],
//       d: {
//         e: [{ f: [] }, { b: 1 }],
//         g: {}
//       }
//     }
//   }
// });
//
// [ [ 'a', 'b', 'c' ],
//   [ 'a', 'b', 'd', 'e', '0', 'f' ],
//   [ 'a', 'b', 'd', 'e', '1', 'b' ],
//   [ 'a', 'b', 'd', 'g' ] ]
//
var flattenObjectKeys = function flattenObjectKeys(obj) {
  var keys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
  return Object.keys(obj).reduce(function (acc, key) {
    var o = (0, _isPlainObject["default"])(obj[key]) && Object.keys(obj[key]).length > 0 || Array.isArray(obj[key]) && obj[key].length > 0 ? flattenObjectKeys(obj[key], keys.concat(key)) : [keys.concat(key)];
    return acc.concat(o);
  }, []);
};

var _default = flattenObjectKeys;
exports["default"] = _default;