SkillAgentSearch skills...

Zer

Zer helps you create and serialize generic JavaScript chains to String representations of any languages by leveraging ES2015 Proxy objects.

Install / Use

/learn @jbmusso/Zer
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

zer

Zer helps you serialize any JavaScript chains to String representations of any languages by leveraging ES2015 Proxy objects.

Installation

npm install zer

Usage

Zer is currently useful for generating Gremlin-Groovy graph database queries.


import { gremlin, renderChain } from 'zer';

const { g, out, has } = gremlin;

const chain = g.V().has('name', 'Alice').repeat(out('knows')).until(has('name', 'Bob'));
const rendered_chain = renderChain(chain);

console.log(rendered_chain);
/*
 {
    query: 'g.V().has(p0, p1).repeat(out(p2)).until(has(p3, p4))',
    params: {
        p0: 'name',
        p1: 'Alice',
        p2: 'knows',
        p3: 'name',
        p4: 'Bob'
    }
 }
*/

console.log(chain.__repr__());
/*
 [
     ChainStart { name: 'g', type: 'CHAIN_START' },
     Step { name: 'V', type: 'STEP' },
     Arguments { params: [], type: 'ARGUMENTS' },
     Step { name: 'has', type: 'STEP' },
     Arguments { params: [ 'name', 'Alice' ], type: 'ARGUMENTS' },
     Step { name: 'repeat', type: 'STEP' },
     Arguments {
       params: [
         {
           query: 'out(p0)',
           params: {
             p0: 'knows'
           }
         }
       ],
       type: 'ARGUMENTS'
     },
     Step {
       name: 'until',
       type: 'STEP'
     },
     Arguments {
       params: [
         {
           query: 'has(p0, p1)',
           params: {
             p0: 'name',
             p1: 'Bob'
           }
         }
       ],
       type: 'ARGUMENTS'
     }
  ]
*/

Argument escaping

Zer allows you to output Objects, not just Strings. This is especially useful when you wish to escape some arguments from your chain, such as when creating a DSL for a database client (SQL, Gremlin...).

const chain = g.V().has('name', 'Alice').repeat(out('knows')).until(has('name', 'Bob'));

console.log(chain.__repr__())

/*
 { query: 'g.V().has(p0, p1).has(p2, p3).repeat(out(p4, p5))',
  params:
   {
     p0: 'name',
     p1: 'Alice',
     p2: 'age',
     p3: 30,
     p4: 'firstname',
     p5: 'Bob'
   }
*/
View on GitHub
GitHub Stars9
CategoryData
Updated5y ago
Forks0

Languages

JavaScript

Security Score

75/100

Audited on Oct 31, 2020

No findings