ElectricSQL is a local-first SQL system. It provides active-active cloud sync for embedded SQLite databases and a reactive programming model to bind components to live database queries.
The ElectricSQL Typescript Client is the main ElectricSQL client library for developing node, web and JavaScript-based mobile applications. It's designed to work with any SQLite driver or bindings, with convienience functions to integrate with the most popular ones, including the primary drivers for Cordova, Expo, React Native, SQL.js (with absurd-sql), Node.js (via better-sqlite3), TypeORM and Prisma.
Install
Using yarn:
yarn add electric-sql
Or using npm:
npm install --save electric-sql
Usage
The general principle is that you instantiate and use your SQLite driver as normal and call electrify when opening a new database connection. For example using react-native-sqlite-storage:
import { electrify } from'electric-sql/react-native'// Import your SQLite driver.importSQLitefrom'react-native-sqlite-storage'SQLite.enablePromise(true)
// Open a database connection and electrify it.SQLite.openDatabase('example.db')
.then(db =>electrify(db))
.then(db => { // Use as normal, e.g.:
db.transaction(tx => tx.executeSql('SELECT 1'))
})
Browser
Electric uses SQL.js in the browser with absurd-sql for persistence. This runs in a web worker (which we also use to keep background replication off the main thread). As a result, the electrified db client provides an asynchronous version of a subset of the SQL.js driver interface.
First create a worker.js file that imports and starts an ElectricWorker process:
import { initElectricSqlJs } from'electric-sql/browser'// Start the background worker.const url = newURL('./worker.js', import.meta.url)
const worker = newWorker(url, {type: "module"})
// Electrify the SQL.js / absurd-sql machinery and then open// a persistent, named database.initElectricSqlJs(worker, {locateFile: file =>`/${file}`})
.then(SQL =>SQL.openDatabase('example.db'))
.then(db => db.exec('SELECT 1'))
This gives you persistent, local-first SQL with active-active replication
in your web browser 🤯. Use the db client as normal, with the proviso that
the methods are now async (they return promises rather than direct values).
Note that the path to the worker.js must be relative and the worker.js file
must survive any build / bundling process. This is handled automatically by
most bundlers, including Esbuild (as of #2508), Rollup and Webpack.
Once electrified, you can bind database queries to your reactive components, so they automatically re-query and (if necessary) re-render when the underlying data changes.
For example, again using React Native as an example, configure an electrified database provider at the root of your component hierarchy:
ElectricSQL TypeScript client for developing local-first SQL apps. Supports JavaScript based mobile, web and edge applications.
The npm package @electric-sql/console receives a total of 0 weekly downloads. As such, @electric-sql/console popularity was classified as not popular.
We found that @electric-sql/console demonstrated a not healthy version release cadence and project activity because the last version was released a year ago.It has 2 open source maintainers collaborating on the project.
Package last updated on 17 Oct 2022
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
A malicious npm campaign is targeting Ethereum developers by impersonating Hardhat plugins and the Nomic Foundation, stealing sensitive data like private keys.