bblfsh
v0.1.2
Published
javascript bblfsh client
Downloads
22
Readme
Bblfsh javascript client
- use web grpc to call bblfsh
- use libuast compiled to WASM for uast filtering
Installation
yarn add bblfsh
The WASM module from node_modules/dist/libuast.wasm
must be available as /libuast.wasm
in a browser.
It's possible to change the public path to the file like this:
const libuast = initLibuast({
locateFile(path) {
if(path.endsWith('.wasm')) {
return '/some/other/path/libuast.wasm';
}
return path;
}
});
Usage
Client
import Client from 'bblfsh';
const client = new Client('<web-grpc-address>');
client.parse(sourceCode, filename, language)
.then(r => /* gRPC response */)
.catch(err => /* or error */);
Libuast
import { protoToMap, initLibuast } from 'bblfsh';
const libuast = initLibuast();
const uastMapping = protoToMap(uast);
libuast.filter(nodeId, uastMapping, xpathQuery)
.then(ids => /* list of nodes */)
.catch(err => /* or error */);
Full API documentation available here: API.md.
Run examples locally
docker-compose up
The example app will be available on http://127.0.0.1:8444
Please check Dockerfile in the app example directory to run it without docker
Backend dependencies without docker
- run bblfsh server on 9432 port
- run grpc proxy
grpcwebproxy --backend_addr=127.0.0.1:9432 --run_tls_server=false
Development:
Requirements:
- nodejs + yarn
- python2.7
- build tools: cmake autoconf libtool automake pkg-config make
- emscripten (v1.38.8+)
- protoc
Commands
yarn build
- build everythingyarn build:proto
- generate js from protobuf filesyarn build:libs
- download & build C dependencies for libuastyarn build:wasm
- generate WASM & js helper for libuastyarn build:bundle
- generate library as a bundle with all dependencies included