Skip to main content
Module

x/sqlite/CONTRIBUTING.md

Deno SQLite module
Go to Latest
File

Contribute to SQLite for Deno

Note: this is a draft

Thank you for considering to contribute to the SQLite for Deno module! Below are a few guidelines on how to contribute.

Prerequisites

To work on the JavaScript/ TypeScript wrapper module, all you need is a deno runtime.

To change the compiled SQLite WASM binary, you will require to download the WASI SDK. This process should function fully automatically for most users.

To install build dependencies go to the build folder (cd build), then run make setup.

To compile the binary run make release (or make debug for a debug build). If you changed any build flags of SQLite, also run make amalgamation, before building.

If you are interested in more details regarding the compilation setup, also see this blog post.

Code Style, Review, and Dependencies

This project uses the deno fmt code style.

This project uses no external dependencies (with the exception of a copy of the SQLite C library).

For testing purposes, Deno standard library modules may be used.

Documentation

Any user-facing interfaces should be documented. To document such interfaces, include a JSDoc comment, which should be formatted as follows:

/**
 * A short but complete description, formatted
 * as markdown.
 */
functionName(arg1, arg2) {
  // ...
}

Comments with this format will be automatically parsed by deno doc.

These comments should not include examples unless they are essential to illustrating an important point.

Tests and Benchmarks

Any important functionality should be tested. Tests are in the test.ts file. Changes will not be merged unless all tests pass.

Benchmarks are in the bench.ts file.

Technical Direction

The goal of this module is to provide a simple and predictable interface to SQLite. The interface should feel like a JavaScript library, but also immediately make sense to someone who knows the SQLite C/C++ interface. Features and interfaces should generally be orthogonal.

This is a low-level library, which provides access to running SQL queries and retrieving the results of these queries. This library will only wrap SQLite C API functions, but never try to provide a higher level interface to the database than plain SQL. It is meant to serve as a building block for constructing higher level interfaces, or for people who need an easy way to execute SQL queries on their SQLite database.

The library should be easy to use and behave as any regular JavaScript library would in Deno. This means, it should only need the required permissions (e.g. if only in-memory databases are used, no permissions should be necessary. If a database is opened in read-only mode, --allow-read should be sufficient).

License

By making contributions, you agree that anything you submit will be distributed under the projects license (see LICENSE).