gremlin-secure
Version:
Private version of the gremlin websocket client module: https://github.com/jbmusso/gremlin-javascript. This private version supports SSL and SASL authentication, and is undergoing a PR with the main module. This package is created as a private, temporary
68 lines (55 loc) • 5.61 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
exports.extractFunctionBody = extractFunctionBody;
exports.buildQueryFromSignature = buildQueryFromSignature;
var _lodash = require('lodash');
var _lodash2 = _interopRequireDefault(_lodash);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Get the inner function body from a function.toString() representation
*
* @param {Function}
* @return {String}
*/
function extractFunctionBody(fn) {
var body = fn.toString();
var trimmedBody = body.substring(body.indexOf('{') + 1, body.lastIndexOf('}'));
return trimmedBody;
};
/**
* Given optional and polymorphic arguments, return an object with a raw
* 'gremlin' string and optional 'bindings' object.
* When supplying a query object as first parameter, any bindings supplied
* as the last parameter will be shallow-merged.
*
* @param {String|Object|Function} rawScript
* @param {Object} rawBindings
* @return {Object}: { gremlin<String>, bindings<Object> }
*/
function buildQueryFromSignature() {
var rawScript = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
var rawBindings = arguments[1];
if (typeof rawScript === 'function') {
return {
gremlin: extractFunctionBody(rawScript),
bindings: rawBindings
};
}
var _rawScript$gremlin = rawScript.gremlin,
gremlin = _rawScript$gremlin === undefined ? rawScript : _rawScript$gremlin,
_rawScript$bindings = rawScript.bindings,
bindings = _rawScript$bindings === undefined ? rawBindings : _rawScript$bindings;
return {
gremlin: gremlin,
// Remap 'undefined' bindings as 'null' values that would otherwise
// result in missing/unbound variables in the Gremlin script execution
// context.
bindings: _lodash2.default.mapValues(_extends({}, bindings, rawBindings), function (value) {
return _lodash2.default.isUndefined(value) ? null : value;
})
};
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlscy5qcyJdLCJuYW1lcyI6WyJleHRyYWN0RnVuY3Rpb25Cb2R5IiwiYnVpbGRRdWVyeUZyb21TaWduYXR1cmUiLCJmbiIsImJvZHkiLCJ0b1N0cmluZyIsInRyaW1tZWRCb2R5Iiwic3Vic3RyaW5nIiwiaW5kZXhPZiIsImxhc3RJbmRleE9mIiwicmF3U2NyaXB0IiwicmF3QmluZGluZ3MiLCJncmVtbGluIiwiYmluZGluZ3MiLCJtYXBWYWx1ZXMiLCJ2YWx1ZSIsImlzVW5kZWZpbmVkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztRQVFnQkEsbUIsR0FBQUEsbUI7UUFpQkFDLHVCLEdBQUFBLHVCOztBQXpCaEI7Ozs7OztBQUVBOzs7Ozs7QUFNTyxTQUFTRCxtQkFBVCxDQUE2QkUsRUFBN0IsRUFBaUM7QUFDdEMsTUFBTUMsT0FBT0QsR0FBR0UsUUFBSCxFQUFiO0FBQ0EsTUFBTUMsY0FBY0YsS0FBS0csU0FBTCxDQUFlSCxLQUFLSSxPQUFMLENBQWEsR0FBYixJQUFvQixDQUFuQyxFQUFzQ0osS0FBS0ssV0FBTCxDQUFpQixHQUFqQixDQUF0QyxDQUFwQjs7QUFFQSxTQUFPSCxXQUFQO0FBQ0Q7O0FBRUQ7Ozs7Ozs7Ozs7QUFVTyxTQUFTSix1QkFBVCxHQUE4RDtBQUFBLE1BQTdCUSxTQUE2Qix1RUFBakIsRUFBaUI7QUFBQSxNQUFiQyxXQUFhOztBQUNuRSxNQUFJLE9BQU9ELFNBQVAsS0FBcUIsVUFBekIsRUFBcUM7QUFDbkMsV0FBTztBQUNMRSxlQUFTWCxvQkFBb0JTLFNBQXBCLENBREo7QUFFTEcsZ0JBQVVGO0FBRkwsS0FBUDtBQUlEOztBQU5rRSwyQkFXL0RELFNBWCtELENBU2pFRSxPQVRpRTtBQUFBLE1BU2pFQSxPQVRpRSxzQ0FTdkRGLFNBVHVEO0FBQUEsNEJBVy9EQSxTQVgrRCxDQVVqRUcsUUFWaUU7QUFBQSxNQVVqRUEsUUFWaUUsdUNBVXRERixXQVZzRDs7O0FBYW5FLFNBQU87QUFDTEMsb0JBREs7QUFFTDtBQUNBO0FBQ0E7QUFDQUMsY0FBVSxpQkFBRUMsU0FBRixjQUFpQkQsUUFBakIsRUFBOEJGLFdBQTlCLEdBQTZDLFVBQUNJLEtBQUQ7QUFBQSxhQUFXLGlCQUFFQyxXQUFGLENBQWNELEtBQWQsSUFBdUIsSUFBdkIsR0FBOEJBLEtBQXpDO0FBQUEsS0FBN0M7QUFMTCxHQUFQO0FBT0QiLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG4vKipcbiAqIEdldCB0aGUgaW5uZXIgZnVuY3Rpb24gYm9keSBmcm9tIGEgZnVuY3Rpb24udG9TdHJpbmcoKSByZXByZXNlbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259XG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0RnVuY3Rpb25Cb2R5KGZuKSB7XG4gIGNvbnN0IGJvZHkgPSBmbi50b1N0cmluZygpO1xuICBjb25zdCB0cmltbWVkQm9keSA9IGJvZHkuc3Vic3RyaW5nKGJvZHkuaW5kZXhPZigneycpICsgMSwgYm9keS5sYXN0SW5kZXhPZignfScpKTtcblxuICByZXR1cm4gdHJpbW1lZEJvZHk7XG59O1xuXG4vKipcbiAqIEdpdmVuIG9wdGlvbmFsIGFuZCBwb2x5bW9ycGhpYyBhcmd1bWVudHMsIHJldHVybiBhbiBvYmplY3Qgd2l0aCBhIHJhd1xuICogJ2dyZW1saW4nIHN0cmluZyBhbmQgb3B0aW9uYWwgJ2JpbmRpbmdzJyBvYmplY3QuXG4gKiBXaGVuIHN1cHBseWluZyBhIHF1ZXJ5IG9iamVjdCBhcyBmaXJzdCBwYXJhbWV0ZXIsIGFueSBiaW5kaW5ncyBzdXBwbGllZFxuICogYXMgdGhlIGxhc3QgcGFyYW1ldGVyIHdpbGwgYmUgc2hhbGxvdy1tZXJnZWQuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd8T2JqZWN0fEZ1bmN0aW9ufSByYXdTY3JpcHRcbiAqIEBwYXJhbSB7T2JqZWN0fSByYXdCaW5kaW5nc1xuICogQHJldHVybiB7T2JqZWN0fTogeyBncmVtbGluPFN0cmluZz4sIGJpbmRpbmdzPE9iamVjdD4gfVxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRRdWVyeUZyb21TaWduYXR1cmUocmF3U2NyaXB0ID0gJycsIHJhd0JpbmRpbmdzKSB7XG4gIGlmICh0eXBlb2YgcmF3U2NyaXB0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGdyZW1saW46IGV4dHJhY3RGdW5jdGlvbkJvZHkocmF3U2NyaXB0KSxcbiAgICAgIGJpbmRpbmdzOiByYXdCaW5kaW5nc1xuICAgIH07XG4gIH1cblxuICBjb25zdCB7XG4gICAgZ3JlbWxpbiA9IHJhd1NjcmlwdCxcbiAgICBiaW5kaW5ncyA9IHJhd0JpbmRpbmdzXG4gIH0gPSByYXdTY3JpcHQ7XG5cbiAgcmV0dXJuIHtcbiAgICBncmVtbGluLFxuICAgIC8vIFJlbWFwICd1bmRlZmluZWQnIGJpbmRpbmdzIGFzICdudWxsJyB2YWx1ZXMgdGhhdCB3b3VsZCBvdGhlcndpc2VcbiAgICAvLyByZXN1bHQgaW4gbWlzc2luZy91bmJvdW5kIHZhcmlhYmxlcyBpbiB0aGUgR3JlbWxpbiBzY3JpcHQgZXhlY3V0aW9uXG4gICAgLy8gY29udGV4dC5cbiAgICBiaW5kaW5nczogXy5tYXBWYWx1ZXMoeyAuLi5iaW5kaW5ncywgLi4ucmF3QmluZGluZ3MgfSwgKHZhbHVlKSA9PiBfLmlzVW5kZWZpbmVkKHZhbHVlKSA/IG51bGwgOiB2YWx1ZSlcbiAgfTtcbn1cbiJdfQ==