
ql.io (GitHub: ql-io / ql.io, License: Apache 2.0) from eBay is a “declarative, evented, data-retrieval and aggregation gateway for HTTP APIs”. It has a DSL inspired by JSON and SQL for declaring API calls and their interdependencies.
The code itself is built on Node, and is comprised of several packages:
- ql.io-engine: This is the core ql.io engine
- ql.io-ecv: Checks servers are responding with JSON
- ql.io-mon: Statistics on the ql.io runtime
- ql.io-uri-template: A small URI template processor
- ql.io-app: An app template for building sites using ql.io
- ql.io-compiler: A PEG.js-based parser with a compiler (ql.peg contains the main grammar)
- ql.io-console: Provides the HTTP interface for ql.io
- ql.io-mutable-uri A utility for manipulating URIs
This is a diverse and complicated project, employing some interesting techniques. I’m particularly intrigued by the use of PEGs (parsing expression grammar) over context-free grammar, as Jison seems like the easiest way to write parsers in JavaScript at the moment. PEG.js (GitHub: dmajda / pegjs, npm: pegjs) is available for Node and browsers.
Announcing ql.io at the eBay Tech Blog has more details on the design and architecture of the project.