function evaluateKeyPathOnValue(value, keyPath, multiEntry) {
    if (Array.isArray(keyPath)) {
        var _ret = function () {
            var arrayValue = [];
            return {
                v: keyPath.some(function (kpPart) {
                    // If W3C tests are accurate, it appears sequence<DOMString> implies `toString()`
                    // See also https://heycam.github.io/webidl/#idl-DOMString
                    // and http://stackoverflow.com/questions/38164752/should-a-call-to-db-close-within-upgradeneeded-inevitably-prevent-onsuccess
                    kpPart = util.isObj(kpPart) ? kpPart.toString() : kpPart;
                    var key = extractKeyFromValueUsingKeyPath(value, kpPart, multiEntry);
                    try {
                        key = convertValueToKey(key);
                    } catch (err) {
                        return true;
                    }
                    arrayValue.push(key);
                }, []) ? undefined : arrayValue
            };
        }();

        if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === "object") return _ret.v;
    }
    if (keyPath === '') {
        return value;
    }
    var identifiers = keyPath.split('.');
    identifiers.some(function (idntfr, i) {
        if (idntfr === 'length' && typeof value === 'string' && i === identifiers.length - 1) {
            value = value.length;
            return true;
        }
        if (!util.isObj(value)) {
            value = undefined;
            return true;
        }
        value = value[idntfr];
        return value === undefined;
    });
    return value;
}
/**
 * Returns the value of an inline key based on a key path
 * @param {object} source
 * @param {string|array} keyPath
 */
Returns the value of an inline key based on a key path
@param {object} source
@param {string|array} keyPath
Returns the value of an inline key based on a key path @param { object } source @param { string|array } keyPath
function evaluateKeyPathOnValue(value, keyPath, multiEntry) {
    if (Array.isArray(keyPath)) {
        var _ret = function () {
            var arrayValue = [];
            return {
                v: keyPath.some(function (kpPart) {
                    kpPart = util.isObj(kpPart) ? kpPart.toString() : kpPart;
                    var key = extractKeyFromValueUsingKeyPath(value, kpPart, multiEntry);
                    try {
                        key = convertValueToKey(key);
                    } catch (err) {
                        return true;
                    }
                    arrayValue.push(key);
                }, []) ? undefined : arrayValue
            };
        }();
        if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === "object") return _ret.v;
    }
    if (keyPath === '') {
        return value;
    }
    var identifiers = keyPath.split('.');
    identifiers.some(function (idntfr, i) {
        if (idntfr === 'length' && typeof value === 'string' && i === identifiers.length - 1) {
            value = value.length;
            return true;
        }
        if (!util.isObj(value)) {
            value = undefined;
            return true;
        }
        value = value[idntfr];
        return value === undefined;
    });
    return value;
}
function evaluateKeyPathOnValue ( value , keyPath , multiEntry ) { if ( Array . isArray ( keyPath ) ) { var _ret = function ( ) { var arrayValue = [ ] ; return { v : keyPath . some ( function ( kpPart ) { kpPart = util . isObj ( kpPart ) ? kpPart . toString ( ) : kpPart ; var key = extractKeyFromValueUsingKeyPath ( value , kpPart , multiEntry ) ; try { key = convertValueToKey ( key ) ; } catch ( err ) { return true ; } arrayValue . push ( key ) ; } , [ ] ) ? undefined : arrayValue } ; } ( ) ; if ( ( typeof _ret === 'undefined' ? 'undefined' : _typeof ( _ret ) ) === "object" ) return _ret . v ; } if ( keyPath === '' ) { return value ; } var identifiers = keyPath . split ( '.' ) ; identifiers . some ( function ( idntfr , i ) { if ( idntfr === 'length' && typeof value === 'string' && i === identifiers . length - 1 ) { value = value . length ; return true ; } if ( ! util . isObj ( value ) ) { value = undefined ; return true ; } value = value [ idntfr ] ; return value === undefined ; } ) ; return value ; }
Returns the value of an inline key based on a key path
 @param {object} source
 @param {string|array} keyPath
Returns the value of an inline key based on a key path @param { object } source @param { string|array } keyPath
// If W3C tests are accurate, it appears sequence<DOMString> implies `toString()` // See also https://heycam.github.io/webidl/#idl-DOMString // and http://stackoverflow.com/questions/38164752/should-a-call-to-db-close-within-upgradeneeded-inevitably-prevent-onsuccess