UNPKG

zer

Version:

Generate Gremlin queries by chaining JavaScript function calls

91 lines (71 loc) 1.69 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.Chain = exports.Arguments = exports.ChainMember = undefined; exports.createChain = createChain; var _lodash = require('lodash'); var _lodash2 = _interopRequireDefault(_lodash); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } class ChainMember {} exports.ChainMember = ChainMember; class ChainStart extends ChainMember { constructor(name) { super(); this.name = name; this.type = 'CHAIN_START'; } } class PropertyAccessor extends ChainMember { constructor() { super(); this.type = 'PROPERTY_ACCESSOR'; } } class Step extends ChainMember { constructor(name) { super(); this.name = name; this.type = 'STEP'; } } class Arguments extends ChainMember { constructor(params = []) { super(); this.params = params; this.type = 'ARGUMENTS'; } } exports.Arguments = Arguments; class Chain { constructor() { this.members = []; } startWith(identifierName) { this.members.push(new ChainStart(identifierName)); return this; } addStep(name) { this.members.push(new Step(name)); return this; } addArguments(...args) { this.members.push(new Arguments(args)); return this; } append(chain) { this.members = [...this.members, ...chain.members]; return this; } composeWith(chain) { this.members = [...this.members, new PropertyAccessor(), ...chain.members]; return this; } __repr__() { return this.members; } } exports.Chain = Chain; // TODO: missing name argument here? function createChain() { return new Chain(); }