Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


npm version Build Status

A module for Draco on the web, written in Typescript. Learn more about Draco at

Note that we use Emscripten to compile the Clingo constraint solver to WebAssembly so it runs inside your browser.


Install with yarn add draco-vis. See it in action on Observable at


Draco-Vis exports the Draco-Core API. In addition, it exposes the Draco object.

new Draco (updateStatus?: (text: string) => void, url?: string)

Constructs a Draco object. updateStatus is a callback used to log module status updates, defaulting to console.log. url may point to the base path of the hosting server, where '/clingo.js' from the package wasmclingo should rest, defaulting to the unpkg url of wasmclingo (you may want to specify your own server if speed is of priority).

draco.init (): Promise

Initializes Draco's solver, returning a Promise that will resolve once initialization completes.

draco.solve (program: string, options?: Option): SolutionSet

Solves the given Draco ASP program. Returns a SolutionSet if satisfiable.

draco.prepareData (data: any[])

Ingests the given data (a list of dictionaries), automatically parsing it for fields and datatypes, as well as various statistics.

draco.getSchema (): Schema

Returns the data Schema of this (will be null if prepareData has not yet been called).

draco.updateAsp (aspSet: {[s: string]: string})

Updates the constraints / programs of this.

draco.getConstraintSet (): ConstraintSet

Returns the ConstraintSet backing this.

Run locally

Run yarn to install dependencies. Then run yarn start.

Run yarn test to test the module.

Run yarn format to format the code.