|
|
||
|---|---|---|
| .. | ||
| docs | ||
| src | ||
| .dockerignore | ||
| .eslintrc.js | ||
| babel.config.js | ||
| jest.config.js | ||
| jest.setup.js | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
| tslint.json | ||
| yarn.lock | ||
LSIF code intelligence
This project is an early adopter of Microsoft's LSIF standard. LSIF (Language Server Index Format) is a format used to store the results of language server queries that are computed ahead-of-time. We uses this format to provide jump-to-definition, find-reference, and hover docstring functionality.
LSIF dumps are generated by running an LSIF indexer in a build or continuous integration environment. The dump is uploaded to a Sourcegraph instance via Sourcegraph CLI. An LSIF server, proxied by the frontend for auth, answers relevant LSP queries to provide fast and precise code intelligence.
Architecture
This project is split into two parts, both written in TypeScript. These parts are deployable independently, but for now they run in the same docker container. The HTTP server receives LSIF uploads and answers LSP queries by looking at relevant SQLite databases on-disk. The worker dequeues unconverted LSIF uploads from Postgres and converts them into SQLite databases that can be queried by the server.
Entrypoint
The dockerfile in this directory builds the application so that the output is self-contained. The docker image which is run in a production environment is produced later by either ./cmd/lsif-server or by ./cmd/server with the rest of the instance.
Documentation
- Usage documentation is provided on Sourcegraph.com.
- API endpoint documentation is provided in api.md.
- Database configuration and migrations are described in database.md.
- Data models are described in datamodel.md and datamodel.pg.md.