utils.js
function dotFlatten(object, optSep) {
  let flattenedMap = {};

  if (!object) {
    throw new Error('`object` should be a proper Object non null nor undefined.');
  }
  let sep = optSep || '.';

  dotFlattenFn(object, sep, flattenedMap);
  return flattenedMap;
}
function dotFlatten(object, optSep) {
  let flattenedMap = {};

  if (!object) {
    throw new Error('`object` should be a proper Object non null nor undefined.');
  }
  let sep = optSep || '.';

  dotFlattenFn(object, sep, flattenedMap);
  return flattenedMap;
}
function dotFlatten ( object , optSep ) { let flattenedMap = { } ; if ( ! object ) { throw new Error ( '`object` should be a proper Object non null nor undefined.' ) ; } let sep = optSep || '.' ; dotFlattenFn ( object , sep , flattenedMap ) ; return flattenedMap ; }
Flattens an object tree down to an object of only one level with property
names with the dotted full path to the leave data.

Ex: { 'a.b.c.d': 23, 'a.b.c.e': 54 }

Usage: `dotFlatten(object)`
Usage: `dotFlatten(object, ',')`

@param  {Object} object            - The object to process.
@param  {String} [optSep]          - The separator between nested properties. Default '.'.
@return {Object}
Flattens an object tree down to an object of only one level with property names with the dotted full path to the leave data .